|
|
//
// MODULE: APGTSCMD.CPP
//
// PURPOSE: Template string memory manager/allocator
//
// PROJECT: Generic Troubleshooter DLL for Microsoft AnswerPoint
//
// COMPANY: Saltmine Creative, Inc. (206)-633-4743 [email protected]
//
// AUTHOR: Victor Moore
// further work by Roman Mach (RM), Richard Meadows (RWM), Joe Mabel, Oleg Kalosha
//
// ORIGINAL DATE: 8-2-96
//
// NOTES:
// 1. Based on Print Troubleshooter DLL
//
// Version Date By Comments
//--------------------------------------------------------------------
// V0.1 - VM Original
// V0.2 6/4/97 RWM Local Version for Memphis
// V0.3 3/24/98 JM Local Version for NT5//
class HTXCommand { public: HTXCommand(UINT type, const TCHAR *idstr); virtual ~HTXCommand(); Add( HTXCommand command); virtual HTXCommand *Execute(CString *cstr, CInfer *infer); virtual HTXCommand *GetElse(); virtual HTXCommand *GetEndIf(); virtual HTXCommand *GetEndFor(); virtual void SetElse(HTXCommand *elseif); virtual void SetEndIf(HTXCommand *endif); virtual void SetEndFor(HTXCommand *endfor); virtual void GetResource(CString &str, const CString& chm);
void SetStart(UINT pos); void SetEnd(UINT pos); UINT GetStart(); UINT GetEnd(); const TCHAR *GetIDStr(); UINT ReadBeforeStr(UINT before, UINT after, LPCTSTR startstr); UINT ReadAfterStr(UINT before, UINT after, LPCTSTR startstr); TCHAR *GetBeforeStr(); TCHAR *GetAfterStr(); UINT GetBeforeLen(); UINT GetAfterLen(); UINT GetType(); UINT GetStatus(); HTXCommand *GetNext(); void SetNext(HTXCommand *next);
protected: UINT m_type; // ID which identifies this command (e.g. HTX_TYPEENDIF)
BOOL m_error; // can be set true on certain out-of-memory errors
// once set, cannot be cleared
const TCHAR *m_idstr; // string which identifies this command (e.g. HTX_ENDIFSTR, "endif")
// The next 2 are used in identical ways. Might want to abstract an object here.
TCHAR *m_beforehtmlstr; // with m_beforelen, m_beforesize implements a "before" string,
TCHAR *m_afterhtmlstr; // with m_afterlen, m_aftersize implements an "after" string,
protected: UINT m_beforelen; // Logical size in chars
UINT m_afterlen; // Logical size in chars
UINT m_beforesize; // Physical size in bytes
UINT m_aftersize; // Physical size in bytes
UINT m_start; // pointer into HTI file where the "after" text of this command begins
UINT m_end; // pointer into HTI file where the "after" text of this command ends
HTXCommand *m_next; // link to next command (in textual sequence in file).
};
class HTXForCommand: public HTXCommand { public: HTXForCommand(UINT type, TCHAR *idstr, UINT variable); ~HTXForCommand(); HTXCommand *Execute(CString *cstr, CInfer *infer); HTXCommand *GetEndFor(); void SetEndFor(HTXCommand *endfor);
protected: UINT m_var_index; // variable over whose range we iterate
HTXCommand *m_endfor; // associate the corresponding "endfor"
};
class HTXIfCommand: public HTXCommand { public: HTXIfCommand(UINT type, TCHAR *idstr, UINT variable); ~HTXIfCommand(); HTXCommand *Execute(CString *cstr, CInfer *infer); HTXCommand *GetElse(); HTXCommand *GetEndIf(); void SetElse(HTXCommand *elseif); void SetEndIf(HTXCommand *endif);
protected: UINT m_var_index; // conditional variable which determines whether "then" case
// or "else" case appplies
HTXCommand *m_endif; // associate the corresponding "endif"
HTXCommand *m_else; // associate the corresponding "else", if any
};
class HTXDisplayCommand: public HTXCommand { public: HTXDisplayCommand(UINT type, TCHAR *idstr, UINT variable); ~HTXDisplayCommand(); HTXCommand *Execute(CString *cstr, CInfer *infer);
protected: UINT m_var_index; // ID of variable whose value will be displayed in the HTML
};
class HTXResourceCommand: public HTXCommand { public: HTXResourceCommand(UINT type, TCHAR *idstr); virtual ~HTXResourceCommand(); virtual HTXCommand *Execute(CString *cstr, CInfer *infer); virtual void GetResource(CString &str, const CString& chm); void GetResName(LPCTSTR var_name);
protected: UINT m_var_index; // value to evaluate, e.g. PROBLEM_ASK_INDEX,
// RECOMMENDATIONS_INDEX
CString m_strFileName; // file from which we will copy HTML
CString m_strResource; // in-memory copy of that file's contents
};
|