long P_[PARSE_MAX_PARAMS]; // used for
passing parameters to Setup routines for the new windows/controls
_TCHAR *str_; // string pointer (only
1 allowed per command)
C_Handler
*Handler_; // pointer to Window Handler (from Setup())
C_Window *Window_;
// pointer to current window (from script)
C_Base *Control_; // pointer to
current control (from script)
C_Font *Font_; // Pointer
to current Font (from script)
C_Image *Image_; // Pointer to current
Image Mgr (from script)
C_Animation *Anim_; // Pointer to
current Animation Mgr (from Script)
C_Sound *Sound_; // Pointer to current
Sound Mgr (from script)
C_PopupMgr *Popup_; // Pointer to Popup
Menu Manager
C_String *String_; // Pointer to String
Manager (from script)
C_Movie *Movie_; // Pointer
to Movie Manager (from script)
long WindowList_[MAX_WINDOWS_IN_LIST];
C_Hash *IDOrder_; // Hash List in
ID order... for finding tokens
C_Hash *TokenOrder_; // Hash List in "Token"
order
char ValueStr[40]; // string to contain values of IDs NOT found in table
FILE *Perror_;
// Current Token;
short tokenlen_;
// Parameters
short P_Idx_; // pointer to current parameter
short WinIndex_,WinLoaded_;
C_Window *WindowParser();
C_Base *ControlParser();
C_Base *PopupParser();
void AddInternalIDs(ID_TABLE tbl[]);
long TokenizeIDs(char *idfile,long size);
void LoadIDTable(char *filename);
public:
C_Parser();
~C_Parser();
void Setup(C_Handler *handler,C_Image
*ImgMgr,C_Font *FontList,C_Sound
*SndMgr,C_PopupMgr *PopupMgr,C_Animation
*AnimMgr,C_String *StringMgr,C_Movie
*MovieMgr);
void Cleanup();
char *FindIDStr(long ID);
long FindID(char *token);
long FindToken(char *token);
void SetCheck(long ID) { if(TokenOrder_)
TokenOrder_->SetCheck(ID); }
void LoadIDList(char *filelist);
BOOL LoadScript(char *filename);
BOOL ParseScript(char *filename);
BOOL LoadWindowList(char *filename);
BOOL LoadSoundList(char *filename);
BOOL LoadStringList(char *filename);
BOOL LoadMovieList(char *filename);
BOOL LoadImageList(char *filename);
BOOL LoadPopupMenuList(char *filename);
C_SoundBite *ParseSoundBite(char *filename);
C_Base *ParseControl(char *filename);
C_Window *ParseWindow(char *filename);
C_Image *ParseImage(char *filename);
C_Sound *ParseSound(char *filename);
C_String *ParseString(char *filename);
C_Movie *ParseMovie(char *filename);
C_Font *ParseFont(char *filename);
C_Base *ParsePopupMenu(char *filename);
C_Hash *GetTokenHash() { return(TokenOrder_);
}
C_Hash *GetIDHash() { return(IDOrder_);
}
long GetFirstWindowLoaded() { WinIndex_=0;
if(WinIndex_ < WinLoaded_) return(WindowList_[WinIndex_]); else return(0);
}
long GetNextWindowLoaded() { WinIndex_++;
if(WinIndex_ < WinLoaded_) return(WindowList_[WinIndex_]); else return(0);
}
long AddNewID(char *label,long);
void LogError(char *str);