Files
Include/EGnLuaAux.h
T
Dario Sassi 153906aad0 Include :
- aggiunti prototipi e funzioni per lua.
2015-03-22 09:30:12 +00:00

135 lines
3.4 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : EGnLuaAux.h Data : 21.03.15 Versione : 1.6c6
// Contenuto : Funzioni per gestione parametri generali con LUA.
//
//
//
// Modifiche : 21.03.15 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "/EgtDev/Extern/Lua/Include/lua.hpp"
//----------------------------------------------------------------------------
#define LuaCheckParam(L,I,P) { if ( ! LuaGetParam(L,I,P)) return luaL_error( L, " Invalid Parameter # " #I) ;}
//----------------------------------------------------------------------------
inline bool
LuaGetParam( lua_State* L, int nInd, bool& bPar)
{
if ( ! lua_isboolean( L, nInd))
return false ;
bPar = ( lua_toboolean( L, nInd) != 0) ;
return true ;
}
//----------------------------------------------------------------------------
inline bool
LuaGetParam( lua_State* L, int nInd, int& nPar)
{
if ( ! lua_isnumber( L, nInd))
return false ;
double dVal = lua_tonumber( L, nInd) ;
nPar = int( dVal + (( dVal > 0) ? 0.5 : - 0.5)) ;
return true ;
}
//----------------------------------------------------------------------------
inline bool
LuaGetParam( lua_State* L, int nInd, double& dPar)
{
if ( ! lua_isnumber( L, nInd))
return false ;
dPar = lua_tonumber( L, nInd) ;
return true ;
}
//----------------------------------------------------------------------------
inline bool
LuaGetParam( lua_State* L, int nInd, std::string& sPar)
{
if ( ! lua_isstring( L, nInd))
return false ;
sPar = lua_tostring( L, nInd) ;
return true ;
}
//----------------------------------------------------------------------------
inline bool
LuaClearStack( lua_State* L)
{
int n = lua_gettop( L) ;
if ( n > 0)
lua_pop( L, n) ;
return true ;
}
//----------------------------------------------------------------------------
inline bool
LuaSetReturn( lua_State* L)
{
try {
lua_pushnil( L) ;
}
catch ( ...) {
return false ;
}
return true ;
}
//----------------------------------------------------------------------------
inline bool
LuaSetReturn( lua_State* L, bool bPar)
{
try {
lua_pushboolean( L, ( bPar ? 1 : 0)) ;
}
catch ( ...) {
return false ;
}
return true ;
}
//----------------------------------------------------------------------------
inline bool
LuaSetReturn( lua_State* L, int nPar)
{
try {
lua_pushinteger( L, nPar) ;
}
catch ( ...) {
return false ;
}
return true ;
}
//----------------------------------------------------------------------------
inline bool
LuaSetReturn( lua_State* L, double dPar)
{
try {
lua_pushnumber( L, dPar) ;
}
catch ( ...) {
return false ;
}
return true ;
}
//----------------------------------------------------------------------------
inline bool
LuaSetReturn( lua_State* L, const std::string& sPar)
{
try {
lua_pushstring( L, sPar.c_str()) ;
}
catch ( ...) {
return false ;
}
return true ;
}