📄 dw.h
字号:
/* macro definitions */
void DWENTRY DWMacStartFile( dw_client, dw_linenum __line,
char const *__file_name );
void DWENTRY DWMacEndFile( dw_client );
dw_macro DWENTRY DWMacDef( dw_client, dw_linenum __line,
char const *__macro_name );
void DWENTRY DWMacParam( dw_client, dw_macro __macro,
char const *__parm_name );
void DWENTRY DWMacFini( dw_client, dw_macro __macro,
char const *__definition );
void DWENTRY DWMacUnDef( dw_client, dw_linenum __line,
char const *__macro_name );
void DWENTRY DWMacUse( dw_client, dw_linenum __line,
char const *__macro_name );
/* file/line number management */
extern void DWInitDebugLine(
dw_client cli,
dw_cu_info *cu );
extern void DWFiniDebugLine(
dw_client cli );
void DWENTRY DWSetFile( dw_client, char const *__fname );
/* line number information */
enum {
DW_LN_DEFAULT = 0x00,
DW_LN_STMT = 0x01,
DW_LN_BLK = 0x02
};
void DWENTRY DWLineNum( dw_client, uint __info,
dw_linenum __line_num, dw_column __column,
dw_addr_offset __addr );
void DWLineAddr( dw_client cli, dw_sym_handle sym, dw_addr_offset addr );
void DWLineSeg( dw_client cli, dw_sym_handle sym );
void DWENTRY DWDeclFile( dw_client, char const *__fname );
void DWENTRY DWDeclPos( dw_client, dw_linenum, dw_column );
unsigned DWENTRY DWLineGen( dw_linenum_delta, dw_addr_delta, char * );
/* reference declarations */
void DWENTRY DWReference( dw_client, dw_linenum,
dw_column, dw_handle );
/* Location expressions */
dw_loc_id DWENTRY DWLocInit( dw_client );
dw_loc_label DWENTRY DWLocNewLabel( dw_client, dw_loc_id __loc );
void DWENTRY DWLocSetLabel( dw_client, dw_loc_id __loc,
dw_loc_label __label );
void DWENTRY DWLocReg( dw_client, dw_loc_id __loc,
uint __reg );
void DWENTRY DWLocPiece( dw_client, dw_loc_id __loc,
uint __size );
void DWENTRY DWLocStatic( dw_client, dw_loc_id __loc,
dw_sym_handle __sym );
void DWENTRY DWLocSym( dw_client, dw_loc_id,
dw_sym_handle, dw_relocs );
void DWENTRY DWLocSegment( dw_client, dw_loc_id __loc,
dw_sym_handle __sym );
void DWENTRY DWLocConstU( dw_client, dw_loc_id __loc,
dw_uconst __value );
void DWENTRY DWLocConstS( dw_client, dw_loc_id __loc,
dw_sconst __value );
void DWENTRY DWLocOp0( dw_client, dw_loc_id __loc,
uint __op );
void DWENTRY DWLocOp( dw_client, dw_loc_id __loc,
uint __op, ... );
dw_loc_handle DWENTRY DWLocFini( dw_client, dw_loc_id __loc );
/* Location Lists */
dw_list_id DWENTRY DWListInit( dw_client );
void DWENTRY DWListEntry( dw_client, dw_list_id __list,
dw_sym_handle __beg, dw_sym_handle __end,
dw_loc_handle __location_expr );
void DWENTRY DWListEntryOut(
dw_client cli,
dw_list_id id,
dw_sym_handle begin,
dw_sym_handle end,
dw_loc_handle loc );
dw_loc_handle DWENTRY DWListFini( dw_client, dw_list_id __list );
void DWENTRY DWLocTrash( dw_client, dw_loc_handle __loc );
/* debug info handle refs */
dw_handle DWENTRY DWHandle(
dw_client cli,
uint kind );
void DWENTRY DWHandleSet(
dw_client cli,
dw_handle set_hdl );
/* typing information */
dw_handle DWENTRY DWFundamental( dw_client, char const * __name,
unsigned __fund_idx, unsigned __size );
dw_handle DWENTRY DWModifier( dw_client, dw_handle __base_type,
uint __modifiers );
dw_handle DWENTRY DWTypedef( dw_client, dw_handle __base_type,
char const *__name, dw_addr_offset __scope,
uint __flags );
dw_handle DWENTRY DWPointer( dw_client, dw_handle __base_type,
uint __flags );
dw_handle DWENTRY DWBasedPointer( dw_client cli,
dw_handle base_type,
dw_loc_handle seg,
uint flags );
dw_handle DWENTRY DWString( dw_client, dw_loc_handle __string_length,
dw_size_t __byte_size, char const *__name,
dw_addr_offset __scope, uint __flags );
dw_handle DWENTRY DWMemberPointer( dw_client,
dw_handle __containing_struct,
dw_loc_handle __use_location, dw_handle __base_type,
char const *__name, unsigned __flags );
/* array types */
typedef struct {
dw_handle index_type;
dw_uconst lo_data;
dw_uconst hi_data;
} dw_dim_info;
typedef struct {
dw_handle index_type;
dw_handle lo_data;
dw_handle count_data;
} dw_vardim_info;
dw_handle DWENTRY DWSimpleArray(
dw_client cli,
dw_handle elt_type,
int elt_count );
dw_handle DWENTRY DWBeginArray( dw_client, dw_handle __elt_type,
uint __stride_size, char const *__name,
dw_addr_offset __scope, uint __flags );
void DWENTRY DWArrayDimension( dw_client, const dw_dim_info *__info);
void DWENTRY DWArrayVarDim( dw_client, const dw_vardim_info * );
void DWENTRY DWEndArray( dw_client );
/* structure types */
typedef enum { // Kind of Structure
DW_ST_NONE,
DW_ST_CLASS,
DW_ST_STRUCT,
DW_ST_UNION,
}dw_st;
dw_handle DWENTRY DWStruct( dw_client, uint __kind );
void DWENTRY DWBeginStruct( dw_client, dw_handle __struct_hdl,
dw_size_t __size, char const *__name,
dw_addr_offset __scope, uint __flags );
void DWENTRY DWAddFriend( dw_client, dw_handle __friend );
dw_handle DWENTRY DWAddInheritance( dw_client, dw_handle __ancestor,
dw_loc_handle __loc, uint __flags );
dw_handle DWENTRY DWAddField( dw_client, dw_handle __field_hdl,
dw_loc_handle __loc, char const *__name,
uint __flags );
dw_handle DWENTRY DWAddBitField( dw_client, dw_handle __field_hdl,
dw_loc_handle __loc, dw_size_t __byte_size,
uint __bit_offset, uint __bit_size,
char const *__name, uint __flags );
void DWENTRY DWEndStruct( dw_client );
/* enumeration types */
dw_handle DWENTRY DWBeginEnumeration( dw_client, dw_size_t __byte_size,
char const *__name, dw_addr_offset __scope,
uint __flags );
void DWENTRY DWAddConstant( dw_client, dw_uconst __value,
char const *__name );
void DWENTRY DWEndEnumeration( dw_client );
/* subroutine types */
dw_handle DWENTRY DWBeginSubroutineType( dw_client,
dw_handle __return_type, char const *__name,
dw_addr_offset __scope, uint __flags );
dw_handle DWENTRY DWAddParmToSubroutineType( dw_client,
dw_handle __parm_type, dw_loc_handle __loc,
dw_loc_handle __seg, char const *__name );
dw_handle DWENTRY DWAddEllipsisToSubroutineType( dw_client );
void DWENTRY DWEndSubroutineType( dw_client );
/* namespace */
dw_handle DWENTRY DWBeginNameSpace(
dw_client cli,
const char * name );
void DWENTRY DWEndNameSpace(
dw_client cli );
/* lexical blocks */
dw_handle DWENTRY DWBeginLexicalBlock( dw_client,
dw_loc_handle __aseg, char const *__name );
void DWENTRY DWEndLexicalBlock( dw_client );
/* common blocks */
dw_handle DWENTRY DWBeginCommonBlock( dw_client, dw_loc_handle __loc,
dw_loc_handle __aseg, char const *__name,
unsigned __flags );
void DWENTRY DWEndCommonBlock( dw_client );
dw_handle DWENTRY DWIncludeCommonBlock( dw_client,
dw_handle __common_block );
/* subroutines */
dw_handle DWENTRY DWBeginInlineSubroutine( dw_client,
dw_handle __subr, dw_loc_handle __ret_addr_loc,
dw_loc_handle __aseg );
dw_handle DWENTRY DWBeginSubroutine( dw_client, uint call_type,
dw_handle __return_type,
dw_loc_handle __return_addr_loc,
dw_loc_handle __frame_base_loc,
dw_loc_handle __structure_loc,
dw_handle __member_hdl, dw_loc_handle __aseg,
char const * __name, dw_addr_offset __start_scope,
uint __flags );
dw_handle DWENTRY DWBeginEntryPoint(
dw_client cli,
dw_handle return_type,
dw_loc_handle return_addr_loc,
dw_loc_handle segment,
char const * name,
dw_addr_offset start_scope,
uint flags );
dw_handle DWENTRY DWBeginMemFuncDecl(
dw_client cli,
dw_handle return_type,
dw_loc_handle segment,
dw_loc_handle loc,
char const * name,
uint flags );
dw_handle DWENTRY DWBeginVirtMemFuncDecl(
dw_client cli,
dw_handle return_type,
dw_loc_handle vtable_loc,
char const * name,
uint flags );
void DWENTRY DWEndSubroutine( dw_client );
enum { // Kind of format for default value
DW_DEFAULT_NONE,
DW_DEFAULT_FUNCTION,
DW_DEFAULT_STRING,
DW_DEFAULT_BLOCK
};
dw_handle DWENTRY DWFormalParameter( dw_client, dw_handle __parm_type,
dw_loc_handle __parm_loc, dw_loc_handle __aseg,
char const *__name, uint __default_value_type,
... );
dw_handle DWENTRY DWEllipsis( dw_client );
dw_handle DWENTRY DWLabel( dw_client, dw_loc_handle __aseg,
char const *__name, dw_addr_offset __start_scope );
dw_handle DWENTRY DWVariable( dw_client, dw_handle __type,
dw_loc_handle __loc, dw_handle __member_of,
dw_loc_handle __aseg, char const *__name,
dw_addr_offset __start_scope, uint __flags );
dw_handle DWENTRY DWConstant( dw_client, dw_handle __type,
const void *__value, dw_size_t __len,
dw_handle __member_of, char const * __name,
dw_addr_offset __start_scope, uint __flags );
/* name list */
dw_handle DWENTRY DWNameListBegin( dw_client cli, char const *name );
void DWENTRY DWNameListItem( dw_client cli, dw_handle ref );
void DWENTRY DWEndNameList( dw_client cli );
/* address ranges */
void DWENTRY DWAddress( dw_client, uint_32 );
/* public names */
void DWENTRY DWPubname( dw_client, dw_handle __hdl,
char const *__name );
/* util used for PCH */
uint_32 DWENTRY DWDebugRefOffset( dw_client cli, dw_handle hdl );
dw_handle DWENTRY DWRefPCH( dw_client cli, uint_32 ref );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -