|
|
//========= Copyright � 1996-2005, 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 );
// 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"
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; extern IScriptLib *g_pScriptLib;
#endif // SCRIPLIB_H
|