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
RevLine 
[1959]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
[5654]24 *      Reto Grieder
[1959]25 *   Co-authors:
26 *      ...
27 *
28 */
29
[7401]30/**
31    @defgroup Lua Lua
32    @ingroup Core
33*/
34
35/**
36    @file
37    @ingroup Lua
38*/
39
[5654]40#ifndef _LuaState_H__
41#define _LuaState_H__
[1959]42
43#include "CorePrereqs.h"
44
[5654]45#include <map>
46#include <sstream>
[3196]47#include <string>
[3370]48#include <vector>
[5654]49#include <boost/shared_ptr.hpp>
[1959]50
[5655]51#include "ToluaInterface.h"
[3370]52
[6417]53namespace orxonox // tolua_export
54{ // tolua_export
[7284]55    class LuaFunctor; // tolua_export
[6417]56
[7284]57    //! callback class that executes lua code
58    class _CoreExport LuaFunctor
[6417]59    {
60        public:
61            LuaFunctor(const std::string& code, LuaState* luaState);
[7284]62            void operator()();
[6417]63
64        private:
65            std::string code_;
66            LuaState*   lua_;
67    };
68
69
[5654]70    /**
71    @brief
72        Representation of an interface to lua
73    */
[6417]74    class _CoreExport LuaState // tolua_export
75    { // tolua_export
[5654]76    public:
77        LuaState();
78        ~LuaState();
[2710]79
[6746]80        bool doFile(const std::string& filename); // tolua_export
81        bool doString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo = shared_ptr<ResourceInfo>());
[1959]82
[6746]83        bool includeFile(const std::string& filename); // tolua_export
84        bool includeString(const std::string& code, const shared_ptr<ResourceInfo>& sourceFileInfo = shared_ptr<ResourceInfo>());
[1959]85
[5654]86        void luaPrint(const std::string& str); // tolua_export
87        void luaLog(unsigned int level, const std::string& message); // tolua_export
[6417]88        bool fileExists(const std::string& filename); // tolua_export
[6746]89        std::string getSourceCode(const std::string& filename); // tolua_export
[2662]90
[5654]91        const std::stringstream& getOutput() const { return output_; }
92        void clearOutput() { output_.clear(); } // tolua_export
[1959]93
[5654]94        void setIncludeParser(std::string (*function)(const std::string&)) { includeParseFunction_ = function; }
95        lua_State* getInternalLuaState() { return luaState_; }
[1959]96
[6417]97        void setDefaultResourceInfo(const shared_ptr<ResourceInfo>& sourceFileInfo) { this->sourceFileInfo_ = sourceFileInfo; }
98        const shared_ptr<ResourceInfo>& getDefaultResourceInfo() { return this->sourceFileInfo_; }
99
[7284]100        LuaFunctor* createLuaFunctor(const std::string& code) { return new LuaFunctor(code, this); } // tolua_export
[6746]101        //! Tells about whether IOConsole was activated. The Lua debugger only works with a normal console.
102        bool usingIOConsole() const; // tolua_export
[6417]103
[5654]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);
[1959]108
[6763]109        static const std::string ERROR_HANDLER_NAME;
110
[5654]111    private:
[6417]112        shared_ptr<ResourceInfo> getFileInfo(const std::string& filename);
[1959]113
[5654]114        std::stringstream output_;
115        lua_State* luaState_;
116        bool bIsRunning_;
117        shared_ptr<ResourceInfo> sourceFileInfo_;
[6746]118        std::map<std::string, std::string> sourceCodeMap_;
[5654]119        std::string (*includeParseFunction_)(const std::string&);
[1959]120
[5654]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
[1959]126
[5654]127#endif /* _LuaState_H__ */
Note: See TracBrowser for help on using the repository browser.