mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.1 KiB
100 lines
3.1 KiB
//////////////////////////////////////////////////////////////////////////////
|
|
// Mod implementation declarations
|
|
|
|
struct Mod1 : public Mod { // Mod (one module's debug info) implementation
|
|
public:
|
|
INTV QueryInterfaceVersion();
|
|
IMPV QueryImplementationVersion();
|
|
BOOL AddTypes(PB pbTypes, CB cb);
|
|
BOOL AddSymbols(PB pbSym, CB cb);
|
|
BOOL AddPublic(SZ_CONST szPublic, ISECT isect, OFF off);
|
|
BOOL AddLines(SZ_CONST szSrc, ISECT isect, OFF offCon, CB cbCon, OFF doff, LINE lineStart, PB pbCoff, CB cbCoff);
|
|
BOOL AddSecContrib(ISECT isect, OFF off, CB cb, DWORD dwCharacteristics);
|
|
BOOL QueryCBName(OUT CB* pcb);
|
|
BOOL QueryName(OUT char szName[_MAX_PATH], OUT CB* pcb);
|
|
BOOL QueryCBFile(OUT CB* pcb);
|
|
BOOL QueryFile(OUT char szFile[_MAX_PATH], OUT CB* pcb);
|
|
BOOL QuerySymbols(PB pbSym, CB* pcb);
|
|
BOOL QueryLines(PB pbLines, CB* pcb);
|
|
BOOL SetPvClient(void *pvClient_)
|
|
{
|
|
pvClient = pvClient_;
|
|
return TRUE;
|
|
}
|
|
BOOL GetPvClient(OUT void** ppvClient_)
|
|
{
|
|
*ppvClient_ = pvClient;
|
|
return TRUE;
|
|
}
|
|
BOOL QuerySecContrib(OUT ISECT* pisect, OUT OFF* poff, OUT CB* pcb, OUT DWORD* pdwCharacteristics);
|
|
BOOL QueryDBI(OUT DBI** ppdbi)
|
|
{
|
|
*ppdbi = pdbi1;
|
|
return TRUE;
|
|
}
|
|
BOOL QueryImod(OUT IMOD* pimod)
|
|
{
|
|
*pimod = ximodForImod(imod);
|
|
return TRUE;
|
|
}
|
|
BOOL Close();
|
|
private:
|
|
enum {impv = (IMPV) 930803};
|
|
|
|
PDB1* ppdb1;
|
|
DBI1* pdbi1;
|
|
IMOD imod;
|
|
MLI* pmli;
|
|
TM* ptm;
|
|
void* pvClient;
|
|
USHORT fSymsAdded : 1;
|
|
USHORT unused : 15;
|
|
Buffer bufSyms;
|
|
Buffer bufLines;
|
|
Buffer bufFpo;
|
|
Buffer bufSymsOut;
|
|
Buffer bufGlobalRefs;
|
|
SC sc;
|
|
|
|
Mod1(PDB1* ppdb1_, DBI1* pdbi1_, IMOD imod_);
|
|
~Mod1();
|
|
BOOL fInit();
|
|
BOOL fCommit();
|
|
BOOL fUpdateLines();
|
|
BOOL fUpdateSyms();
|
|
inline BOOL fUpdateSecContrib();
|
|
BOOL fProcessSyms();
|
|
BOOL fProcessGlobalRefs();
|
|
BOOL fEnsureSn(SN* psn)
|
|
{
|
|
return ppdb1->fEnsureSn(psn);
|
|
}
|
|
|
|
BOOL fEnsureNoSn(SN* psn)
|
|
{
|
|
return ppdb1->fEnsureNoSn(psn);
|
|
}
|
|
|
|
BOOL fUpdateFileInfo();
|
|
BOOL initFileInfo(IFILE ifileMac) { return pdbi1->initFileInfo(imod, ifileMac); }
|
|
BOOL addFileInfo(IFILE ifile, SZ_CONST szFile);
|
|
BOOL fReadPbCb(PB pb, CB* pcb, OFF off, CB cb);
|
|
CB cbGlobalRefs();
|
|
BOOL queryGlobalRefs(PB pbGlobalRefs, CB cb);
|
|
BOOL fUdtIsDefn(PSYM psym);
|
|
BOOL packType(PSYM psym);
|
|
inline BOOL fCopySymOut(PSYM psym);
|
|
inline BOOL fCopySymOut(PSYM psym, PSYM * ppsymOut);
|
|
inline BOOL fCopyGlobalRef(OFF off);
|
|
inline void EnterLevel(PSYM psym);
|
|
inline void ExitLevel(PSYM psym);
|
|
|
|
SZ szObjFile() { return pdbi1->pmodiForImod(imod)->szObjFile(); }
|
|
SZ szModule() { return pdbi1->pmodiForImod(imod)->szModule(); }
|
|
CB cbSyms() { return pdbi1->pmodiForImod(imod)->cbSyms; }
|
|
CB cbLines() { return pdbi1->pmodiForImod(imod)->cbLines; }
|
|
CB cbFpo() { return pdbi1->pmodiForImod(imod)->cbFpo; }
|
|
|
|
friend BOOL DBI1::openModByImod(IMOD imod, OUT Mod** ppmod);
|
|
friend BOOL MLI::EmitFileInfo(Mod1* pmod1);
|
|
};
|