00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef dwarf_DST_INCLUDED
00041 #define dwarf_DST_INCLUDED
00042
00043
00044 #ifdef _KEEP_RCS_ID
00045 static char *dwarf_DST_rcs_id = "$Source: common/com/SCCS/s.dwarf_DST.h $ $Revision: 1.15 $";
00046 #endif
00047
00048
00049
00050
00051
00052
00053
00054
00055 #define dwarf_DST_version 0x0
00056
00057
00058 #include "dwarf_stuff.h"
00059 #include "dwarf_DST_mem.h"
00060 #include "symtab_idx.h"
00061 #include "srcpos.h"
00062
00063 #ifdef __cplusplus
00064 extern "C" {
00065 #endif
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 #define DST_no_flag 0x00000000
00076 #define DST_flag_external 0x00000001
00077 #define DST_flag_declaration 0x00000002
00078 #define DST_flag_prototyped 0x00000008
00079 #define DST_flag_memdef 0x00000010
00080 #define DST_flag_const 0x00000020
00081 #define DST_flag_automatic 0x00000040
00082 #define DST_flag_optional_parm 0x00000080
00083 #define DST_flag_variable_parm 0x00000100
00084 #define DST_flag_bitfield 0x00000200
00085 #define DST_flag_comm 0x00000400
00086 #define DST_flag_lb_cval 0x00000800
00087 #define DST_flag_ub_cval 0x00001000
00088 #define DST_flag_cval 0x00002000
00089 #define DST_flag_artificial 0x00004000
00090 #define DST_flag_deref 0x00008000
00091 #define DST_flag_base_deref 0x00010000
00092 #define DST_flag_count 0x00020000
00093 #define DST_flag_stride_1byte 0x00040000
00094 #define DST_flag_stride_2byte 0x00080000
00095 #define DST_flag_f90_pointer 0x00100000
00096 #define DST_flag_allocatable 0x00200000
00097 #define DST_flag_assumed_shape 0x00400000
00098 #define DST_flag_assumed_size 0x00800000
00099 #if !defined(TARG_NVISA)
00100
00101 #define DST_flag_assoc_fe 0x10000000
00102 #define DST_flag_assoc_be 0x20000000
00103 #define DST_flag_assoc_idx 0x40000000
00104 #endif
00105
00106 #define DST_flag_info_mark 0x80000000
00107 #define DST_flag_static 0x100000000LL
00108 #ifdef TARG_X8664
00109 #define DST_flag_GNU_vector 0x200000000LL
00110 #endif
00111 #define DST_flag_mask 0xffffffff
00112
00113 #define DST_SET_external(flag) (flag |= DST_flag_external)
00114 #define DST_SET_declaration(flag) (flag |= DST_flag_declaration)
00115 #define DST_SET_prototyped(flag) (flag |= DST_flag_prototyped)
00116 #define DST_SET_memdef(flag) (flag |= DST_flag_memdef)
00117 #define DST_SET_const(flag) (flag |= DST_flag_const)
00118 #define DST_SET_comm(flag) (flag |= DST_flag_comm)
00119 #define DST_SET_lb_cval(flag) (flag |= DST_flag_lb_cval)
00120 #define DST_SET_ub_cval(flag) (flag |= DST_flag_ub_cval)
00121 #define DST_SET_cval(flag) (flag |= DST_flag_cval)
00122 #define DST_SET_count(flag) (flag |= DST_flag_count)
00123 #define DST_SET_stride_1byte(flag) (flag |= DST_flag_stride_1byte)
00124 #define DST_SET_stride_2byte(flag) (flag |= DST_flag_stride_2byte)
00125 #define DST_SET_artificial(flag) (flag |= DST_flag_artificial)
00126 #define DST_SET_deref(flag) (flag |= DST_flag_deref)
00127 #define DST_SET_base_deref(flag) (flag |= DST_flag_base_deref)
00128 #define DST_SET_automatic(flag) (flag |= DST_flag_automatic)
00129 #define DST_SET_optional_parm(flag) (flag |= DST_flag_optional_parm)
00130 #define DST_SET_variable_parm(flag) (flag |= DST_flag_variable_parm)
00131 #define DST_SET_bitfield(flag) (flag |= DST_flag_bitfield)
00132 #define DST_SET_f90_pointer(flag) (flag |= DST_flag_f90_pointer)
00133 #define DST_SET_allocatable(flag) (flag |= DST_flag_allocatable)
00134 #define DST_SET_assumed_shape(flag) (flag |= DST_flag_assumed_shape)
00135 #define DST_SET_assumed_size(flag) (flag |= DST_flag_assumed_size)
00136 #if !defined(TARG_NVISA)
00137 #define DST_SET_assoc_fe(flag) (flag |= DST_flag_assoc_fe)
00138 #define DST_SET_assoc_be(flag) (flag |= DST_flag_assoc_be)
00139 #define DST_SET_assoc_idx(flag) (flag |= DST_flag_assoc_idx)
00140 #endif
00141 #define DST_SET_info_mark(flag) (flag |= DST_flag_info_mark)
00142 #define DST_SET_static(flag) (flag |= DST_flag_static)
00143 #ifdef TARG_X8664
00144 #define DST_SET_GNU_vector(flag) (flag |= DST_flag_GNU_vector)
00145 #endif
00146
00147 #define DST_RESET_all(flag) (flag &= ~DST_flag_mask)
00148 #define DST_RESET_external(flag) (flag &= ~DST_flag_external)
00149 #define DST_RESET_declaration(flag) (flag &= ~DST_flag_declaration)
00150 #define DST_RESET_prototyped(flag) (flag &= ~DST_flag_prototyped)
00151 #define DST_RESET_memdef(flag) (flag &= ~DST_flag_memdef)
00152 #define DST_RESET_const(flag) (flag &= ~DST_flag_const)
00153 #define DST_RESET_comm(flag) (flag &= ~DST_flag_comm)
00154 #define DST_RESET_lb_cval(flag) (flag &= ~DST_flag_lb_cval)
00155 #define DST_RESET_ub_cval(flag) (flag &= ~DST_flag_ub_cval)
00156 #define DST_RESET_cval(flag) (flag &= ~DST_flag_cval)
00157 #define DST_RESET_count(flag) (flag &= ~DST_flag_count)
00158 #define DST_RESET_stride_1byte(flag) (flag &= ~DST_flag_stride_1byte)
00159 #define DST_RESET_stride_2byte(flag) (flag &= ~DST_flag_stride_2byte)
00160 #define DST_RESET_artificial(flag) (flag &= ~DST_flag_artificial)
00161 #define DST_RESET_deref(flag) (flag &= ~DST_flag_deref)
00162 #define DST_RESET_base_deref(flag) (flag &= ~DST_flag_base_deref)
00163 #define DST_RESET_automatic(flag) (flag &= ~DST_flag_automatic)
00164 #define DST_RESET_optional_parm(flag) (flag &= ~DST_flag_optional_parm)
00165 #define DST_RESET_variable_parm(flag) (flag &= ~DST_flag_variable_parm)
00166 #define DST_RESET_bitfield(flag) (flag &= ~DST_flag_bitfield)
00167 #define DST_RESET_f90_pointer(flag) (flag &= ~DST_flag_f90_pointer)
00168 #define DST_RESET_allocatable(flag) (flag &= ~DST_flag_allocatable)
00169 #define DST_RESET_assumed_shape(flag) (flag &= ~DST_flag_assumed_shape)
00170 #define DST_RESET_assumed_size(flag) (flag &= ~DST_flag_assumed_size)
00171 #if !defined(TARG_NVISA)
00172 #define DST_RESET_assoc_fe(flag) (flag &= ~DST_flag_assoc_fe)
00173 #define DST_RESET_assoc_be(flag) (flag &= ~DST_flag_assoc_be)
00174 #define DST_RESET_assoc_idx(flag) (flag &= ~DST_flag_assoc_idx)
00175 #endif
00176 #define DST_RESET_info_mark(flag) (flag &= ~DST_flag_info_mark)
00177 #define DST_RESET_static(flag) (flag &= ~DST_flag_static)
00178 #ifdef TARG_X8664
00179 #define DST_RESET_GNU_vector(flag) (flag &= ~DST_flag_GNU_vector)
00180 #endif
00181
00182 #define DST_IS_external(flag) (flag & DST_flag_external)
00183 #define DST_IS_declaration(flag) (flag & DST_flag_declaration)
00184 #define DST_IS_prototyped(flag) (flag & DST_flag_prototyped)
00185 #define DST_IS_memdef(flag) (flag & DST_flag_memdef)
00186 #define DST_IS_const(flag) (flag & DST_flag_const)
00187 #define DST_IS_comm(flag) (flag & DST_flag_comm)
00188 #define DST_IS_lb_cval(flag) (flag & DST_flag_lb_cval)
00189 #define DST_IS_ub_cval(flag) (flag & DST_flag_ub_cval)
00190 #define DST_IS_cval(flag) (flag & DST_flag_cval)
00191 #define DST_IS_count(flag) (flag & DST_flag_count)
00192 #define DST_IS_stride_1byte(flag) (flag & DST_flag_stride_1byte)
00193 #define DST_IS_stride_2byte(flag) (flag & DST_flag_stride_2byte)
00194 #define DST_IS_artificial(flag) (flag & DST_flag_artificial)
00195 #define DST_IS_deref(flag) (flag & DST_flag_deref)
00196 #define DST_IS_base_deref(flag) (flag & DST_flag_base_deref)
00197 #define DST_IS_automatic(flag) (flag & DST_flag_automatic)
00198 #define DST_IS_optional_parm(flag) (flag & DST_flag_optional_parm)
00199 #define DST_IS_variable_parm(flag) (flag & DST_flag_variable_parm)
00200 #define DST_IS_bitfield(flag) (flag & DST_flag_bitfield)
00201 #define DST_IS_f90_pointer(flag) (flag & DST_flag_f90_pointer)
00202 #define DST_IS_allocatable(flag) (flag & DST_flag_allocatable)
00203 #define DST_IS_assumed_shape(flag) (flag & DST_flag_assumed_shape)
00204 #define DST_IS_assumed_size(flag) (flag & DST_flag_assumed_size)
00205 #if !defined(TARG_NVISA)
00206 #define DST_IS_assoc_fe(flag) (flag & DST_flag_assoc_fe)
00207 #define DST_IS_assoc_be(flag) (flag & DST_flag_assoc_be)
00208 #define DST_IS_assoc_idx(flag) (flag & DST_flag_assoc_idx)
00209 #endif
00210 #define DST_IS_info_mark(flag) (flag & DST_flag_info_mark)
00211 #define DST_IS_static(flag) (flag & DST_flag_static)
00212 #ifdef TARG_X8664
00213 #define DST_IS_GNU_vector(flag) (flag & DST_flag_GNU_vector)
00214 #endif
00215
00216
00217
00218
00219 typedef UINT64 DST_flag;
00220 typedef UINT16 DST_DW_tag;
00221 typedef UINT8 DST_ATE_encoding;
00222 typedef UINT8 DST_addr_class;
00223 typedef UINT16 DST_language;
00224 typedef UINT16 DST_identifier_case;
00225 typedef UINT8 DST_inline;
00226 typedef UINT8 DST_virtuality;
00227 #ifdef KEY
00228 typedef UINT8 DST_accessibility;
00229
00230 #endif
00231 typedef UINT16 DST_vtable_elem_location;
00232
00233 typedef UINT8 DST_bitsize;
00234 typedef UINT64 DST_size_t;
00235 typedef INT64 DST_bounds_t;
00236 typedef void *DST_die_ptr;
00237
00238
00239
00240
00241
00242
00243 typedef DST_IDX DST_INFO_IDX;
00244 typedef DST_IDX DST_ATTR_IDX;
00245 typedef DST_IDX DST_FILE_IDX;
00246 typedef DST_IDX DST_DIR_IDX;
00247 typedef DST_IDX DST_MACR_IDX;
00248 typedef DST_IDX DST_STR_IDX;
00249
00250
00251
00252
00253
00254
00255 class ST;
00256
00257 typedef union DST_assoc_info
00258 {
00259 ST_IDX st_idx;
00260 ST *st_ptr;
00261 #if !defined(TARG_NVISA)
00262
00263 union
00264 {
00265 void *fe_ptr;
00266 UINTPS fe_uint;
00267 } st_u;
00268 #endif
00269 } DST_ASSOC_INFO;
00270 #define DST_ASSOC_INFO_st_idx(p) ((p).st_idx)
00271 #define DST_ASSOC_INFO_st_level(p) (ST_IDX_level((p).st_idx))
00272 #define DST_ASSOC_INFO_st_index(p) (ST_IDX_index((p).st_idx))
00273 #define DST_ASSOC_INFO_st_ptr(p) ((p).st_ptr)
00274 #if !defined(TARG_NVISA)
00275 #define DST_ASSOC_INFO_fe_ptr(p) ((p).st_u.fe_ptr)
00276 #endif
00277
00278 #define pDST_ASSOC_INFO_st_idx(p) ((p)->st_idx)
00279 #define pDST_ASSOC_INFO_st_level(p) (ST_IDX_level((p)->st_idx))
00280 #define pDST_ASSOC_INFO_st_index(p) (ST_IDX_index((p)->st_idx))
00281 #define pDST_ASSOC_INFO_st_ptr(p) ((p)->st_ptr)
00282 #if !defined(TARG_NVISA)
00283 #define pDST_ASSOC_INFO_fe_ptr(p) ((p)->st_u.fe_ptr)
00284 #endif
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294 typedef enum DST_const_form
00295 {
00296 DST_FORM_STRING,
00297 DST_FORM_DATA1,
00298 DST_FORM_DATA2,
00299 DST_FORM_DATA4,
00300 #ifndef KEY
00301 DST_FORM_DATA8
00302 #else
00303 DST_FORM_DATA8,
00304 DST_FORM_DATAC4,
00305 DST_FORM_DATAC8
00306 #endif // KEY
00307 } DST_CONST_FORM;
00308
00309 typedef struct DST_const_value
00310 {
00311 DST_CONST_FORM form;
00312 union
00313 {
00314 DST_IDX form_string;
00315 UINT8 form_data1;
00316 UINT16 form_data2;
00317 UINT32 form_data4;
00318 UINT64 form_data8;
00319 #ifdef KEY
00320 struct {
00321 UINT32 form_crdata4;
00322 UINT32 form_cidata4;
00323 } cdata4;
00324 struct {
00325 UINT64 form_crdata8;
00326 UINT64 form_cidata8;
00327 } cdata8;
00328 #endif // KEY
00329 } value;
00330 } DST_CONST_VALUE;
00331
00332 #define DST_CONST_VALUE_form(c) ((c).form)
00333 #define DST_CONST_VALUE_form_string(c) ((c).value.form_string)
00334 #define DST_CONST_VALUE_form_data1(c) ((c).value.form_data1)
00335 #define DST_CONST_VALUE_form_data2(c) ((c).value.form_data2)
00336 #define DST_CONST_VALUE_form_data4(c) ((c).value.form_data4)
00337 #define DST_CONST_VALUE_form_data8(c) ((c).value.form_data8)
00338 #ifdef KEY
00339 #define DST_CONST_VALUE_form_crdata4(c) ((c).value.cdata4.form_crdata4)
00340 #define DST_CONST_VALUE_form_cidata4(c) ((c).value.cdata4.form_cidata4)
00341 #define DST_CONST_VALUE_form_crdata8(c) ((c).value.cdata8.form_crdata8)
00342 #define DST_CONST_VALUE_form_cidata8(c) ((c).value.cdata8.form_cidata8)
00343 #endif // KEY
00344
00345
00346
00347
00348
00349
00350 typedef struct DST_include_dir
00351 {
00352 DST_STR_IDX path;
00353 DST_DIR_IDX next;
00354 } DST_INCLUDE_DIR;
00355
00356 #define DST_INCLUDE_DIR_path(dir) ((dir)->path)
00357 #define DST_INCLUDE_DIR_next(dir) ((dir)->next)
00358
00359
00360
00361
00362
00363 typedef struct DST_file_name
00364 {
00365 DST_STR_IDX name;
00366 UINT16 dir;
00367 UINT64 size;
00368 UINT64 modt;
00369 DST_FILE_IDX next;
00370 } DST_FILE_NAME;
00371
00372 #define DST_FILE_NAME_name(f) ((f)->name)
00373 #define DST_FILE_NAME_dir(f) ((f)->dir)
00374 #define DST_FILE_NAME_size(f) ((f)->size)
00375 #define DST_FILE_NAME_modt(f) ((f)->modt)
00376 #define DST_FILE_NAME_next(f) ((f)->next)
00377
00378
00379 #ifdef KEY
00380
00381
00382 typedef struct DST_macinfo
00383 {
00384 DST_STR_IDX macro;
00385 UINT fileno;
00386 UINT lineno;
00387 DST_DW_tag tag;
00388 DST_MACR_IDX next;
00389 } DST_MACR;
00390
00391 #define DST_MACR_fileno(attr) ((attr)->fileno)
00392 #define DST_MACR_lineno(attr) ((attr)->lineno)
00393 #define DST_MACR_macro(attr) ((attr)->macro)
00394 #define DST_MACR_tag(attr) ((attr)->tag)
00395 #define DST_MACR_next(attr) ((attr)->next)
00396 #endif
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406 typedef struct DST_info
00407 {
00408 DST_DW_tag tag;
00409 DST_flag flag;
00410 DST_INFO_IDX sibling;
00411 DST_ATTR_IDX attributes;
00412 DST_die_ptr dieptr;
00413 } DST_INFO;
00414
00415 #define DST_INFO_tag(info) ((info)->tag)
00416 #define DST_INFO_flag(info) ((info)->flag)
00417 #define DST_INFO_sibling(info) ((info)->sibling)
00418 #define DST_INFO_attributes(info) ((info)->attributes)
00419 #define DST_INFO_dieptr(info) ((info)->dieptr)
00420
00421
00422
00423
00424
00425
00426 typedef struct DST_CHILDREN
00427 {
00428 DST_INFO_IDX first;
00429 DST_INFO_IDX last;
00430 } DST_CHILDREN;
00431
00432
00433
00434
00435
00436
00437 typedef struct DST_compile_unit
00438 {
00439 DST_STR_IDX name;
00440 DST_STR_IDX comp_dir;
00441 DST_STR_IDX producer;
00442 DST_language language;
00443 DST_identifier_case identifier_case;
00444 DST_CHILDREN child;
00445 } DST_COMPILE_UNIT;
00446
00447 #define DST_COMPILE_UNIT_name(attr) ((attr)->name)
00448 #define DST_COMPILE_UNIT_comp_dir(attr) ((attr)->comp_dir)
00449 #define DST_COMPILE_UNIT_producer(attr) ((attr)->producer)
00450 #define DST_COMPILE_UNIT_language(attr) ((attr)->language)
00451 #define DST_COMPILE_UNIT_identifier_case(attr) ((attr)->identifier_case)
00452 #define DST_COMPILE_UNIT_first_child(attr) ((attr)->child.first)
00453 #define DST_COMPILE_UNIT_last_child(attr) ((attr)->child.last)
00454
00455
00456
00457
00458
00459
00460 typedef struct DST_inlined_subroutine
00461 {
00462 DST_ASSOC_INFO low_pc;
00463 DST_ASSOC_INFO high_pc;
00464 DST_INFO_IDX abstract_origin;
00465 DST_CHILDREN child;
00466 USRCPOS decl;
00467 DST_STR_IDX abstract_name;
00468 } DST_INLINED_SUBROUTINE;
00469
00470 #define DST_INLINED_SUBROUTINE_low_pc(attr) ((attr)->low_pc)
00471 #define DST_INLINED_SUBROUTINE_high_pc(attr) ((attr)->high_pc)
00472 #define DST_INLINED_SUBROUTINE_abstract_origin(attr)\
00473 ((attr)->abstract_origin)
00474 #define DST_INLINED_SUBROUTINE_first_child(attr) ((attr)->child.first)
00475 #define DST_INLINED_SUBROUTINE_last_child(attr) ((attr)->child.last)
00476 #define DST_INLINED_SUBROUTINE_decl(attr) ((attr)->decl)
00477 #define DST_INLINED_SUBROUTINE_abstract_name(attr) ((attr)->abstract_name)
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488 typedef struct DST_subpr_decl
00489 {
00490 USRCPOS decl;
00491 DST_STR_IDX name;
00492 DST_STR_IDX linkage_name;
00493 DST_INFO_IDX type;
00494 DST_inline inlin;
00495 DST_virtuality virtuality;
00496 DST_vtable_elem_location vtable_elem_location;
00497 DST_CHILDREN child;
00498 DST_INFO_IDX origin;
00499 } DST_SUBPR_DECL;
00500
00501 typedef struct DST_subpr_def
00502 {
00503 USRCPOS decl;
00504 DST_STR_IDX name;
00505 DST_STR_IDX linkage_name;
00506 DST_STR_IDX pubname;
00507 DST_INFO_IDX type;
00508 DST_ASSOC_INFO st;
00509 DST_inline inlin;
00510 DST_virtuality virtuality;
00511 DST_vtable_elem_location vtable_elem_location;
00512 DST_INFO_IDX specification;
00513
00514 DST_CHILDREN child;
00515 DST_INFO_IDX origin;
00516 } DST_SUBPR_DEF;
00517
00518 typedef struct DST_subpr_memdef
00519 {
00520 USRCPOS decl;
00521 DST_INFO_IDX spec;
00522 DST_ASSOC_INFO st;
00523 DST_CHILDREN child;
00524 } DST_SUBPR_MEMDEF;
00525
00526
00527
00528
00529 typedef union DST_subprogram
00530 {
00531 DST_SUBPR_MEMDEF memdef;
00532 DST_SUBPR_DECL decl;
00533 DST_SUBPR_DEF def;
00534 } DST_SUBPROGRAM;
00535
00536 #define DST_SUBPROGRAM_memdef_decl(attr) ((attr)->memdef.decl)
00537 #define DST_SUBPROGRAM_memdef_spec(attr) ((attr)->memdef.spec)
00538 #define DST_SUBPROGRAM_memdef_st(attr) ((attr)->memdef.st)
00539 #define DST_SUBPROGRAM_memdef_first_child(attr) ((attr)->memdef.child.first)
00540 #define DST_SUBPROGRAM_memdef_last_child(attr) ((attr)->memdef.child.last)
00541
00542 #define DST_SUBPROGRAM_decl_decl(attr) ((attr)->decl.decl)
00543 #define DST_SUBPROGRAM_decl_name(attr) ((attr)->decl.name)
00544 #define DST_SUBPROGRAM_decl_linkage_name(attr) ((attr)->decl.linkage_name)
00545 #define DST_SUBPROGRAM_decl_type(attr) ((attr)->decl.type)
00546 #define DST_SUBPROGRAM_decl_inline(attr) ((attr)->decl.inlin)
00547 #define DST_SUBPROGRAM_decl_virtuality(attr) ((attr)->decl.virtuality)
00548 #define DST_SUBPROGRAM_decl_vtable_elem_location(attr) \
00549 ((attr)->decl.vtable_elem_location)
00550 #define DST_SUBPROGRAM_decl_first_child(attr) ((attr)->decl.child.first)
00551 #define DST_SUBPROGRAM_decl_last_child(attr) ((attr)->decl.child.last)
00552 #define DST_SUBPROGRAM_decl_origin(attr) ((attr)->decl.origin)
00553
00554 #define DST_SUBPROGRAM_def_decl(attr) ((attr)->def.decl)
00555 #define DST_SUBPROGRAM_def_name(attr) ((attr)->def.name)
00556 #define DST_SUBPROGRAM_def_linkage_name(attr) ((attr)->def.linkage_name)
00557 #define DST_SUBPROGRAM_def_pubname(attr) ((attr)->def.pubname)
00558 #define DST_SUBPROGRAM_def_type(attr) ((attr)->def.type)
00559 #define DST_SUBPROGRAM_def_st(attr) ((attr)->def.st)
00560 #define DST_SUBPROGRAM_def_inline(attr) ((attr)->def.inlin)
00561 #define DST_SUBPROGRAM_def_virtuality(attr) ((attr)->def.virtuality)
00562 #define DST_SUBPROGRAM_def_vtable_elem_location(attr) \
00563 ((attr)->def.vtable_elem_location)
00564 #define DST_SUBPROGRAM_def_specification(attr) ((attr)->def.specification)
00565 #define DST_SUBPROGRAM_def_first_child(attr) ((attr)->def.child.first)
00566 #define DST_SUBPROGRAM_def_last_child(attr) ((attr)->def.child.last)
00567 #define DST_SUBPROGRAM_def_clone_origin(attr) ((attr)->def.origin)
00568
00569
00570
00571
00572
00573 typedef struct DST_entry_point
00574 {
00575 USRCPOS decl;
00576 DST_STR_IDX name;
00577 DST_INFO_IDX type;
00578 DST_ASSOC_INFO st;
00579 DST_CHILDREN child;
00580 } DST_ENTRY_POINT;
00581
00582 #define DST_ENTRY_POINT_decl(attr) ((attr)->decl)
00583 #define DST_ENTRY_POINT_name(attr) ((attr)->name)
00584 #define DST_ENTRY_POINT_type(attr) ((attr)->type)
00585 #define DST_ENTRY_POINT_st(attr) ((attr)->st)
00586 #define DST_ENTRY_POINT_first_child(attr) ((attr)->child.first)
00587 #define DST_ENTRY_POINT_last_child(attr) ((attr)->child.last)
00588
00589
00590
00591
00592 typedef struct DST_common_block
00593 {
00594 DST_STR_IDX name;
00595 DST_ASSOC_INFO st;
00596 DST_CHILDREN child;
00597 } DST_COMMON_BLOCK;
00598
00599 #define DST_COMMON_BLOCK_name(attr) ((attr)->name)
00600 #define DST_COMMON_BLOCK_st(attr) ((attr)->st)
00601 #define DST_COMMON_BLOCK_first_child(attr) ((attr)->child.first)
00602 #define DST_COMMON_BLOCK_last_child(attr) ((attr)->child.last)
00603
00604
00605
00606
00607
00608 typedef struct DST_common_incl
00609 {
00610 USRCPOS decl;
00611 DST_INFO_IDX com_blk;
00612 } DST_COMMON_INCL;
00613
00614 #define DST_COMMON_INCL_decl(attr) ((attr)->decl)
00615 #define DST_COMMON_INCL_com_blk(attr) ((attr)->com_blk)
00616
00617 #ifdef KEY
00618 typedef struct DST_imported_decl
00619 {
00620 DST_ASSOC_INFO import;
00621 DST_STR_IDX name;
00622 } DST_IMPORTED_DECL;
00623 #define DST_IMPORTED_DECL_import(attr) ((attr)->import)
00624 #define DST_IMPORTED_DECL_name(attr) ((attr)->name)
00625
00626 typedef struct DST_module
00627 {
00628 USRCPOS decl;
00629 DST_STR_IDX name;
00630 DST_CHILDREN child;
00631 } DST_MODULE;
00632 #define DST_MODULE_decl(attr) ((attr)->decl)
00633 #define DST_MODULE_name(attr) ((attr)->name)
00634 #define DST_MODULE_first_child(attr) ((attr)->child.first)
00635 #define DST_MODULE_last_child(attr) ((attr)->child.last)
00636 #endif
00637
00638
00639
00640
00641 typedef struct DST_lexical_block
00642 {
00643 DST_STR_IDX name;
00644 DST_ASSOC_INFO low_pc;
00645 DST_ASSOC_INFO high_pc;
00646 DST_INFO_IDX abstract_origin;
00647 DST_CHILDREN child;
00648 } DST_LEXICAL_BLOCK;
00649
00650 #define DST_LEXICAL_BLOCK_name(attr) ((attr)->name)
00651 #define DST_LEXICAL_BLOCK_low_pc(attr) ((attr)->low_pc)
00652 #define DST_LEXICAL_BLOCK_high_pc(attr) ((attr)->high_pc)
00653 #define DST_LEXICAL_BLOCK_abstract_origin(attr) ((attr)->abstract_origin)
00654 #define DST_LEXICAL_BLOCK_first_child(attr) ((attr)->child.first)
00655 #define DST_LEXICAL_BLOCK_last_child(attr) ((attr)->child.last)
00656
00657
00658
00659
00660
00661
00662 typedef struct DST_label
00663 {
00664 DST_STR_IDX name;
00665 DST_ASSOC_INFO low_pc;
00666 DST_INFO_IDX abstract_origin;
00667 } DST_LABEL;
00668
00669 #define DST_LABEL_name(attr) ((attr)->name)
00670 #define DST_LABEL_low_pc(attr) ((attr)->low_pc)
00671 #define DST_LABEL_abstract_origin(attr) ((attr)->abstract_origin)
00672
00673
00674
00675
00676
00677
00678
00679 typedef struct DST_var_decl
00680 {
00681 USRCPOS decl;
00682 DST_STR_IDX name;
00683 DST_INFO_IDX type;
00684 #ifdef KEY
00685 DST_STR_IDX linkage_name;
00686 #endif
00687 } DST_VAR_DECL;
00688
00689 typedef struct DST_var_def
00690 {
00691 USRCPOS decl;
00692 DST_STR_IDX name;
00693 DST_INFO_IDX type;
00694 DST_ASSOC_INFO st;
00695 UINT64 offs;
00696 DST_INFO_IDX specification;
00697
00698 DST_INFO_IDX abstract_origin;
00699 DST_INFO_IDX dopetype;
00700 #ifdef KEY
00701 DST_STR_IDX linkage_name;
00702 #endif
00703 } DST_VAR_DEF;
00704
00705 typedef struct DST_var_const
00706 {
00707 USRCPOS decl;
00708 DST_STR_IDX name;
00709 DST_INFO_IDX type;
00710 DST_CONST_VALUE cval;
00711 } DST_VAR_CONST;
00712
00713 typedef struct DST_var_comm
00714 {
00715 USRCPOS decl;
00716 DST_STR_IDX name;
00717 DST_INFO_IDX type;
00718 DST_ASSOC_INFO st;
00719 UINT64 offs;
00720 DST_INFO_IDX dopetype;
00721 } DST_VAR_COMM;
00722
00723
00724 typedef struct DST_var_memdef
00725 {
00726 USRCPOS decl;
00727 DST_ASSOC_INFO st;
00728 DST_INFO_IDX spec;
00729 } DST_VAR_MEMDEF;
00730
00731
00732
00733
00734 typedef union DST_variable
00735 {
00736 DST_VAR_DECL decl;
00737 DST_VAR_DEF def;
00738 DST_VAR_CONST constant;
00739 DST_VAR_COMM comm;
00740 DST_VAR_MEMDEF memdef;
00741 } DST_VARIABLE;
00742
00743 #define DST_VARIABLE_decl_decl(attr) ((attr)->decl.decl)
00744 #define DST_VARIABLE_decl_name(attr) ((attr)->decl.name)
00745 #define DST_VARIABLE_decl_type(attr) ((attr)->decl.type)
00746 #ifdef KEY
00747 #define DST_VARIABLE_decl_linkage_name(attr) ((attr)->decl.linkage_name)
00748 #endif
00749
00750 #define DST_VARIABLE_def_decl(attr) ((attr)->def.decl)
00751 #define DST_VARIABLE_def_name(attr) ((attr)->def.name)
00752 #define DST_VARIABLE_def_type(attr) ((attr)->def.type)
00753 #define DST_VARIABLE_def_st(attr) ((attr)->def.st)
00754 #define DST_VARIABLE_def_offs(attr) ((attr)->def.offs)
00755 #define DST_VARIABLE_def_specification(attr) ((attr)->def.specification)
00756 #ifdef KEY
00757 #define DST_VARIABLE_def_linkage_name(attr) ((attr)->def.linkage_name)
00758 #endif
00759 #define DST_VARIABLE_def_abstract_origin(attr) ((attr)->def.abstract_origin)
00760 #define DST_VARIABLE_def_dopetype(attr) ((attr)->def.dopetype)
00761
00762 #define DST_VARIABLE_constant_decl(attr) ((attr)->constant.decl)
00763 #define DST_VARIABLE_constant_name(attr) ((attr)->constant.name)
00764 #define DST_VARIABLE_constant_type(attr) ((attr)->constant.type)
00765 #define DST_VARIABLE_constant_cval(attr) ((attr)->constant.cval)
00766
00767 #define DST_VARIABLE_comm_decl(attr) ((attr)->comm.decl)
00768 #define DST_VARIABLE_comm_name(attr) ((attr)->comm.name)
00769 #define DST_VARIABLE_comm_type(attr) ((attr)->comm.type)
00770 #define DST_VARIABLE_comm_st(attr) ((attr)->comm.st)
00771 #define DST_VARIABLE_comm_offs(attr) ((attr)->comm.offs)
00772 #define DST_VARIABLE_comm_dopetype(attr) ((attr)->comm.dopetype)
00773
00774 #define DST_VARIABLE_memdef_decl(attr) ((attr)->memdef.decl)
00775 #define DST_VARIABLE_memdef_st(attr) ((attr)->memdef.st)
00776 #define DST_VARIABLE_memdef_spec(attr) ((attr)->memdef.spec)
00777
00778
00779
00780
00781
00782
00783
00784
00785 typedef struct DST_formal_parameter
00786 {
00787 USRCPOS decl;
00788 DST_STR_IDX name;
00789 DST_INFO_IDX type;
00790 DST_ASSOC_INFO st;
00791 DST_INFO_IDX abstract_origin;
00792 DST_INFO_IDX default_val;
00793 DST_INFO_IDX dopetype;
00794 } DST_FORMAL_PARAMETER;
00795
00796 #define DST_FORMAL_PARAMETER_decl(attr) ((attr)->decl)
00797 #define DST_FORMAL_PARAMETER_name(attr) ((attr)->name)
00798 #define DST_FORMAL_PARAMETER_type(attr) ((attr)->type)
00799 #define DST_FORMAL_PARAMETER_st(attr) ((attr)->st)
00800 #define DST_FORMAL_PARAMETER_abstract_origin(attr) ((attr)->abstract_origin)
00801 #define DST_FORMAL_PARAMETER_default_val(attr) ((attr)->default_val)
00802 #define DST_FORMAL_PARAMETER_dopetype(attr) ((attr)->dopetype)
00803
00804
00805
00806
00807
00808 typedef struct DST_unspecified_parameters
00809 {
00810 USRCPOS decl;
00811 DST_INFO_IDX abstract_origin;
00812 } DST_UNSPECIFIED_PARAMETERS;
00813
00814 #define DST_UNSPECIFIED_PARAMETERS_decl(attr) ((attr)->decl)
00815 #define DST_UNSPECIFIED_PARAMETERS_abstract_origin(attr)\
00816 ((attr)->abstract_origin)
00817
00818
00819
00820
00821
00822
00823 typedef struct DST_const_def
00824 {
00825 USRCPOS decl;
00826 DST_STR_IDX name;
00827 DST_INFO_IDX type;
00828 DST_CONST_VALUE cval;
00829 } DST_CONST_DEF;
00830
00831 typedef struct DST_const_decl
00832 {
00833 USRCPOS decl;
00834 DST_INFO_IDX name;
00835 DST_INFO_IDX type;
00836 } DST_CONST_DECL;
00837
00838 typedef union DST_constant
00839 {
00840 DST_CONST_DECL decl;
00841 DST_CONST_DEF def;
00842 } DST_CONSTANT;
00843
00844 #define DST_CONSTANT_decl_decl(attr) ((attr)->decl.decl)
00845 #define DST_CONSTANT_decl_name(attr) ((attr)->decl.name)
00846 #define DST_CONSTANT_decl_type(attr) ((attr)->decl.type)
00847
00848 #define DST_CONSTANT_def_decl(attr) ((attr)->def.decl)
00849 #define DST_CONSTANT_def_name(attr) ((attr)->def.name)
00850 #define DST_CONSTANT_def_type(attr) ((attr)->def.type)
00851 #define DST_CONSTANT_def_cval(attr) ((attr)->def.cval)
00852
00853
00854
00855
00856
00857 typedef struct DST_basetype
00858 {
00859 DST_STR_IDX name;
00860 DST_ATE_encoding encoding;
00861 DST_size_t byte_size;
00862 } DST_BASETYPE;
00863
00864 #define DST_BASETYPE_name(attr) ((attr)->name)
00865 #define DST_BASETYPE_encoding(attr) ((attr)->encoding)
00866 #define DST_BASETYPE_byte_size(attr) ((attr)->byte_size)
00867
00868
00869
00870
00871
00872
00873 typedef struct DST_qualified_type
00874 {
00875 DST_INFO_IDX type;
00876 } DST_QUALIFIED_TYPE;
00877
00878 typedef DST_QUALIFIED_TYPE DST_CONST_TYPE;
00879 #define DST_CONST_TYPE_type(attr) ((attr)->type)
00880
00881
00882
00883
00884
00885
00886 typedef DST_QUALIFIED_TYPE DST_VOLATILE_TYPE;
00887 #define DST_VOLATILE_TYPE_type(attr) ((attr)->type)
00888
00889
00890
00891
00892
00893
00894 typedef struct DST_pointer_type
00895 {
00896 DST_INFO_IDX type;
00897
00898
00899 DST_addr_class address_class;
00900
00901
00902 DST_size_t byte_size;
00903
00904 } DST_POINTER_TYPE;
00905
00906 #define DST_POINTER_TYPE_type(attr) ((attr)->type)
00907 #define DST_POINTER_TYPE_address_class(attr) ((attr)->address_class)
00908 #define DST_POINTER_TYPE_byte_size(attr) ((attr)->byte_size)
00909
00910
00911
00912
00913
00914
00915 typedef DST_POINTER_TYPE DST_REFERENCE_TYPE;
00916
00917 #define DST_REFERENCE_TYPE_type(attr) ((attr)->type)
00918 #define DST_REFERENCE_TYPE_address_class(attr) ((attr)->address_class)
00919 #define DST_REFERENCE_TYPE_byte_size(attr) ((attr)->byte_size)
00920
00921
00922
00923
00924
00925
00926 typedef struct DST_typedef
00927 {
00928 USRCPOS decl;
00929 DST_STR_IDX name;
00930 DST_INFO_IDX type;
00931 DST_INFO_IDX abstract_origin;
00932 } DST_TYPEDEF;
00933
00934 #define DST_TYPEDEF_decl(attr) ((attr)->decl)
00935 #define DST_TYPEDEF_name(attr) ((attr)->name)
00936 #define DST_TYPEDEF_type(attr) ((attr)->type)
00937 #define DST_TYPEDEF_abstract_origin(attr) ((attr)->abstract_origin)
00938
00939
00940
00941
00942
00943
00944 typedef struct DST_array_type
00945 {
00946 USRCPOS decl;
00947 DST_STR_IDX name;
00948 DST_INFO_IDX type;
00949 DST_size_t byte_size;
00950 DST_INFO_IDX abstract_origin;
00951 DST_CHILDREN child;
00952 } DST_ARRAY_TYPE;
00953
00954 #define DST_ARRAY_TYPE_decl(attr) ((attr)->decl)
00955 #define DST_ARRAY_TYPE_name(attr) ((attr)->name)
00956 #define DST_ARRAY_TYPE_type(attr) ((attr)->type)
00957 #define DST_ARRAY_TYPE_byte_size(attr) ((attr)->byte_size)
00958 #define DST_ARRAY_TYPE_abstract_origin(attr) ((attr)->abstract_origin)
00959 #define DST_ARRAY_TYPE_first_child(attr) ((attr)->child.first)
00960 #define DST_ARRAY_TYPE_last_child(attr) ((attr)->child.last)
00961
00962
00963
00964
00965
00966
00967 typedef union
00968 {
00969 DST_bounds_t cval;
00970 DST_INFO_IDX ref;
00971 } DST_cval_ref;
00972
00973 typedef struct DST_subrange_type
00974 {
00975 DST_cval_ref lower;
00976 DST_cval_ref upper;
00977 DST_cval_ref stride;
00978 } DST_SUBRANGE_TYPE;
00979
00980 #define DST_SUBRANGE_TYPE_count(attr) ((attr)->upper.cval - (attr)->lower.cval + 1)
00981 #define DST_SUBRANGE_TYPE_lower_cval(attr) ((attr)->lower.cval)
00982 #define DST_SUBRANGE_TYPE_upper_cval(attr) ((attr)->upper.cval)
00983 #define DST_SUBRANGE_TYPE_lower_ref(attr) ((attr)->lower.ref)
00984 #define DST_SUBRANGE_TYPE_upper_ref(attr) ((attr)->upper.ref)
00985 #define DST_SUBRANGE_TYPE_stride_ref(attr) ((attr)->stride.ref)
00986
00987
00988
00989
00990
00991 typedef struct DST_string_type
00992 {
00993 USRCPOS decl;
00994 DST_STR_IDX name;
00995 DST_cval_ref len;
00996 } DST_STRING_TYPE;
00997
00998 #define DST_STRING_TYPE_decl(attr) ((attr)->decl)
00999 #define DST_STRING_TYPE_name(attr) ((attr)->name)
01000 #define DST_STRING_TYPE_len_cval(attr) ((attr)->len.cval)
01001 #define DST_STRING_TYPE_len_ref(attr) ((attr)->len.ref)
01002
01003
01004
01005
01006
01007 typedef struct DST_structure_type
01008 {
01009 USRCPOS decl;
01010 DST_STR_IDX name;
01011 DST_size_t byte_size;
01012 DST_INFO_IDX abstract_origin;
01013 DST_INFO_IDX inheritance;
01014 DST_CHILDREN child;
01015 } DST_STRUCTURE_TYPE;
01016
01017 #define DST_STRUCTURE_TYPE_decl(attr) ((attr)->decl)
01018 #define DST_STRUCTURE_TYPE_name(attr) ((attr)->name)
01019 #define DST_STRUCTURE_TYPE_byte_size(attr) ((attr)->byte_size)
01020 #define DST_STRUCTURE_TYPE_abstract_origin(attr) ((attr)->abstract_origin)
01021 #define DST_STRUCTURE_TYPE_inheritance(attr) ((attr)->inheritance)
01022 #define DST_STRUCTURE_TYPE_first_child(attr) ((attr)->child.first)
01023 #define DST_STRUCTURE_TYPE_last_child(attr) ((attr)->child.last)
01024
01025
01026
01027
01028
01029
01030 typedef DST_STRUCTURE_TYPE DST_UNION_TYPE;
01031
01032 #define DST_UNION_TYPE_decl(attr) ((attr)->decl)
01033 #define DST_UNION_TYPE_name(attr) ((attr)->name)
01034 #define DST_UNION_TYPE_byte_size(attr) ((attr)->byte_size)
01035 #define DST_UNION_TYPE_abstract_origin(attr) ((attr)->abstract_origin)
01036 #define DST_UNION_TYPE_inheritance(attr) ((attr)->inheritance)
01037 #define DST_UNION_TYPE_first_child(attr) ((attr)->child.first)
01038 #define DST_UNION_TYPE_last_child(attr) ((attr)->child.last)
01039
01040
01041
01042
01043
01044
01045 typedef DST_STRUCTURE_TYPE DST_CLASS_TYPE;
01046
01047 #define DST_CLASS_TYPE_decl(attr) ((attr)->decl)
01048 #define DST_CLASS_TYPE_name(attr) ((attr)->name)
01049 #define DST_CLASS_TYPE_byte_size(attr) ((attr)->byte_size)
01050 #define DST_CLASS_TYPE_abstract_origin(attr) ((attr)->abstract_origin)
01051 #define DST_CLASS_TYPE_inheritance(attr) ((attr)->inheritance)
01052 #define DST_CLASS_TYPE_first_child(attr) ((attr)->child.first)
01053 #define DST_CLASS_TYPE_last_child(attr) ((attr)->child.last)
01054
01055
01056
01057
01058
01059
01060 typedef struct DST_member
01061 {
01062 USRCPOS decl;
01063 DST_STR_IDX name;
01064 DST_INFO_IDX type;
01065 DST_size_t memb_loc;
01066
01067 DST_size_t byte_size;
01068 DST_bitsize bit_offset;
01069 DST_bitsize bit_size;
01070 DST_INFO_IDX dopetype;
01071 #ifdef KEY
01072 DST_accessibility accessibility;
01073 #endif
01074 } DST_MEMBER;
01075
01076 #define DST_MEMBER_decl(attr) ((attr)->decl)
01077 #define DST_MEMBER_name(attr) ((attr)->name)
01078 #define DST_MEMBER_type(attr) ((attr)->type)
01079 #define DST_MEMBER_memb_loc(attr) ((attr)->memb_loc)
01080 #define DST_MEMBER_byte_size(attr) ((attr)->byte_size)
01081 #define DST_MEMBER_bit_offset(attr) ((attr)->bit_offset)
01082 #define DST_MEMBER_bit_size(attr) ((attr)->bit_size)
01083 #define DST_MEMBER_dopetype(attr) ((attr)->dopetype)
01084 #ifdef KEY
01085 #define DST_MEMBER_accessibility(attr) ((attr)->accessibility)
01086 #endif
01087
01088
01089
01090
01091
01092
01093 typedef struct DST_inheritance
01094 {
01095 USRCPOS decl;
01096 DST_INFO_IDX type;
01097 DST_virtuality virtuality;
01098 DST_size_t memb_loc;
01099
01100 #ifdef KEY
01101 DST_accessibility accessibility;
01102 #endif
01103 } DST_INHERITANCE;
01104
01105 #define DST_INHERITANCE_decl(attr) ((attr)->decl)
01106 #define DST_INHERITANCE_type(attr) ((attr)->type)
01107 #define DST_INHERITANCE_virtuality(attr) ((attr)->virtuality)
01108 #define DST_INHERITANCE_memb_loc(attr) ((attr)->memb_loc)
01109 #ifdef KEY
01110 #define DST_INHERITANCE_accessibility(attr) ((attr)->accessibility)
01111 #endif
01112
01113
01114
01115
01116
01117
01118 typedef struct DST_template_type_parameter
01119 {
01120 USRCPOS decl;
01121 DST_STR_IDX name;
01122 DST_INFO_IDX type;
01123 } DST_TEMPLATE_TYPE_PARAMETER;
01124
01125 #define DST_TEMPLATE_TYPE_PARAMETER_decl(attr) ((attr)->decl)
01126 #define DST_TEMPLATE_TYPE_PARAMETER_name(attr) ((attr)->name)
01127 #define DST_TEMPLATE_TYPE_PARAMETER_type(attr) ((attr)->type)
01128
01129
01130
01131
01132
01133
01134 typedef struct DST_template_value_parameter
01135 {
01136 USRCPOS decl;
01137 DST_STR_IDX name;
01138 DST_INFO_IDX type;
01139 DST_CONST_VALUE cval;
01140 } DST_TEMPLATE_VALUE_PARAMETER;
01141
01142 #define DST_TEMPLATE_VALUE_PARAMETER_decl(attr) ((attr)->decl)
01143 #define DST_TEMPLATE_VALUE_PARAMETER_name(attr) ((attr)->name)
01144 #define DST_TEMPLATE_VALUE_PARAMETER_type(attr) ((attr)->type)
01145 #define DST_TEMPLATE_VALUE_PARAMETER_cval(attr) ((attr)->cval)
01146
01147
01148
01149
01150
01151
01152
01153
01154 typedef struct DST_enumeration_type
01155 {
01156 USRCPOS decl;
01157 DST_STR_IDX name;
01158 DST_size_t byte_size;
01159 DST_INFO_IDX abstract_origin;
01160 DST_CHILDREN child;
01161 } DST_ENUMERATION_TYPE;
01162
01163 #define DST_ENUMERATION_TYPE_decl(attr) ((attr)->decl)
01164 #define DST_ENUMERATION_TYPE_name(attr) ((attr)->name)
01165 #define DST_ENUMERATION_TYPE_byte_size(attr) ((attr)->byte_size)
01166 #define DST_ENUMERATION_TYPE_abstract_origin(attr) ((attr)->abstract_origin)
01167 #define DST_ENUMERATION_TYPE_first_child(attr) ((attr)->child.first)
01168 #define DST_ENUMERATION_TYPE_last_child(attr) ((attr)->child.last)
01169
01170
01171
01172
01173
01174 typedef struct DST_enumerator
01175 {
01176 USRCPOS decl;
01177 DST_STR_IDX name;
01178 DST_CONST_VALUE cval;
01179 } DST_ENUMERATOR;
01180
01181 #define DST_ENUMERATOR_decl(attr) ((attr)->decl)
01182 #define DST_ENUMERATOR_name(attr) ((attr)->name)
01183 #define DST_ENUMERATOR_cval(attr) ((attr)->cval)
01184
01185
01186
01187
01188
01189
01190
01191 typedef struct DST_subroutine_type
01192 {
01193 USRCPOS decl;
01194 DST_STR_IDX name;
01195 DST_INFO_IDX type;
01196 DST_INFO_IDX abstract_origin;
01197 DST_CHILDREN child;
01198 } DST_SUBROUTINE_TYPE;
01199
01200 #define DST_SUBROUTINE_TYPE_decl(attr) ((attr)->decl)
01201 #define DST_SUBROUTINE_TYPE_name(attr) ((attr)->name)
01202 #define DST_SUBROUTINE_TYPE_type(attr) ((attr)->type)
01203 #define DST_SUBROUTINE_TYPE_abstract_origin(attr) ((attr)->abstract_origin)
01204 #define DST_SUBROUTINE_TYPE_first_child(attr) ((attr)->child.first)
01205 #define DST_SUBROUTINE_TYPE_last_child(attr) ((attr)->child.last)
01206
01207
01208
01209
01210
01211 typedef struct DST_ptr_to_member_type
01212 {
01213 DST_STR_IDX name;
01214 DST_INFO_IDX type;
01215 DST_INFO_IDX class_type;
01216 } DST_PTR_TO_MEMBER_TYPE;
01217
01218 #define DST_PTR_TO_MEMBER_TYPE_name(attr) ((attr)->name)
01219 #define DST_PTR_TO_MEMBER_TYPE_type(attr) ((attr)->type)
01220 #define DST_PTR_TO_MEMBER_TYPE_class_type(attr) ((attr)->class_type)
01221
01222
01223
01224
01225
01226
01227
01228
01229
01230
01231 #define DST_IDX_TO_PTR(i, btype) ((btype *)DST_idx_to_string(i))
01232 #define DST_INFO_IDX_TO_PTR(i) ((DST_INFO *)DST_idx_to_string(i))
01233 #define DST_ATTR_IDX_TO_PTR(i, attr_struct) DST_IDX_TO_PTR(i, attr_struct)
01234 #define DST_FILE_IDX_TO_PTR(i) ((DST_FILE_NAME *)DST_idx_to_string(i))
01235 #define DST_DIR_IDX_TO_PTR(i) ((DST_INCLUDE_DIR *)DST_idx_to_string(i))
01236 #define DST_STR_IDX_TO_PTR(i) ((char *)DST_idx_to_string(i))
01237 #ifdef KEY
01238 #define DST_MACR_IDX_TO_PTR(i) ((DST_MACR *)DST_idx_to_string(i))
01239 #endif
01240
01241 #ifdef KEY
01242
01243
01244 typedef struct DST_namelist
01245 {
01246 USRCPOS decl;
01247 DST_STR_IDX name;
01248 DST_CHILDREN child;
01249 } DST_NAMELIST;
01250
01251 #define DST_NAMELIST_decl(attr) ((attr)->decl)
01252 #define DST_NAMELIST_name(attr) ((attr)->name)
01253 #define DST_NAMELIST_first_child(attr) ((attr)->child.first)
01254 #define DST_NAMELIST_last_child(attr) ((attr)->child.last)
01255
01256
01257
01258 typedef struct DST_namelist_item
01259 {
01260 USRCPOS decl;
01261 DST_STR_IDX name;
01262 } DST_NAMELIST_ITEM;
01263
01264 #define DST_NAMELIST_ITEM_decl(attr) ((attr)->decl)
01265 #define DST_NAMELIST_ITEM_name(attr) ((attr)->name)
01266 #endif
01267
01268
01269
01270
01271
01272
01273
01274
01275
01276
01277
01278
01279 extern DST_INFO_IDX DST_first_child(DST_INFO_IDX parent);
01280 extern DST_INFO_IDX DST_last_child(DST_INFO_IDX parent);
01281
01282
01283
01284
01285
01286
01287
01288 extern void
01289 DST_append_child(DST_INFO_IDX parent, DST_INFO_IDX child);
01290
01291
01292
01293
01294
01295
01296
01297
01298
01299
01300
01301
01302
01303
01304 extern void
01305 DST_preorder_visit(
01306 DST_INFO_IDX i,
01307 INT32 init_val,
01308 INT32 (*action)(INT32, DST_DW_tag, DST_flag, DST_ATTR_IDX, DST_INFO_IDX));
01309
01310
01311 #ifdef __cplusplus
01312 }
01313 #endif
01314 #endif
01315