X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Floader%2FInterpreter.h;h=9795a6062961b283d7efcb1e38fe1a2b8756538a;hb=7c43158af1abf38fa896a442cb3c6d8a5bc630e7;hp=9e90bcc4e98fd51d9f7b05594308b689a6df3d01;hpb=2a1d9169e1f6c2dfe0f93ed40d5fb68d3da342af;p=l2e.git diff --git a/src/loader/Interpreter.h b/src/loader/Interpreter.h index 9e90bcc..9795a60 100644 --- a/src/loader/Interpreter.h +++ b/src/loader/Interpreter.h @@ -9,6 +9,7 @@ #define LOADER_INTERPRETER_H_ #include "fwd.h" +#include "PagedAllocator.h" #include "ParsedSource.h" #include "TypeDescription.h" #include "../battle/fwd.h" @@ -36,7 +37,7 @@ public: }; public: - explicit Interpreter(const ParsedSource &source) : source(source) { } + explicit Interpreter(const ParsedSource &source) : source(source), alloc(4096) { } ~Interpreter(); private: Interpreter(const Interpreter &); @@ -66,7 +67,7 @@ public: }; const std::set &ExportedIdentifiers() const { return source.Exports(); } - const ParsedDefinition &GetDefinition(const std::string &identifier) const; + const ParsedDefinition &GetDefinition(const std::string &identifier); const std::map &Images() const { return imageCache; } const std::vector &PostponedDefinitions() const { return postponedDefinitions; } const std::map > &Values() const { return values; } @@ -79,6 +80,11 @@ private: void ReadLiteral(int typeId, int id, char *dest, const Literal &); void *GetObject(int typeId, const Value &value); void ReadObject(int typeId, int id, char *dest, const PropertyList &); + void ReadScript(const std::vector &, common::Script *); + char *ReadScript(const std::vector &); + void ReadScriptAddress(const ScriptToken &t, unsigned char *dest); + void ReadScriptInteger(const ScriptToken &t, unsigned char *dest); + void ReadScriptVector(const ScriptToken &t, unsigned char *dest); SDL_Surface *GetImage(const std::string &); @@ -88,6 +94,8 @@ private: private: const ParsedSource &source; + PagedAllocator alloc; + std::map parsedDefinitions; std::vector postponedDefinitions; std::map imageCache;