windows-nt/Source/XPSP1/NT/sdktools/mep/browser/inc/bscsup.h

107 lines
2.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
// 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);