VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
luaScriptResourceManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
7 #include <vrfLua/vrfLuaDefines.h>
9 #include <vlutil/vlFilename.h>
10 #include <lua.hpp>
11 #include <list>
12 #include <map>
13 #include <vlutil/vlSmartPointers.h>
14 #include <string>
16 
19 {
20 public:
22  virtual ~DtLuaScriptResourceManager();
23 
26  virtual void initializeNumberOfStates(unsigned numberOfStates);
27 
29  virtual lua_State* getLuaState(int scriptType = DtScriptedTaskScriptedTask);
30 
32  virtual bool loadModule(lua_State* L, const std::string& moduleName);
33 
35  static lua_State* createLuaState(const std::vector<std::string>& scriptPaths, int scriptType = DtScriptedTaskScriptedTask);
36 
38  static bool initializeVRFLuaExtensions(lua_State* L, const std::vector<std::string>& scriptPaths, int scriptType = DtScriptedTaskScriptedTask);
39 
41  static DtScriptResourceManager* creator();
42 
43 protected:
44 
46  virtual std::string findLuaModuleFile(const std::string& filename);
47 
49  virtual void saveBytecodeChunk(lua_State* L, const std::string& chunkName);
50 
51  typedef std::vector<char> DtLuaBytecodeChunk;
52  typedef DtBoost::shared_ptr<DtLuaBytecodeChunk> DtLuaBytecodeChunkPtr;
55  {
58  };
59 
61  virtual void createLuaStates(unsigned numStates);
62 
65 
66  static int luaBytecodeSaveCb(lua_State *L, const void* p, size_t sz, void* ud);
67 
68  static const char* luaBytecodeLoadCb(lua_State *L, void *ud, size_t *size);
69 
70  std::list<lua_State*> myLuaStates;
71  std::map<std::string, DtLuaBytecodeChunkPtr > myLuaBytecodeChunks;
72 };
const int DtScriptedTaskScriptedTask
A class for keeping track of meta data for scripted tasks.
Definition: scriptedTaskMetaData.h:39
voidpf void uLong size
Definition: ioapi.h:39
std::list< lua_State * > myLuaStates
Definition: luaScriptResourceManager.h:70
DtLuaBytecodeChunkPtr bytecodeChunk
Definition: luaScriptResourceManager.h:56
int loadChunkNum
Definition: luaScriptResourceManager.h:57
DtScriptResourceManager & operator=(const DtScriptResourceManager &other)
#define DT_DLL_vrfLua
This file is used to determine how to build.
Definition: vrfLuaDefines.h:25
Struct used as the user data argument with the lua bytecode reader and writer callbacks.
Definition: luaScriptResourceManager.h:54
Manages resources shared by scripts.
Definition: luaScriptResourceManager.h:18
DtBoost::shared_ptr< DtLuaBytecodeChunk > DtLuaBytecodeChunkPtr
Definition: luaScriptResourceManager.h:52
std::map< std::string, DtLuaBytecodeChunkPtr > myLuaBytecodeChunks
Definition: luaScriptResourceManager.h:71
std::vector< char > DtLuaBytecodeChunk
Definition: luaScriptResourceManager.h:51
Manages resources shared by scripts.
Definition: scriptResourceManager.h:15
virtual void initializeNumberOfStates(unsigned numObjects)=0

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)