// // support for instance dumping // #include #include #if defined(OS2) #define INCL_NOCOMMON #define INCL_DOSPROCESS #define INCL_DOSSEMAPHORES #define INCL_DOSFILEMGR #define INCL_DOSERRORS #define INCL_DOSMISC #include #else #include #endif #include #include "hungary.h" #include "bsc.h" #include "bscsup.h" char *ptyptab[] = { "undef", // SBR_TYP_UNKNOWN "function", // SBR_TYP_FUNCTION "label", // SBR_TYP_LABEL "parameter", // SBR_TYP_PARAMETER "variable", // SBR_TYP_VARIABLE "constant", // SBR_TYP_CONSTANT "macro", // SBR_TYP_MACRO "typedef", // SBR_TYP_TYPEDEF "strucnam", // SBR_TYP_STRUCNAM "enumnam", // SBR_TYP_ENUMNAM "enummem", // SBR_TYP_ENUMMEM "unionnam", // SBR_TYP_UNIONNAM "segment", // SBR_TYP_SEGMENT "group", // SBR_TYP_GROUP "program" // SBR_TYP_PROGRAM }; #define C_ATR 11 char *patrtab[] = { "local", // SBR_ATR_LOCAL "static", // SBR_ATR_STATIC "shared", // SBR_ATR_SHARED "near", // SBR_ATR_NEAR "common", // SBR_ATR_COMMON "decl_only", // SBR_ATR_DECL_ONLY "public", // SBR_ATR_PUBLIC "named", // SBR_ATR_NAMED "module", // SBR_ATR_MODULE "?", "?" // reserved for expansion }; VOID BSC_API DumpInst(IINST iinst) // dump a single instance { ISYM isym; WORD i; LSZ lsz; WORD len; TYP typ; ATR atr; len = BSCMaxSymLen(); InstInfo(iinst, &isym, &typ, &atr); lsz = LszNameFrSym(isym); BSCPrintf("%s", lsz); for (i = strlen(lsz); i < len; i++) BSCPrintf(" "); BSCPrintf(" (%s", ptyptab[typ]); for (i=0; i < C_ATR; i++) if (atr & (1<