| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #ifndef BLITZ_DEBUG_H
- #define BLITZ_DEBUG_H
- #include "blitz_types.h"
- #ifdef __cplusplus
- extern "C"{
- #endif
- #ifndef NDEBUG
- #define bbassert( x ) if( !(x) ) bbCAssertEx()
- #else
- #define bbassert( x )
- #endif
- typedef struct BBDebugStm BBDebugStm;
- typedef struct BBDebugDecl BBDebugDecl;
- typedef struct BBDebugScope BBDebugScope;
- enum{
- BBDEBUGDECL_END=0,
- BBDEBUGDECL_CONST=1,
- BBDEBUGDECL_LOCAL=2,
- BBDEBUGDECL_FIELD=3,
- BBDEBUGDECL_GLOBAL=4,
- BBDEBUGDECL_VARPARAM=5,
- BBDEBUGDECL_TYPEMETHOD=6,
- BBDEBUGDECL_TYPEFUNCTION=7
- };
- struct BBDebugDecl{
- int kind;
- const char *name,*type_tag;
- union{
- BBString* const_value;
- int local_offset;
- int field_offset;
- void *global_address;
- };
- };
- enum{
- BBDEBUGSCOPE_FUNCTION=1,
- BBDEBUGSCOPE_USERTYPE=2,
- BBDEBUGSCOPE_LOCALBLOCK=3
- };
- struct BBDebugScope{
- int kind;
- const char *name;
- BBDebugDecl decls[1];
- };
- struct BBDebugStm{
- const char *source_file;
- int line_num,char_num;
- };
- extern void bbCAssertEx();
- extern void (*bbOnDebugStop)();
- extern void (*bbOnDebugLog)( BBString *msg );
- extern void (*bbOnDebugEnterStm)( BBDebugStm *stm );
- extern void (*bbOnDebugEnterScope)( BBDebugScope *scope,void *inst );
- extern void (*bbOnDebugLeaveScope)();
- extern void (*bbOnDebugPushExState)();
- extern void (*bbOnDebugPopExState)();
- extern void (*bbOnDebugUnhandledEx)( BBObject *ex );
- #ifdef __cplusplus
- }
- #endif
- #endif
|