VR-Forces Developer's Guide
 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 #include <tbb/mutex.h>
17 
20 {
21 public:
23  virtual ~DtLuaScriptResourceManager() override;
24 
27  virtual void initializeNumberOfStates(unsigned numberOfStates) override;
28 
30  virtual lua_State* getLuaState(int scriptType = DtScriptedTaskScriptedTask);
31 
33  virtual bool loadModule(lua_State* L, const std::string& moduleName);
34 
36  static lua_State* createLuaState(const std::vector<std::string>& scriptPaths, int scriptType = DtScriptedTaskScriptedTask);
37 
39  static bool initializeVRFLuaExtensions(lua_State* L, const std::vector<std::string>& scriptPaths, int scriptType = DtScriptedTaskScriptedTask);
40 
42  static DtScriptResourceManager* creator();
43 
44 protected:
45 
47  virtual std::string findLuaModuleFile(const std::string& filename);
48 
50  virtual void saveBytecodeChunk(lua_State* L, const std::string& chunkName);
51 
52  typedef std::vector<char> DtLuaBytecodeChunk;
53  typedef std::shared_ptr<DtLuaBytecodeChunk> DtLuaBytecodeChunkPtr;
56  {
59  };
60 
62  virtual void createLuaStates(unsigned numStates);
63 
65  static void openLuaLibs(lua_State* L);
66 
69 
70  static int luaBytecodeSaveCb(lua_State *L, const void* p, size_t sz, void* ud);
71 
72  static const char* luaBytecodeLoadCb(lua_State *L, void *ud, size_t *size);
73 
74  std::list<lua_State*> myLuaStates;
75  std::map<std::string, DtLuaBytecodeChunkPtr > myLuaBytecodeChunks;
76 
77  tbb::mutex myBytecodeMutex;
78 };
const int DtScriptedTaskScriptedTask
A class for keeping track of meta data for scripted tasks. The information is currently stored in an ...
Definition: scriptedTaskMetaData.h:42
voidpf void uLong size
Definition: ioapi.h:39
std::list< lua_State * > myLuaStates
Definition: luaScriptResourceManager.h:74
DtLuaBytecodeChunkPtr bytecodeChunk
Definition: luaScriptResourceManager.h:57
int loadChunkNum
Definition: luaScriptResourceManager.h:58
DtScriptResourceManager & operator=(const DtScriptResourceManager &other)
tbb::mutex myBytecodeMutex
Definition: luaScriptResourceManager.h:77
#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:55
Manages resources shared by scripts.
Definition: luaScriptResourceManager.h:19
std::map< std::string, DtLuaBytecodeChunkPtr > myLuaBytecodeChunks
Definition: luaScriptResourceManager.h:75
std::vector< char > DtLuaBytecodeChunk
Definition: luaScriptResourceManager.h:52
Manages resources shared by scripts.
Definition: scriptResourceManager.h:15
virtual void initializeNumberOfStates(unsigned numObjects)=0
std::shared_ptr< DtLuaBytecodeChunk > DtLuaBytecodeChunkPtr
Definition: luaScriptResourceManager.h:53

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)