// // // DumpBSC - Dump Source Data Base. // Walk the symbol tree dumping stuff. // #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" VOID BSC_API DumpBSC() // Dump the contents of the .BSC file to the Output Function // { IMOD imod, imodMac; IMS ims, imsMac; ISYM isym, isymMac, isymT; IINST iinst, iinstMac, iinstT; IDEF idef, idefMac; IREF iref, irefMac; IUSE iuse, iuseMac; IUBY iuby, iubyMac; WORD wLine, cnt; LSZ lsz; imodMac = ImodMac(); BSCPrintf("Modules:\n\n"); for (imod = 0; imod < imodMac; imod++) { BSCPrintf("%s\n", LszNameFrMod(imod)); MsRangeOfMod(imod, &ims, &imsMac); for ( ;ims < imsMac; ims++) { BSCPrintf("\t contains "); DumpInst(IinstOfIms(ims)); BSCPrintf("\n"); } } isymMac = IsymMac(); BSCPrintf("\nSymbols:\n\n"); for (isym = 0; isym < isymMac; isym++) { InstRangeOfSym(isym, &iinst, &iinstMac); for ( ;iinst < iinstMac; iinst++) { TYP typ; ATR atr; DumpInst(iinst); BSCPrintf("\n"); InstInfo(iinst, &isymT, &typ, &atr); if (isym != isymT) BSCPrintf("\t ERROR instance points back to wrong symbol!\n"); DefRangeOfInst(iinst, &idef, &idefMac); for (; idef < idefMac; idef++) { DefInfo(idef, &lsz, &wLine); BSCPrintf ("\t def'd %s(%d)\n", lsz, wLine); } RefRangeOfInst(iinst, &iref, &irefMac); for (; iref < irefMac; iref++) { RefInfo(iref, &lsz, &wLine); BSCPrintf ("\t ref'd %s(%d)\n", lsz, wLine); } UseRangeOfInst(iinst, &iuse, &iuseMac); for (; iuse < iuseMac; iuse++) { BSCPrintf ("\t uses "); UseInfo(iuse, &iinstT, &cnt); DumpInst(iinstT); if (cnt > 1) BSCPrintf("[%d]", cnt); BSCPrintf ("\n"); } UbyRangeOfInst(iinst, &iuby, &iubyMac); for (; iuby < iubyMac; iuby++) { BSCPrintf ("\t used-by "); UbyInfo(iuby, &iinstT, &cnt); DumpInst(iinstT); if (cnt > 1) BSCPrintf("[%d]", cnt); BSCPrintf ("\n"); } BSCPrintf("\n"); } } }