1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #ifndef _SCRIPT_H_
- #define _SCRIPT_H_
- #include "runtime.h"
- #include "core/stream/stream.h"
- #include "module.h"
- #include "core/util/tDictionary.h"
- namespace Con
- {
- inline EvalResult gLastEvalResult;
- inline EvalResult setLastEvalResult(EvalResult pLastEvalResult)
- {
- gLastEvalResult.valid = pLastEvalResult.valid;
- gLastEvalResult.error = pLastEvalResult.error;
- gLastEvalResult.value.setString(pLastEvalResult.value.getString());
- return pLastEvalResult;
- }
- inline EvalResult getLastEvalResult() { return setLastEvalResult((gLastEvalResult)); };
- bool runStream(Stream* byteCode, const char* fileName);
- bool isCurrentScriptToolScript();
- Module* getCurrentModule();
- inline HashMap<S32, Runtime*> gRuntimes;
- inline Runtime* getRuntime(S32 pRuntimeId = 0) { return gRuntimes[pRuntimeId]; }
- inline void registerRuntime(S32 pRuntimeId, Runtime* pRuntime)
- {
- AssertFatal(gRuntimes[pRuntimeId] == NULL, "A runtime with that ID already exists");
- gRuntimes[pRuntimeId] = pRuntime;
- }
- /// Evaluate an arbitrary chunk of code.
- ///
- /// @param script Buffer containing code to execute.
- /// @param echo Should we echo the string to the console?
- /// @param fileName Indicate what file this code is coming from; used in error reporting and such.
- /// NOTE: This function restores the console stack on return.
- inline EvalResult evaluate(const char* script, bool echo = false, const char *fileName = NULL) { return setLastEvalResult(getRuntime()->evaluate(script, echo, fileName)); };
- inline EvalResult evaluate(const char* script, S32 frame, bool echo = false, const char *fileName = NULL) { return setLastEvalResult(getRuntime()->evaluate(script, frame, echo, fileName)); };
- /// Evaluate an arbitrary line of script.
- ///
- /// This wraps dVsprintf(), so you can substitute parameters into the code being executed.
- /// NOTE: This function restores the console stack on return.
- inline EvalResult evaluatef(const char* string, ...)
- {
- char buffer[4096];
- va_list args;
- va_start(args, string);
- dVsprintf(buffer, sizeof(buffer), string, args);
- va_end(args);
- EvalResult result = setLastEvalResult(getRuntime()->evaluate(buffer));
- return result;
- };
- /// Executes a script file and compiles it for use in script.
- ///
- /// @param string File name that is the script to be executed and compiled.
- /// @param fileName Path to the file to execute
- /// @param noCalls Deprecated
- /// @param journalScript Deprecated
- ///
- /// @return True if the script was successfully executed, false if not.
- inline bool executeFile(const char* fileName, bool noCalls, bool journalScript) { return getRuntime()->executeFile(fileName, noCalls, journalScript); };
- }
- #endif
|