Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/unity_build/src/libraries/core/LuaState.h @ 8672

Last change on this file since 8672 was 8672, checked in by rgrieder, 13 years ago

Removed some includes in the Core header files.
Also removed SubclassIdentifier.h from CoreIncludes (if you ever need an SCI, you will probably use it in a class definition anyway).

  • Property svn:eol-style set to native
File size: 4.2 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Benjamin Knecht
24 *      Reto Grieder
25 *   Co-authors:
26 *      ...
27 *
28 */
29
30/**
31    @defgroup Lua Lua
32    @ingroup Core
33*/
34
35/**
36    @file
37    @ingroup Lua
38*/
39
40#ifndef _LuaState_H__
41#define _LuaState_H__
42
43#include "CorePrereqs.h"
44
45#include <map>
46#include <sstream>
47#include <string>
48#include <vector>
49#include <boost/shared_ptr.hpp>
50
51#include "ToluaInterface.h"
52
53namespace orxonox // tolua_export
54{ // tolua_export
55    class LuaFunctor; // tolua_export
56
57    //! callback class that executes lua code
58    class _CoreExport LuaFunctor
59    {
60        public:
61            LuaFunctor(const std::string& code, LuaState* luaState);
62            void operator()();
63
64        private:
65            std::string code_;
66            LuaState*   lua_;
67    };
68
69
70    /**
71    @brief
72        Representation of an interface to lua
73    */
74    class _CoreExport LuaState // tolua_export
75    { // tolua_export
76    public:
77        LuaState();
78        ~LuaState();
79
80        bool doFile(const std::string& filename); // tolua_export
81        bool doString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo = shared_ptr<ResourceInfo>());
82
83        bool includeFile(const std::string& filename); // tolua_export
84        bool includeString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo = shared_ptr<ResourceInfo>());
85
86        void luaPrint(const std::string& str); // tolua_export
87        void luaLog(unsigned int level, const std::string& message); // tolua_export
88        bool fileExists(const std::string& filename); // tolua_export
89        std::string getSourceCode(const std::string& filename); // tolua_export
90
91        const std::stringstream& getOutput() const { return output_; }
92        void clearOutput() { output_.clear(); } // tolua_export
93
94        void setIncludeParser(std::string (*function)(const std::string&)) { includeParseFunction_ = function; }
95        lua_State* getInternalLuaState() { return luaState_; }
96
97        void setDefaultResourceInfo(const shared_ptr<ResourceInfo>& sourceFileInfo) { this->sourceFileInfo_ = sourceFileInfo; }
98        const shared_ptr<ResourceInfo>& getDefaultResourceInfo() { return this->sourceFileInfo_; }
99
100        LuaFunctor* createLuaFunctor(const std::string& code) { return new LuaFunctor(code, this); } // tolua_export
101        //! Tells about whether IOConsole was activated. The Lua debugger only works with a normal console.
102        bool usingIOConsole() const; // tolua_export
103
104        static bool addToluaInterface(int (*function)(lua_State*), const std::string& name);
105        static bool removeToluaInterface(const std::string& name);
106        static void openToluaInterfaces(lua_State* state);
107        static void closeToluaInterfaces(lua_State* state);
108
109        static const std::string ERROR_HANDLER_NAME;
110
111    private:
112        shared_ptr<ResourceInfo> getFileInfo(const std::string& filename);
113
114        std::stringstream output_;
115        lua_State* luaState_;
116        bool bIsRunning_;
117        shared_ptr<ResourceInfo> sourceFileInfo_;
118        std::map<std::string, std::string> sourceCodeMap_;
119        std::string (*includeParseFunction_)(const std::string&);
120
121        typedef std::map<std::string, int (*)(lua_State *L)> ToluaInterfaceMap;
122        static ToluaInterfaceMap toluaInterfaces_s;
123        static std::vector<LuaState*> instances_s;
124    }; // tolua_export
125} // tolua_export
126
127#endif /* _LuaState_H__ */
Note: See TracBrowser for help on using the repository browser.