diff options
Diffstat (limited to 'utils/common/scriplib.h')
| -rw-r--r-- | utils/common/scriplib.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/utils/common/scriplib.h b/utils/common/scriplib.h new file mode 100644 index 0000000..114b556 --- /dev/null +++ b/utils/common/scriplib.h @@ -0,0 +1,96 @@ +//========= 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_t> &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 |