// // MODULE: CACHEGEN.H // // PURPOSE: Cache Generator Header // // PROJECT: Generic Troubleshooter DLL for Microsoft AnswerPoint // // COMPANY: Saltmine Creative, Inc. (206)-284-7511 support@saltmine.com // // AUTHOR: Roman Mach // // ORIGINAL DATE: 8/7/97 // // NOTES: // 1. >>> Data members in this file could sure use documentation! - JM // // Version Date By Comments //-------------------------------------------------------------------- // V0.2 8/7/97 RM Local Version for Memphis // V0.3 3/24/98 JM Local Version for NT5 // #ifndef __CACHEGEN_H_ #define __CACHEGEN_H_ 1 typedef struct _GTS_CACHE_FILE_HEADER { unsigned char signature[8]; UINT crcdsc; UINT crcself; UINT count; // item count of node data (one item = a set node and rec node structure) UINT netoffset; unsigned char reserved[28]; } GTS_CACHE_FILE_HEADER; // -- property data -- // // property start block typedef struct _GTS_CACHE_PROP_NETSTART_BLK { UINT netpropoffset; UINT netpropcount; UINT nodecountnetwork; UINT nodecountfile; } GTS_CACHE_PROP_NETSTART_BLK; // node item offset block typedef struct _GTS_CACHE_PROP_NODEOFF_BLK { UINT nodeid; UINT nodeoffset; } GTS_CACHE_PROP_NODEOFF_BLK; // node item offset block typedef struct _GTS_CACHE_PROP_NODESTART_BLK { UINT labelnode; UINT nodestringcount; } GTS_CACHE_PROP_NODESTART_BLK; // node item offset block typedef struct _GTS_CACHE_PROP_STR_BLK { UINT nameoffset; UINT stringoffset; } GTS_CACHE_PROP_STR_BLK; #define G_SYMBOLIC_NAME "GSN" #define G_FULL_NAME "GFN" #define G_S0_NAME "GS0" #define G_S1_NAME "GS1" // node property support /* typedef struct _GTS_NODE_SUPPORT { fpos_t ctlposition; fpos_t dataposition; UINT nodeid; ESTDLBL albl; CString sGSymName; CString sGFullName; CString sGState0Name; CString sGState1Name; CString sHProbTxt; CString sHNodeHd; CArray sHNodeTxt; } GTS_NODE_SUPPORT; */ class GTS_NODE_ITEM : public CObject { public: GTS_NODE_ITEM(CString sStringN) { sStringName = sStringN; }; CString sStringName; CStringArray sStringArr; fpos_t ctlposition; fpos_t snameposition; fpos_t sdataposition; }; class GTS_NODE_SUPPORT : public CObject { public: fpos_t ctlposition; fpos_t dataposition; UINT nodeid; UINT albl; CPtrList lData; }; // -- recommendation data -- // typedef struct _GTS_CACHE_NODE { UINT node; // may be more than one UINT if count > 1 UINT state; // may be more than one UINT if count > 1 } GTS_CACHE_NODE; // reference structure for set node and rec node typedef struct _GTS_CACHE_FILE_SETDATA { UINT count; GTS_CACHE_NODE item[1]; // may be more than one UINT if count > 1 } GTS_CACHE_FILE_SETDATA; // reference structure for rec node typedef struct _GTS_CACHE_FILE_RECDATA { UINT count; UINT item[1]; // may be more than one UINT if count > 1 } GTS_CACHE_FILE_RECDATA; // -- node ordering structure typedef struct _GTS_NODE_ORDER { UINT nodeid; int depth; } GTS_NODE_ORDER; // cache item data /* typedef struct _BN_CACHE_ITEM { UINT uNodeCount, uRecCount; UINT *uName; UINT *uValue; UINT *uRec; } BN_CACHE_ITEM; */ #define GTS_CACHE_SIG "TSCACH02" #define STATE_UNKNOWN 102 #define MAX_SYM_NAME_BUF_LEN 500 class GTSCacheGenerator { friend class BCache; public: GTSCacheGenerator( BOOL bScanAll = FALSE, \ const char *szLogFile = NULL, \ const char *szBNTSLogFile = NULL); ~GTSCacheGenerator(); static bool TcharToChar(char szOut[], LPCTSTR szIn, int &OutLen); BOOL ReadCacheFileHeader(CString &sCacheFilename, const CString& strCacheFileWithinCHM); BOOL GetNextCacheEntryFromFile(BOOL &bErr, CBNCache *pCache); BOOL FindNetworkProperty(LPCSTR szName, CString &sResult, int index = 0); BOOL FindNodeProperty(UINT nodeid, LPCSTR szName, CString &sResult, int index = 0); BOOL IsNodePresent(UINT nodeid); int GetNodeCount(); BOOL GetNodeIDFromSymName(LPCTSTR szSymName, UINT &nodeid); BOOL GetLabelOfNode(UINT nodeid, UINT &lbl); protected: BOOL NodeTraverse( FILE *fp, \ BNTS *bp, \ int depth, \ CArray &newnodes, \ CArray &newstates, \ int currnode, \ int currstate); void UninstantiateAll(BNTS *bp); void SetNodes(BNTS *bp, CArray &nodes, CArray &states); void LogOut(TCHAR *szcFormat, ...); BOOL GetNCEFF(BN_CACHE_ITEM *pCacheItem, CBNCache *pCache); void SaveNetItem(CPtrList *nsp, BNTS *bp, FILE *fp, LPCSTR name); protected: BOOL m_bScanAll; UINT m_nCount; UINT m_nItemCount; CArray m_oldnodes; const char *m_szBNTSLogFile; FILE *m_fp; fpos_t m_headposition; UINT m_netstartoffset; char *m_filedata; GTS_NODE_ORDER *m_nodeorder; GTS_CACHE_FILE_SETDATA *m_cachepos; }; #endif