@ -16,7 +16,6 @@
# include "nel/gui/lua_helper.h"
using namespace NLGUI ;
# include <algorithm>
@ -92,8 +91,11 @@ std::ostream &operator<<(std::ostream &str, const ucstring &value)
return str < < value . toString ( ) ;
}
struct CMiscFunctions
namespace NLGUI
{
struct CMiscFunctions
{
static std : : string fileLookup ( const std : : string & fileName )
{
return NLMISC : : CPath : : lookup ( fileName , false ) ;
@ -106,23 +108,23 @@ struct CMiscFunctions
# endif
# endif
}
} ;
} ;
// ***************************************************************************
bool CLuaIHM : : pop ( CLuaState & ls , NLMISC : : CRGBA & dest )
{
// ***************************************************************************
bool CLuaIHM : : pop ( CLuaState & ls , NLMISC : : CRGBA & dest )
{
//H_AUTO(Lua_CLuaIHM_pop)
try
{
if ( ls . isNil ( - 1 ) ) return false ;
# if LUABIND_VERSION > 600
# if LUABIND_VERSION > 600
luabind : : object obj ( luabind : : from_stack ( ls . getStatePointer ( ) , - 1 ) ) ;
ls . pop ( ) ;
# else
# else
luabind : : object obj ( ls . getStatePointer ( ) ) ;
obj . set ( ) ;
# endif
# endif
dest = luabind : : object_cast < NLMISC : : CRGBA > ( obj ) ;
}
catch ( const luabind : : cast_failed & )
@ -130,22 +132,22 @@ bool CLuaIHM::pop(CLuaState &ls, NLMISC::CRGBA &dest)
return false ;
}
return true ;
}
}
// ***************************************************************************
bool CLuaIHM : : pop ( CLuaState & ls , NLMISC : : CVector2f & dest )
{
// ***************************************************************************
bool CLuaIHM : : pop ( CLuaState & ls , NLMISC : : CVector2f & dest )
{
//H_AUTO(Lua_CLuaIHM_pop)
try
{
if ( ls . isNil ( - 1 ) ) return false ;
# if LUABIND_VERSION > 600
# if LUABIND_VERSION > 600
luabind : : object obj ( luabind : : from_stack ( ls . getStatePointer ( ) , - 1 ) ) ;
ls . pop ( ) ;
# else
# else
luabind : : object obj ( ls . getStatePointer ( ) ) ;
obj . set ( ) ;
# endif
# endif
dest = luabind : : object_cast < NLMISC : : CVector2f > ( obj ) ;
}
catch ( const luabind : : cast_failed & )
@ -153,22 +155,22 @@ bool CLuaIHM::pop(CLuaState &ls,NLMISC::CVector2f &dest)
return false ;
}
return true ;
}
}
// ***************************************************************************
bool CLuaIHM : : pop ( CLuaState & ls , ucstring & dest )
{
// ***************************************************************************
bool CLuaIHM : : pop ( CLuaState & ls , ucstring & dest )
{
//H_AUTO(Lua_CLuaIHM_pop)
try
{
if ( ls . isNil ( - 1 ) ) return false ;
# if LUABIND_VERSION > 600
# if LUABIND_VERSION > 600
luabind : : object obj ( luabind : : from_stack ( ls . getStatePointer ( ) , - 1 ) ) ;
ls . pop ( ) ;
# else
# else
luabind : : object obj ( ls . getStatePointer ( ) ) ;
obj . set ( ) ;
# endif
# endif
dest = luabind : : object_cast < ucstring > ( obj ) ;
}
catch ( const luabind : : cast_failed & )
@ -176,69 +178,71 @@ bool CLuaIHM::pop(CLuaState &ls, ucstring &dest)
return false ;
}
return true ;
}
}
// ***************************************************************************
bool CLuaIHM : : isUCStringOnStack ( CLuaState & ls , sint index )
{
// ***************************************************************************
bool CLuaIHM : : isUCStringOnStack ( CLuaState & ls , sint index )
{
//H_AUTO(Lua_CLuaIHM_isUCStringOnStack)
ls . pushValue ( index ) ;
ucstring dummy ;
return pop ( ls , dummy ) ;
}
}
// ***************************************************************************
bool CLuaIHM : : getUCStringOnStack ( CLuaState & ls , sint index , ucstring & dest )
{
// ***************************************************************************
bool CLuaIHM : : getUCStringOnStack ( CLuaState & ls , sint index , ucstring & dest )
{
//H_AUTO(Lua_CLuaIHM_getUCStringOnStack)
ls . pushValue ( index ) ;
return pop ( ls , dest ) ;
}
}
// ***************************************************************************
void CLuaIHM : : push ( CLuaState & ls , const ucstring & value )
{
// ***************************************************************************
void CLuaIHM : : push ( CLuaState & ls , const ucstring & value )
{
//H_AUTO(Lua_CLuaIHM_push)
# if LUABIND_VERSION > 600
# if LUABIND_VERSION > 600
luabind : : detail : : push ( ls . getStatePointer ( ) , value ) ;
# else
# else
luabind : : object obj ( ls . getStatePointer ( ) , value ) ;
obj . pushvalue ( ) ;
# endif
}
# endif
}
// ***************************************************************************
// ***************************************************************************
// CInterface To LUA Registry
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// CInterface To LUA Registry
// ***************************************************************************
// ***************************************************************************
CLuaState * ELuaIHMException : : getLuaState ( )
{
CLuaState * ELuaIHMException : : getLuaState ( )
{
return CLuaManager : : getInstance ( ) . getLuaState ( ) ;
}
}
// ***************************************************************************
# define LUA_REGISTER_BASIC(_type_) \
luabind : : detail : : yes_t is_user_defined ( luabind : : detail : : by_value < _type_ > ) ; \
_type_ convert_lua_to_cpp ( lua_State * L , luabind : : detail : : by_value < _type_ > , int index ) \
{ \
// ***************************************************************************
# define LUA_REGISTER_BASIC(_type_) \
luabind : : detail : : yes_t is_user_defined ( luabind : : detail : : by_value < _type_ > ) ; \
_type_ convert_lua_to_cpp ( lua_State * L , luabind : : detail : : by_value < _type_ > , int index ) \
{ \
return ( _type_ ) lua_tonumber ( L , index ) ; \
} \
int match_lua_to_cpp ( lua_State * L , luabind : : detail : : by_value < _type_ > , int index ) \
{ \
} \
int match_lua_to_cpp ( lua_State * L , luabind : : detail : : by_value < _type_ > , int index ) \
{ \
if ( lua_isnumber ( L , index ) ) return 0 ; else return - 1 ; \
} \
void convert_cpp_to_lua ( lua_State * L , const _type_ & v ) \
{ \
} \
void convert_cpp_to_lua ( lua_State * L , const _type_ & v ) \
{ \
lua_pushnumber ( L , ( double ) v ) ; \
}
}
// Basic LUA types
namespace luabind
{
// Basic LUA types
namespace luabind
{
namespace converters
{
LUA_REGISTER_BASIC ( sint8 )
@ -247,14 +251,17 @@ namespace luabind
LUA_REGISTER_BASIC ( uint16 )
LUA_REGISTER_BASIC ( sint32 )
LUA_REGISTER_BASIC ( uint32 )
// LUA_REGISTER_BASIC(sint)
// LUA_REGISTER_BASIC(uint)
// LUA_REGISTER_BASIC(sint)
// LUA_REGISTER_BASIC(uint)
}
}
}
// ***************************************************************************
void CLuaIHM : : registerBasics ( CLuaState & ls )
namespace NLGUI
{
// ***************************************************************************
void CLuaIHM : : registerBasics ( CLuaState & ls )
{
//H_AUTO(Lua_CLuaIHM_registerBasics)
using namespace luabind ;
lua_State * L = ls . getStatePointer ( ) ;
@ -283,7 +290,7 @@ void CLuaIHM::registerBasics(CLuaState &ls)
. def ( const_self + other < const std : : string > ( ) )
. def ( other < const std : : string > ( ) + const_self )
// NB nico : luabind crash not solved here -> use concatUCString as a replacement
// .def(const_self + other<const ucstring &>())
// .def(const_self + other<const ucstring &>())
. def ( const_self < other < const ucstring & > ( ) )
. def ( const_self = = other < const ucstring & > ( ) )
. def ( " toUtf8 " , & ucstring : : toUtf8 )
@ -303,12 +310,12 @@ void CLuaIHM::registerBasics(CLuaState &ls)
. def_readwrite ( " y " , & NLMISC : : CVector2f : : y )
] ;
}
}
// ***************************************************************************
int CLuaIHM : : luaMethodCall ( lua_State * ls )
{
// ***************************************************************************
int CLuaIHM : : luaMethodCall ( lua_State * ls )
{
//H_AUTO(Lua_CLuaIHM_luaMethodCall)
nlassert ( ls ) ;
const CReflectedProperty * prop = ( const CReflectedProperty * ) lua_touserdata ( ls , lua_upvalueindex ( 1 ) ) ;
@ -351,11 +358,11 @@ int CLuaIHM::luaMethodCall(lua_State *ls)
lua_error ( ls ) ;
}
return numResults ;
}
}
// ***************************************************************************
void CLuaIHM : : luaValueFromReflectedProperty ( CLuaState & ls , CReflectable & reflectedObject , const CReflectedProperty & property )
{
// ***************************************************************************
void CLuaIHM : : luaValueFromReflectedProperty ( CLuaState & ls , CReflectable & reflectedObject , const CReflectedProperty & property )
{
//H_AUTO(Lua_CLuaIHM_luaValueFromReflectedProperty)
switch ( property . Type )
{
@ -374,23 +381,23 @@ void CLuaIHM::luaValueFromReflectedProperty(CLuaState &ls, CReflectable &reflect
case CReflectedProperty : : UCString :
{
ucstring str = ( reflectedObject . * ( property . GetMethod . GetUCString ) ) ( ) ;
# if LUABIND_VERSION > 600
# if LUABIND_VERSION > 600
luabind : : detail : : push ( ls . getStatePointer ( ) , str ) ;
# else
# else
luabind : : object obj ( ls . getStatePointer ( ) , str ) ;
obj . pushvalue ( ) ;
# endif
# endif
}
break ;
case CReflectedProperty : : RGBA :
{
CRGBA color = ( reflectedObject . * ( property . GetMethod . GetRGBA ) ) ( ) ;
# if LUABIND_VERSION > 600
# if LUABIND_VERSION > 600
luabind : : detail : : push ( ls . getStatePointer ( ) , color ) ;
# else
# else
luabind : : object obj ( ls . getStatePointer ( ) , color ) ;
obj . pushvalue ( ) ;
# endif
# endif
}
break ;
case CReflectedProperty : : LuaMethod :
@ -411,14 +418,14 @@ void CLuaIHM::luaValueFromReflectedProperty(CLuaState &ls, CReflectable &reflect
nlstop ;
break ;
}
}
}
static CLuaString lstr_Env ( " Env " ) ;
static CLuaString lstr_isNil ( " isNil " ) ;
static CLuaString lstr_Env ( " Env " ) ;
static CLuaString lstr_isNil ( " isNil " ) ;
// ***************************************************************************
void CLuaIHM : : luaValueToReflectedProperty ( CLuaState & ls , int stackIndex , CReflectable & target , const CReflectedProperty & property ) throw ( ELuaIHMException )
{
// ***************************************************************************
void CLuaIHM : : luaValueToReflectedProperty ( CLuaState & ls , int stackIndex , CReflectable & target , const CReflectedProperty & property ) throw ( ELuaIHMException )
{
//H_AUTO(Lua_property_throw)
if ( ls . isNil ( stackIndex ) )
throw ELuaIHMException ( " Trying to set nil to UI property '%s' " , property . Name . c_str ( ) ) ;
@ -492,12 +499,12 @@ void CLuaIHM::luaValueToReflectedProperty(CLuaState &ls, int stackIndex, CReflec
default :
nlstop ;
}
}
}
// ***************************************************************************
void CLuaIHM : : createLuaEnumTable ( CLuaState & ls , const std : : string & str )
{
// ***************************************************************************
void CLuaIHM : : createLuaEnumTable ( CLuaState & ls , const std : : string & str )
{
//H_AUTO(Lua_CLuaIHM_createLuaEnumTable)
std : : string path = " " , script , p ;
CSString s = str ;
@ -513,9 +520,9 @@ void CLuaIHM::createLuaEnumTable(CLuaState &ls, const std::string &str)
ls . executeScript ( script ) ;
p = s . splitTo ( ' . ' , true ) ;
}
}
}
# define LUABIND_ENUM(__enum__, __name__, __num__, __toStringFunc__) \
# define LUABIND_ENUM(__enum__, __name__, __num__, __toStringFunc__) \
createLuaEnumTable ( ls , __name__ ) ; \
for ( uint e = 0 ; e < __num__ ; e + + ) \
{ \
@ -524,11 +531,11 @@ void CLuaIHM::createLuaEnumTable(CLuaState &ls, const std::string &str)
ls . executeScript ( temp ) ; \
} \
// ***************************************************************************
# define LUABIND_FUNC(__func__) luabind::def(#__func__, &__func__)
// ***************************************************************************
# define LUABIND_FUNC(__func__) luabind::def(#__func__, &__func__)
void CLuaIHM : : registerIHM ( CLuaState & ls )
{
void CLuaIHM : : registerIHM ( CLuaState & ls )
{
//H_AUTO(Lua_CLuaIHM_registerIHM)
CLuaStackChecker lsc ( & ls ) ;
@ -581,33 +588,33 @@ void CLuaIHM::registerIHM(CLuaState &ls)
luabind : : def ( " getLocalTime " , getLocalTime ) // NB : use CLuaIHM::getLocalTime instead of NLMISC::CTime::getLocalTime, because the NLMISC
// version returns a uint64, which can't be casted into lua numbers (doubles ...)
] ;
}
}
// ***************************************************************************
double CLuaIHM : : getPreciseLocalTime ( )
{
// ***************************************************************************
double CLuaIHM : : getPreciseLocalTime ( )
{
//H_AUTO(Lua_CLuaIHM_getPreciseLocalTime)
// don't export these 2 function to lua directly here, because all uint64 can't be represented with lua 'numbers'
return NLMISC : : CTime : : ticksToSecond ( NLMISC : : CTime : : getPerformanceTime ( ) ) ;
}
}
// ***************************************************************************
void CLuaIHM : : registerAll ( CLuaState & ls )
{
// ***************************************************************************
void CLuaIHM : : registerAll ( CLuaState & ls )
{
//H_AUTO(Lua_CLuaIHM_registerAll)
registerBasics ( ls ) ;
registerIHM ( ls ) ;
}
}
//#define CHECK_REFLECTABLE_MT
//#define CHECK_REFLECTABLE_MT
// ***************************************************************************
void CLuaIHM : : pushReflectableOnStack ( CLuaState & ls , class CReflectableRefPtrTarget * pRPT )
{
// ***************************************************************************
void CLuaIHM : : pushReflectableOnStack ( CLuaState & ls , class CReflectableRefPtrTarget * pRPT )
{
//H_AUTO(Lua_CLuaIHM_pushReflectableOnStack)
nlassert ( pRPT ) ;
CLuaStackChecker lsc ( & ls , 1 ) ;
@ -653,7 +660,7 @@ void CLuaIHM::pushReflectableOnStack(CLuaState &ls, class CReflectableRefPtrTa
}
// Check that the metatable is correct
# ifdef CHECK_REFLECTABLE_MT
# ifdef CHECK_REFLECTABLE_MT
nlverify ( ls . getMetaTable ( - 1 ) ) ; // userdata __ui_metatable
ls . push ( " __index " ) ;
ls . getTable ( - 2 ) ;
@ -665,13 +672,13 @@ void CLuaIHM::pushReflectableOnStack(CLuaState &ls, class CReflectableRefPtrTa
nlassert ( ls . isCFunction ( - 2 ) ) ;
nlassert ( ls . isCFunction ( - 3 ) ) ;
ls . pop ( 4 ) ;
# endif
# endif
//ls.dumpStack();
}
}
// ***************************************************************************
bool CLuaIHM : : isReflectableOnStack ( CLuaState & ls , sint index )
{
// ***************************************************************************
bool CLuaIHM : : isReflectableOnStack ( CLuaState & ls , sint index )
{
//H_AUTO(Lua_CLuaIHM_isReflectableOnStack)
CLuaStackChecker lsc ( & ls ) ;
@ -690,11 +697,11 @@ bool CLuaIHM::isReflectableOnStack(CLuaState &ls, sint index)
ls . pop ( ) ;
return ok ;
}
}
// ***************************************************************************
CReflectableRefPtrTarget * CLuaIHM : : getReflectableOnStack ( CLuaState & ls , sint index )
{
// ***************************************************************************
CReflectableRefPtrTarget * CLuaIHM : : getReflectableOnStack ( CLuaState & ls , sint index )
{
//H_AUTO(Lua_CLuaIHM_getReflectableOnStack)
if ( ! isReflectableOnStack ( ls , index ) )
return NULL ;
@ -702,67 +709,67 @@ CReflectableRefPtrTarget *CLuaIHM::getReflectableOnStack(CLuaState &ls, sint
CReflectableLuaRef * p = ( CReflectableLuaRef * ) ls . toUserData ( index ) ;
nlassert ( p - > Ptr ) ;
return p - > Ptr ;
}
}
// ***************************************************************************
// ***************************************************************************
// LUA IHM Functions
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// LUA IHM Functions
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
uint32 CLuaIHM : : getLocalTime ( )
{
// ***************************************************************************
uint32 CLuaIHM : : getLocalTime ( )
{
//H_AUTO(Lua_CLuaIHM_getLocalTime)
return ( uint32 ) NLMISC : : CTime : : getLocalTime ( ) ;
}
}
// ***************************************************************************
std : : string CLuaIHM : : findReplaceAll ( const std : : string & str , const std : : string & search , const std : : string & replace )
{
// ***************************************************************************
std : : string CLuaIHM : : findReplaceAll ( const std : : string & str , const std : : string & search , const std : : string & replace )
{
//H_AUTO(Lua_CLuaIHM_findReplaceAll)
std : : string ret = str ;
while ( strFindReplace ( ret , search , replace ) ) ;
return ret ;
}
}
// ***************************************************************************
ucstring CLuaIHM : : findReplaceAll ( const ucstring & str , const ucstring & search , const ucstring & replace )
{
// ***************************************************************************
ucstring CLuaIHM : : findReplaceAll ( const ucstring & str , const ucstring & search , const ucstring & replace )
{
//H_AUTO(Lua_CLuaIHM_findReplaceAll)
ucstring ret = str ;
while ( strFindReplace ( ret , search , replace ) ) ;
return ret ;
}
}
// ***************************************************************************
ucstring CLuaIHM : : findReplaceAll ( const ucstring & str , const std : : string & search , const std : : string & replace )
{
// ***************************************************************************
ucstring CLuaIHM : : findReplaceAll ( const ucstring & str , const std : : string & search , const std : : string & replace )
{
//H_AUTO(Lua_CLuaIHM_findReplaceAll)
return findReplaceAll ( str , ucstring ( search ) , ucstring ( replace ) ) ;
}
}
// ***************************************************************************
ucstring CLuaIHM : : findReplaceAll ( const ucstring & str , const std : : string & search , const ucstring & replace )
{
// ***************************************************************************
ucstring CLuaIHM : : findReplaceAll ( const ucstring & str , const std : : string & search , const ucstring & replace )
{
//H_AUTO(Lua_CLuaIHM_findReplaceAll)
return findReplaceAll ( str , ucstring ( search ) , ucstring ( replace ) ) ;
}
}
// ***************************************************************************
ucstring CLuaIHM : : findReplaceAll ( const ucstring & str , const ucstring & search , const std : : string & replace )
{
// ***************************************************************************
ucstring CLuaIHM : : findReplaceAll ( const ucstring & str , const ucstring & search , const std : : string & replace )
{
//H_AUTO(Lua_CLuaIHM_findReplaceAll)
return findReplaceAll ( str , ucstring ( search ) , ucstring ( replace ) ) ;
}
}
// ***************************************************************************
void CLuaIHM : : fails ( CLuaState & ls , const char * format , . . . )
{
// ***************************************************************************
void CLuaIHM : : fails ( CLuaState & ls , const char * format , . . . )
{
//H_AUTO(Lua_CLuaIHM_fails)
std : : string reason ;
NLMISC_CONVERT_VARGS ( reason , format , NLMISC : : MaxCStringSize ) ;
@ -770,52 +777,52 @@ void CLuaIHM::fails(CLuaState &ls, const char *format, ...)
ls . getStackAsString ( stack ) ;
// use a std::exception, to avoid Nel Exception warning
throw ELuaIHMException ( " %s. Lua stack = \n %s " , reason . c_str ( ) , stack . c_str ( ) ) ;
}
}
// ***************************************************************************
void CLuaIHM : : checkArgCount ( CLuaState & ls , const char * funcName , uint nArgs )
{
// ***************************************************************************
void CLuaIHM : : checkArgCount ( CLuaState & ls , const char * funcName , uint nArgs )
{
//H_AUTO(Lua_CLuaIHM_checkArgCount)
if ( ls . getTop ( ) ! = ( sint ) nArgs )
{
fails ( ls , " %s() need exactly %d arguments (tips : check between method & function call) " , funcName , nArgs ) ;
}
}
}
// ***************************************************************************
void CLuaIHM : : checkArgMin ( CLuaState & ls , const char * funcName , uint nArgs )
{
// ***************************************************************************
void CLuaIHM : : checkArgMin ( CLuaState & ls , const char * funcName , uint nArgs )
{
//H_AUTO(Lua_CLuaIHM_checkArgMin)
if ( ls . getTop ( ) < ( sint ) nArgs )
{
fails ( ls , " %s() need at least %d arguments (tips : check between method & function call) " , funcName , nArgs ) ;
}
}
}
// ***************************************************************************
void CLuaIHM : : checkArgMax ( CLuaState & ls , const char * funcName , uint nArgs )
{
// ***************************************************************************
void CLuaIHM : : checkArgMax ( CLuaState & ls , const char * funcName , uint nArgs )
{
//H_AUTO(Lua_CLuaIHM_checkArgMax)
if ( ls . getTop ( ) > ( sint ) nArgs )
{
fails ( ls , " %s() need at most %d arguments. " , funcName , nArgs ) ;
}
}
}
// ***************************************************************************
void CLuaIHM : : check ( CLuaState & ls , bool ok , const std : : string & failReason )
{
// ***************************************************************************
void CLuaIHM : : check ( CLuaState & ls , bool ok , const std : : string & failReason )
{
//H_AUTO(Lua_CLuaIHM_check)
if ( ! ok )
{
fails ( ls , failReason . c_str ( ) ) ;
}
}
}
// ***************************************************************************
void CLuaIHM : : checkArgType ( CLuaState & ls , const char * funcName , uint index , int argType )
{
// ***************************************************************************
void CLuaIHM : : checkArgType ( CLuaState & ls , const char * funcName , uint index , int argType )
{
//H_AUTO(Lua_CLuaIHM_checkArgType)
nlassert ( index > 0 ) ;
if ( ls . getTop ( ) < ( int ) index )
@ -826,11 +833,11 @@ void CLuaIHM::checkArgType(CLuaState &ls, const char *funcName, uint index,
{
fails ( ls , " %s : argument %d of expected type %s has bad type : %s " , funcName , index , ls . getTypename ( argType ) , ls . getTypename ( ls . type ( index ) ) , ls . type ( index ) ) ;
}
}
}
// ***************************************************************************
void CLuaIHM : : checkArgTypeRGBA ( CLuaState & ls , const char * funcName , uint index )
{
// ***************************************************************************
void CLuaIHM : : checkArgTypeRGBA ( CLuaState & ls , const char * funcName , uint index )
{
//H_AUTO(Lua_CLuaIHM_checkArgTypeRGBA)
nlassert ( index > 0 ) ;
if ( ls . getTop ( ) < ( int ) index )
@ -843,11 +850,11 @@ void CLuaIHM::checkArgTypeRGBA(CLuaState &ls, const char *funcName, uint index)
{
fails ( ls , " %s : argument %d of expected type RGBA has bad type : %s " , funcName , index , ls . getTypename ( ls . type ( index ) ) , ls . type ( index ) ) ;
}
}
}
// ***************************************************************************
void CLuaIHM : : checkArgTypeUCString ( CLuaState & ls , const char * funcName , uint index )
{
// ***************************************************************************
void CLuaIHM : : checkArgTypeUCString ( CLuaState & ls , const char * funcName , uint index )
{
//H_AUTO(Lua_CLuaIHM_checkArgTypeUCString)
nlassert ( index > 0 ) ;
if ( ls . getTop ( ) < ( int ) index )
@ -860,23 +867,23 @@ void CLuaIHM::checkArgTypeUCString(CLuaState &ls, const char *funcName, uint ind
{
fails ( ls , " %s : argument %d of expected type ucstring has bad type : %s " , funcName , index , ls . getTypename ( ls . type ( index ) ) , ls . type ( index ) ) ;
}
}
}
// ***************************************************************************
bool CLuaIHM : : popString ( CLuaState & ls , std : : string & dest )
{
// ***************************************************************************
bool CLuaIHM : : popString ( CLuaState & ls , std : : string & dest )
{
//H_AUTO(Lua_CLuaIHM_popString)
try
{
# if LUABIND_VERSION > 600
# if LUABIND_VERSION > 600
luabind : : object obj ( luabind : : from_stack ( ls . getStatePointer ( ) , - 1 ) ) ;
ls . pop ( ) ;
# else
# else
luabind : : object obj ( ls . getStatePointer ( ) ) ;
obj . set ( ) ;
# endif
# endif
dest = luabind : : object_cast < std : : string > ( obj ) ;
}
catch ( const luabind : : cast_failed & )
@ -884,21 +891,21 @@ bool CLuaIHM::popString(CLuaState &ls, std::string & dest)
return false ;
}
return true ;
}
}
// ***************************************************************************
bool CLuaIHM : : popSINT32 ( CLuaState & ls , sint32 & dest )
{
// ***************************************************************************
bool CLuaIHM : : popSINT32 ( CLuaState & ls , sint32 & dest )
{
//H_AUTO(Lua_CLuaIHM_popSINT32)
try
{
# if LUABIND_VERSION > 600
# if LUABIND_VERSION > 600
luabind : : object obj ( luabind : : from_stack ( ls . getStatePointer ( ) , - 1 ) ) ;
ls . pop ( ) ;
# else
# else
luabind : : object obj ( ls . getStatePointer ( ) ) ;
obj . set ( ) ;
# endif
# endif
dest = luabind : : object_cast < sint32 > ( obj ) ;
}
catch ( const luabind : : cast_failed & )
@ -906,11 +913,11 @@ bool CLuaIHM::popSINT32(CLuaState &ls, sint32 & dest)
return false ;
}
return true ;
}
}
// ***************************************************************************
void CLuaIHM : : getPoly2DOnStack ( CLuaState & ls , sint index , NLMISC : : CPolygon2D & dest )
{
// ***************************************************************************
void CLuaIHM : : getPoly2DOnStack ( CLuaState & ls , sint index , NLMISC : : CPolygon2D & dest )
{
//H_AUTO(Lua_CLuaIHM_getPoly2DOnStack)
ls . pushValue ( index ) ;
CLuaObject poly ;
@ -926,6 +933,6 @@ void CLuaIHM::getPoly2DOnStack(CLuaState &ls, sint index, NLMISC::CPolygon2D &de
}
dest . Vertices . push_back ( pos ) ;
}
}
}
}