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 : /******************************************************************************/
21 : /******************************************************************************/
22 : /* WARNING!!!! do NOT add this header in any include file or any code file */
23 : /* not being a modapi file!!!!!!!! */
24 : /******************************************************************************/
25 : /******************************************************************************/
26 :
27 : #ifndef S_INTERNAL_H_
28 : #define S_INTERNAL_H_
29 :
30 : #include "common/c_internal.h"
31 : #include "cpp_api/s_base.h"
32 :
33 : #ifdef SCRIPTAPI_LOCK_DEBUG
34 : #include "debug.h" // assert()
35 : class LockChecker {
36 : public:
37 4 : LockChecker(bool* variable) {
38 : assert(*variable == false);
39 :
40 4 : m_variable = variable;
41 4 : *m_variable = true;
42 4 : }
43 8 : ~LockChecker() {
44 4 : *m_variable = false;
45 4 : }
46 : private:
47 : bool* m_variable;
48 : };
49 :
50 : #define SCRIPTAPI_LOCK_CHECK LockChecker(&(this->m_locked))
51 : #else
52 : #define SCRIPTAPI_LOCK_CHECK while(0)
53 : #endif
54 :
55 : #define SCRIPTAPI_PRECHECKHEADER \
56 : JMutexAutoLock(this->m_luastackmutex); \
57 : SCRIPTAPI_LOCK_CHECK; \
58 : realityCheck(); \
59 : lua_State *L = getStack(); \
60 : assert(lua_checkstack(L, 20)); \
61 : StackUnroller stack_unroller(L);
62 :
63 : #endif /* S_INTERNAL_H_ */
64 :
|