98 lines
3.2 KiB
C++
98 lines
3.2 KiB
C++
//========= 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
|