15 using namespace sexp2whirl;
21 template <
typename T, UINT block_size>
24 sexp_t* tab_sx,
const char* table_nm)
39 T* x = xlate_SYMTAB_entry<T>(entry);
45 template <
typename T, UINT block_size>
48 sexp_t* tab_sx,
const char* table_nm)
63 T* x = xlate_SYMTAB_entry<T>(entry);
86 xlate_entry(entry, buf);
100 if (!gbl_symtab) {
return; }
121 memset (
New_FLD ().Entry(),
'\0',
sizeof(
FLD));
123 memset (
New_ARB ().Entry(),
'\0',
sizeof(
ARB));
130 memset (&Zero,
'\0',
sizeof(
TCON));
143 sexp_t* file_info_sx =
get_elem1(gbl_symtab);
146 sexp_t* st_tab_sx =
get_next(file_info_sx);
149 sexp_t* st_attr_tab_sx =
get_next(st_tab_sx);
152 sexp_t* pu_tab_sx =
get_next(st_attr_tab_sx);
155 sexp_t* ty_tab_sx =
get_next(pu_tab_sx);
158 sexp_t* fld_tab_sx =
get_next(ty_tab_sx);
161 sexp_t* arb_tab_sx =
get_next(fld_tab_sx);
164 sexp_t* tlist_tab_sx =
get_next(arb_tab_sx);
167 sexp_t* tcon_tab_sx =
get_next(tlist_tab_sx);
170 sexp_t* tcon_str_tab_sx =
get_next(tcon_tab_sx);
173 sexp_t* inito_tab_sx =
get_next(tcon_str_tab_sx);
176 sexp_t* initv_tab_sx =
get_next(inito_tab_sx);
179 sexp_t* blk_tab_sx =
get_next(initv_tab_sx);
182 sexp_t* str_tab_sx =
get_next(blk_tab_sx);
194 using namespace sexp;
196 if (!pu_symtab) {
return; }
210 sexp_t* st_tab_sx =
get_elem1(pu_symtab);
213 sexp_t* st_attr_tab_sx =
get_next(st_tab_sx);
216 sexp_t* label_tab_sx =
get_next(st_attr_tab_sx);
219 sexp_t* preg_tab_sx =
get_next(label_tab_sx);
222 sexp_t* inito_tab_sx =
get_next(preg_tab_sx);
234 using namespace sexp;
397 using namespace sexp;
403 const char* stclass_nm =
get_value(stclass_sx);
407 sexp_t* stsclass_sx =
get_next(stclass_sx);
408 const char* stsclass_nm =
get_value(stsclass_sx);
412 sexp_t* stexport_sx =
get_next(stsclass_sx);
413 const char* stexport_nm =
get_value(stexport_sx);
418 sexp_t* name_idx_sx =
get_next(stexport_sx);
419 sexp_t* nmidx_sx =
get_elem1(name_idx_sx);
424 sexp_t* typublk_sx =
get_next(name_idx_sx);
439 sexp_t* basest_sx =
get_next(typublk_sx);
443 sexp_t* oset_sx =
get_next(basest_sx);
448 sexp_t* flags_sx =
get_next(oset_sx);
452 sexp_t* flagsext_sx =
get_next(flags_sx);
453 const char* flagsext_str =
GetWhirlFlg(flagsext_sx);
457 sexp_t* st_idx_sx =
get_next(flagsext_sx);
468 using namespace sexp;
478 sexp_t* knd_sx =
get_next(st_idx_sx);
484 sexp_t* reg_id_sx =
get_next(knd_sx);
495 using namespace sexp;
505 sexp_t* lvl_sx =
get_next(ty_idx_sx);
515 sexp_t* srclang_sx =
get_next(gp_sx);
520 sexp_t* targidx_sx =
get_next(srclang_sx);
525 sexp_t* flags_sx =
get_next(targidx_sx);
536 using namespace sexp;
547 sexp_t* name_idx_sx =
get_next(knd_sx);
548 sexp_t* nmidx_sx =
get_elem1(name_idx_sx);
553 sexp_t* mty_sx =
get_next(name_idx_sx);
570 sexp_t* olist_sx =
get_next(flags_sx);
607 using namespace sexp;
617 sexp_t* nmidx_sx =
get_elem1(name_idx_sx);
619 fld->name_idx = nmidx;
622 sexp_t* ty_idx_sx =
get_next(name_idx_sx);
627 sexp_t* ofst_sx =
get_next(ty_idx_sx);
635 sexp_t* bofst_sx =
get_next(bsz_sx);
640 sexp_t* flags_sx =
get_next(bofst_sx);
656 using namespace sexp;
669 sexp_t* dim_sx =
get_next(flags_sx);
671 arb->dimension = dim;
673 sexp_t* codim_sx =
get_next(dim_sx);
675 arb->co_dimension = codim;
678 sexp_t* lbnd_sx =
get_next(codim_sx);
682 arb->Set_lbnd_val(val);
686 arb->Set_lbnd_var(st_idx);
690 sexp_t* ubnd_sx =
get_next(lbnd_sx);
694 arb->Set_ubnd_val(val);
698 arb->Set_ubnd_var(st_idx);
702 sexp_t* stride_sx =
get_next(ubnd_sx);
706 arb->Set_stride_val(val);
710 arb->Set_stride_var(st_idx);
720 using namespace sexp;
736 using namespace sexp;
746 Set_TCON_ty(*tcon, mty);
749 sexp_t* flags_sx =
get_next(mty_sx);
754 sexp_t* vals_sx =
get_next(flags_sx);
760 sexp_t* cmplxval_sx =
get_next(vals_sx);
773 using namespace sexp;
780 inito->st_idx = st_idx;
783 sexp_t* val_sx =
get_next(st_idx_sx);
795 using namespace sexp;
805 sexp_t* kind_sx =
get_next(next_sx);
806 const char* kind_nm =
get_value(kind_sx);
811 sexp_t* repeat1_sx =
get_next(kind_sx);
813 initv->repeat1 = repeat1;
816 sexp_t* st_sx =
get_next(repeat1_sx);
818 initv->u.sto.st = st;
823 initv->u.sto.ofst = ofst;
832 using namespace sexp;
842 sexp_t* align_sx =
get_next(size_sx);
844 blk->Set_align(align);
847 sexp_t* flags_sx =
get_next(align_sx);
850 blk->Set_flags(flags);
853 sexp_t* scn_idx_sx =
get_next(flags_sx);
855 blk->Set_section_idx(scn_idx);
858 sexp_t* scninfo_idx_sx =
get_next(scn_idx_sx);
860 blk->Set_scninfo_idx(scninfo_idx);
869 using namespace sexp;
875 sexp_t* nmidx_sx =
get_elem1(name_idx_sx);
880 sexp_t* knd_sx =
get_next(name_idx_sx);
886 sexp_t* flags_sx =
get_next(knd_sx);
897 using namespace sexp;
903 sexp_t* nmidx_sx =
get_elem1(name_idx_sx);
914 using namespace sexp;
922 UINT32 len = strlen(str) + 1;
925 prefix[0] = (char)len;
930 prefix[0] = (char)0xff;
931 char* lenchar = (
char*)&len;
932 for (
INT i = 0; i < 4; ++i) {
933 prefix[i+1] = lenchar[i];
940 buf.append(prefix, plen);
941 buf.append(str, len);
955 using namespace sexp;
963 buf.append(str, strlen(str) + 1);