//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $Workfile: $ // $Date: $ // $NoKeywords: $ //=============================================================================// #ifndef SCRIPLIB_H #define SCRIPLIB_H #ifdef _WIN32 #pragma once #endif enum ScriptPathMode_t { SCRIPT_USE_ABSOLUTE_PATH, SCRIPT_USE_RELATIVE_PATH }; // scriplib.h #define MAXTOKEN 1024 extern char token[MAXTOKEN]; extern char *scriptbuffer, *script_p, *scriptend_p; extern int grabbed; extern int scriptline; extern qboolean endofscript; // If pathMode is SCRIPT_USE_ABSOLUTE_PATH, then it uses ExpandPath() on the // filename before trying to open it. Otherwise, it passes the filename straight // into the filesystem (so you can leave it as a relative path). void LoadScriptFile(char *filename, ScriptPathMode_t pathMode = SCRIPT_USE_ABSOLUTE_PATH); void ParseFromMemory(char *buffer, int size); qboolean GetToken(qboolean crossline); qboolean GetExprToken(qboolean crossline); void UnGetToken(void); qboolean TokenAvailable(void); qboolean GetTokenizerStatus(char **pFilename, int *pLine); bool SetCheckSingleCharTokens(bool bCheck); // SCRIPT_LOADED_CALLBACK: // Is called after the contents of a file is loaded. // pFilenameLoaded is the path of a file that got loaded. // pIncludedFromFileName is the name of the parent file or NULL if loaded //because of "LoadScriptFile" toplevel call. nIncludeLineNumber is the //number of the line in the parent file with $include statement or 0 in case of //"LoadScriptFile" typedef void (*SCRIPT_LOADED_CALLBACK)(char const *pFilenameLoaded, char const *pIncludedFromFileName, int nIncludeLineNumber); // SetScriptLoadedCallback: // Sets the new callback for script loading. // Returns the previous callback function. SCRIPT_LOADED_CALLBACK SetScriptLoadedCallback( SCRIPT_LOADED_CALLBACK pfnNewScriptLoadedCallback); #include "tier1/utlstring.h" #include "tier1/utlvector.h" CUtlString SetSingleCharTokenList(const char *pszSingleCharTokenList); class CUtlBuffer; enum DiskWriteMode_t { WRITE_TO_DISK_NEVER, WRITE_TO_DISK_ALWAYS, WRITE_TO_DISK_UPDATE, // file must exist }; struct fileList_t { CUtlString fileName; time_t timeWrite; }; class IScriptLib { public: virtual bool ReadFileToBuffer(const char *pSourceName, CUtlBuffer &buffer, bool bText = false, bool bNoOpenFailureWarning = false) = 0; virtual bool WriteBufferToFile(const char *pTargetName, CUtlBuffer &buffer, DiskWriteMode_t writeMode) = 0; virtual int FindFiles(char *pFileMask, bool bRecurse, CUtlVector &fileList) = 0; virtual char *MakeTemporaryFilename(char const *pchModPath, char *pPath, int pathSize) = 0; virtual void DeleteTemporaryFiles(const char *pFileMask) = 0; virtual int CompareFileTime(const char *pFilenameA, const char *pFilenameB) = 0; virtual bool DoesFileExist(const char *pFilename) = 0; }; extern IScriptLib *scriptlib; #endif // SCRIPLIB_H