|
|
//
//
// DumpBSC - Dump Source Data Base.
// Walk the symbol tree dumping stuff.
//
#include <string.h>
#include <stdio.h>
#if defined(OS2)
#define INCL_NOCOMMON
#define INCL_DOSPROCESS
#define INCL_DOSSEMAPHORES
#define INCL_DOSFILEMGR
#define INCL_DOSERRORS
#define INCL_DOSMISC
#include <os2.h>
#else
#include <windows.h>
#endif
#include <dos.h>
#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"); } } }
|