107 lines
2.8 KiB
C
107 lines
2.8 KiB
C
|
|
// bscsup.h
|
|
//
|
|
// BSC high level support functions
|
|
//
|
|
|
|
VOID BSC_API StatsBSC(VOID); // ascii dump of bsc statistics
|
|
VOID BSC_API DumpBSC(VOID); // ascii dump of the .bsc file
|
|
VOID BSC_API DumpInst(IINST iinst); // ascii dump of single inst (name + flags)
|
|
LSZ BSC_API LszTypInst(IINST iinst); // ascii version of iinst type
|
|
|
|
VOID BSC_API CallTreeInst (IINST iinst); // call tree from given inst
|
|
BOOL BSC_API FCallTreeLsz(LSZ lszName); // call tree from given name
|
|
|
|
VOID BSC_API RevTreeInst (IINST iinst); // reverse call tree from given inst
|
|
BOOL BSC_API FRevTreeLsz(LSZ lszName); // reverse call tree from given name
|
|
|
|
// Browse OBject
|
|
|
|
typedef DWORD BOB;
|
|
|
|
#define bobNil 0L
|
|
|
|
typedef WORD CLS;
|
|
|
|
#define clsMod 1
|
|
#define clsInst 2
|
|
#define clsRef 3
|
|
#define clsDef 4
|
|
#define clsUse 5
|
|
#define clsUby 6
|
|
#define clsSym 7
|
|
|
|
#define BobFrClsIdx(cls, idx) ((((long)(cls)) << 24) | (idx))
|
|
#define ClsOfBob(bob) (CLS)((bob) >> 24)
|
|
|
|
#define ImodFrBob(bob) ((IMOD)(bob))
|
|
#define IinstFrBob(bob) ((IINST)(bob))
|
|
#define IrefFrBob(bob) ((IREF)((bob) & 0xffffffL))
|
|
#define IdefFrBob(bob) ((IDEF)(bob))
|
|
#define IuseFrBob(bob) ((IUSE)(bob))
|
|
#define IubyFrBob(bob) ((IUBY)(bob))
|
|
#define IsymFrBob(bob) ((ISYM)(bob))
|
|
|
|
#define BobFrMod(x) (BobFrClsIdx(clsMod, (x)))
|
|
#define BobFrSym(x) (BobFrClsIdx(clsSym, (x)))
|
|
#define BobFrInst(x) (BobFrClsIdx(clsInst, (x)))
|
|
#define BobFrRef(x) (BobFrClsIdx(clsDef, (x)))
|
|
#define BobFrDef(x) (BobFrClsIdx(clsRef, (x)))
|
|
#define BobFrUse(x) (BobFrClsIdx(clsUse, (x)))
|
|
#define BobFrUby(x) (BobFrClsIdx(clsUby, (x)))
|
|
|
|
// these are the query types
|
|
//
|
|
typedef enum _qy_ {
|
|
qyFiles, qySymbols, qyContains,
|
|
qyCalls, qyCalledBy, qyUses, qyUsedBy,
|
|
qyUsedIn, qyDefinedIn,
|
|
qyDefs, qyRefs
|
|
} QY;
|
|
|
|
// these are visible so that you can see how the query is progressing
|
|
// you may not write on these -- these values may or may not have anything
|
|
// to do with any database indices
|
|
//
|
|
|
|
extern IDX far idxQyStart;
|
|
extern IDX far idxQyCur;
|
|
extern IDX far idxQyMac;
|
|
|
|
BOOL BSC_API InitBSCQuery (QY qy, BOB bob);
|
|
BOB BSC_API BobNext(VOID);
|
|
|
|
LSZ BSC_API LszNameFrBob(BOB bob);
|
|
BOB BSC_API BobFrName(LSZ lsz);
|
|
|
|
// these are the instance types you can filter on
|
|
// they are called MBF's for historical reasons which are not clear to me
|
|
//
|
|
|
|
typedef WORD MBF;
|
|
|
|
// these may be or'd together
|
|
|
|
#define mbfNil 0
|
|
#define mbfVars 1
|
|
#define mbfFuncs 2
|
|
#define mbfMacros 4
|
|
#define mbfTypes 8
|
|
#define mbfAll 15
|
|
|
|
BOOL BSC_API FInstFilter (IINST iinst, MBF mbf);
|
|
|
|
// show outline for the given files (by imod, or by Pattern)
|
|
//
|
|
VOID BSC_API OutlineMod(IMOD imod, MBF mbfReqd);
|
|
BOOL BSC_API FOutlineModuleLsz (LSZ lszPattern, MBF mbfReqd);
|
|
LSZ BSC_API LszBaseName(LSZ lsz);
|
|
|
|
// list references for all symbols meeting the mbf requirement
|
|
//
|
|
BOOL BSC_API ListRefs (MBF mbfReqd);
|
|
|
|
// DOS style wildcard matching
|
|
//
|
|
BOOL BSC_API FWildMatch(LSZ lszPat, LSZ lszText);
|