/////////////////////////////////////////////////////////////////////////////// // This source file is part of the LuaPlus source distribution and is Copyright // 2001-2011 by Joshua C. Jensen (jjensen@workspacewhiz.com). // // The latest version may be obtained from http://luaplus.org/. // // The code presented in this file may be used in any environment it is // acceptable to use Lua. /////////////////////////////////////////////////////////////////////////////// #ifndef LUAPLUS__LUAPLUSINTERNAL_H #define LUAPLUS__LUAPLUSINTERNAL_H extern "C" { #include "lua.h" #include "lauxlib.h" } #if defined(LUA_BUILD_AS_DLL) #define LUAPLUS_API LUA_API #else #define LUAPLUS_API #endif #if LUA_FASTREF_SUPPORT #define LUA_FASTREFNIL (-1999999) LUA_API int lua_fastref (lua_State *L); LUA_API int lua_fastrefindex (lua_State *L, int idx); LUA_API void lua_fastunref (lua_State *L, int ref); LUA_API void lua_getfastref (lua_State *L, int ref); #else #if !defined(LUA_FASTREFNIL) #define LUA_FASTREFNIL LUA_REFNIL #define lua_fastref(L) luaL_ref(L, LUA_REGISTRYINDEX) #define lua_fastrefindex(L, idx) (lua_pushvalue(L, idx), luaL_ref(L, LUA_REGISTRYINDEX)) #define lua_fastunref(L, ref) luaL_unref(L, LUA_REGISTRYINDEX, ref) #define lua_getfastref(L, ref) lua_rawgeti(L, LUA_REGISTRYINDEX, ref) #endif #endif /* LUA_FASTREF_SUPPORT */ #define LUAPLUS_INLINE inline /////////////////////////////////////////////////////////////////////////////// // namespace LuaPlus /////////////////////////////////////////////////////////////////////////////// namespace LuaPlus { class LuaException { public: LuaException(const char* message); ~LuaException(); LuaException(const LuaException& src); LuaException& operator=(const LuaException& src); const char* GetErrorMessage() const { return m_message; } protected: char* m_message; }; //#define luaplus_assert(e) /* empty */ #if defined(__CELLOS_LV2__) && !defined(LUAPLUS_EXCEPTIONS) #define LUAPLUS_EXCEPTIONS 0 #endif class LuaStateOutFile; class LuaState; class LuaStackObject; class LuaObject; class LuaCall; struct LuaArgNil {}; } // namespace LuaPlus #if !LUAPLUS_EXCEPTIONS #include #define luaplus_assert(e) if (!(e)) assert(0) //(void)0 #define luaplus_throw(e) assert(0) //(void)0 #else #define luaplus_assert(e) if (!(e)) throw LuaPlus::LuaException(#e) #define luaplus_throw(e) throw LuaPlus::LuaException(e) #endif #define LuaState_to_lua_State(state) ((lua_State*)(state)) #define lua_State_to_LuaState(L) ((LuaPlus::LuaState*)L) namespace LuaPlus { extern void (*g_errorFunction)(const char* errorMsg); } #endif // LUAPLUS__LUAPLUSINTERNAL_H