Very close to a basic REPL now.
This commit is contained in:
parent
83537391a6
commit
4efe9eab87
23 changed files with 188 additions and 84 deletions
|
|
@ -11,9 +11,14 @@
|
|||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
#include "io/fopen.h"
|
||||
#include "io/io.h"
|
||||
#include "io/print.h"
|
||||
|
||||
int verbosity = 0;
|
||||
|
||||
|
||||
|
|
@ -45,14 +50,6 @@ void debug_print( wchar_t *message, int level, int indent ) {
|
|||
#endif
|
||||
}
|
||||
|
||||
void debug_print_object( struct pso_pointer object, int level, int indent ) {
|
||||
// TODO: not yet implemented
|
||||
}
|
||||
|
||||
void debug_dump_object( struct pso_pointer object, int level, int indent ) {
|
||||
// TODO: not yet implemented
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief print a 128 bit integer value to stderr, if `verbosity` matches `level`.
|
||||
*
|
||||
|
|
@ -133,5 +130,55 @@ void debug_printf( int level, int indent, wchar_t *format, ... ) {
|
|||
#endif
|
||||
}
|
||||
|
||||
// debug_dump_object, debug_print_binding, debug_print_exception, debug_print_object,
|
||||
// not yet implemented but probably will be.
|
||||
|
||||
/**
|
||||
* @brief print the object indicated by this `pointer` to stderr, if `verbosity`
|
||||
* matches `level`.
|
||||
*
|
||||
* `verbosity` is a set of flags, see debug_print.h; so you can
|
||||
* turn debugging on for only one part of the system.
|
||||
*/
|
||||
void debug_print_object( struct pso_pointer pointer, int level, int indent ) {
|
||||
#ifdef DEBUG
|
||||
if ( level & verbosity ) {
|
||||
URL_FILE *ustderr = file_to_url_file( stderr );
|
||||
fwide( stderr, 1 );
|
||||
in_print( pointer, ustderr );
|
||||
free( ustderr );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Like `dump_object`, q.v., but protected by the verbosity mechanism.
|
||||
*
|
||||
* `verbosity` is a set of flags, see debug_print.h; so you can
|
||||
* turn debugging on for only one part of the system.
|
||||
*/
|
||||
void debug_dump_object( struct pso_pointer pointer, int level, int indent ) {
|
||||
//#ifdef DEBUG
|
||||
// if ( level & verbosity ) {
|
||||
// URL_FILE *ustderr = file_to_url_file( stderr );
|
||||
// fwide( stderr, 1 );
|
||||
// dump_object( ustderr, pointer );
|
||||
// free( ustderr );
|
||||
// }
|
||||
//#endif
|
||||
}
|
||||
|
||||
///**
|
||||
// * Standardise printing of binding trace messages.
|
||||
// */
|
||||
//void debug_print_binding( struct cons_pointer key, struct cons_pointer val,
|
||||
// bool deep, int level, int indent ) {
|
||||
//#ifdef DEBUG
|
||||
// // wchar_t * depth = (deep ? L"Deep" : L"Shallow");
|
||||
//
|
||||
// debug_print( ( deep ? L"Deep" : L"Shallow" ), level, indent );
|
||||
// debug_print( L" binding `", level, indent );
|
||||
// debug_print_object( key, level, indent );
|
||||
// debug_print( L"` to `", level, indent );
|
||||
// debug_print_object( val, level, indent );
|
||||
// debug_print( L"`\n", level, indent );
|
||||
//#endif
|
||||
//}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue