Line data Source code
1 : /*
2 : Minetest
3 : Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4 :
5 : This program is free software; you can redistribute it and/or modify
6 : it under the terms of the GNU Lesser General Public License as published by
7 : the Free Software Foundation; either version 2.1 of the License, or
8 : (at your option) any later version.
9 :
10 : This program is distributed in the hope that it will be useful,
11 : but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 : GNU Lesser General Public License for more details.
14 :
15 : You should have received a copy of the GNU Lesser General Public License along
16 : with this program; if not, write to the Free Software Foundation, Inc.,
17 : 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 : */
19 :
20 : #ifndef C_TYPES_H_
21 : #define C_TYPES_H_
22 :
23 : extern "C" {
24 : #include "lua.h"
25 : }
26 :
27 : #include <iostream>
28 :
29 : #include "exceptions.h"
30 :
31 : struct EnumString
32 : {
33 : int num;
34 : const char *str;
35 : };
36 :
37 : class StackUnroller
38 : {
39 : private:
40 : lua_State *m_lua;
41 : int m_original_top;
42 : public:
43 4 : StackUnroller(lua_State *L):
44 : m_lua(L),
45 4 : m_original_top(-1)
46 : {
47 4 : m_original_top = lua_gettop(m_lua); // store stack height
48 4 : }
49 4 : ~StackUnroller()
50 4 : {
51 4 : lua_settop(m_lua, m_original_top); // restore stack height
52 4 : }
53 : };
54 :
55 0 : class LuaError : public ServerError
56 : {
57 : public:
58 0 : LuaError(const std::string &s) : ServerError(s) {}
59 : };
60 :
61 :
62 : extern EnumString es_ItemType[];
63 :
64 : #endif /* C_TYPES_H_ */
|