Merge branch 'master' into MoreBezier
This commit is contained in:
+2
-1
@@ -37,7 +37,8 @@ enum { POCKET_ZIGZAG = 0,
|
||||
POCKET_ONEWAY = 1,
|
||||
POCKET_SPIRALIN = 2,
|
||||
POCKET_SPIRALOUT = 3,
|
||||
POCKET_CONFORMAL_ZIGZAG = 4} ;
|
||||
POCKET_CONFORMAL_ZIGZAG = 4,
|
||||
POCKET_CONFORMAL_ONEWAY = 5} ;
|
||||
|
||||
enum { TEMP_PROP_SMOOTH = -2,
|
||||
TEMP_PROP_INVALID = -1,
|
||||
|
||||
+71
-17
@@ -229,7 +229,11 @@ LuaGetTabFieldParam( lua_State* L, int nInd, const char* szField, T& Val)
|
||||
{
|
||||
if ( ! lua_istable( L, nInd))
|
||||
return false ;
|
||||
lua_getfield( L, nInd, szField) ;
|
||||
int nField ;
|
||||
if ( FromString( szField, nField))
|
||||
lua_rawgeti( L, nInd, nField) ;
|
||||
else
|
||||
lua_getfield( L, nInd, szField) ;
|
||||
bool bOk = LuaGetParam( L, -1, Val) ;
|
||||
lua_pop( L, 1) ;
|
||||
return bOk ;
|
||||
@@ -462,7 +466,11 @@ LuaSetTabFieldParam( lua_State* L, int nInd, const char* szField)
|
||||
if ( ! LuaSetParam( L))
|
||||
return false ;
|
||||
int nPos = ( nInd > 0 ? nInd : nInd - 1) ;
|
||||
lua_setfield( L, nPos, szField) ;
|
||||
int nField ;
|
||||
if ( FromString( szField, nField))
|
||||
lua_rawseti( L, nPos, nField) ;
|
||||
else
|
||||
lua_setfield( L, nPos, szField) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -483,7 +491,11 @@ LuaSetTabFieldParam( lua_State* L, int nInd, const char* szField, const T& Val)
|
||||
if ( ! LuaSetParam( L, Val))
|
||||
return false ;
|
||||
int nPos = ( nInd > 0 ? nInd : nInd - 1) ;
|
||||
lua_setfield( L, nPos, szField) ;
|
||||
int nField ;
|
||||
if ( FromString( szField, nField))
|
||||
lua_rawseti( L, nPos, nField) ;
|
||||
else
|
||||
lua_setfield( L, nPos, szField) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -511,11 +523,21 @@ LuaGetGlobVar( lua_State* L, const std::string& sVar, T& Val)
|
||||
}
|
||||
// altrimenti campo di tabella
|
||||
else {
|
||||
std::string sTab, sField ;
|
||||
SplitFirst( sVar, ".", sTab, sField) ;
|
||||
lua_getglobal( L, sTab.c_str()) ;
|
||||
bool bOk = LuaGetTabFieldParam( L, -1, sField.c_str(), Val) ;
|
||||
lua_pop( L, 1) ;
|
||||
STRVECTOR vsTokens ;
|
||||
Tokenize( sVar, ".", vsTokens) ;
|
||||
int nTokenCnt = int( vsTokens.size()) ;
|
||||
if ( nTokenCnt < 2)
|
||||
return false ;
|
||||
lua_getglobal( L, vsTokens[0].c_str()) ;
|
||||
for ( int nInd = 1 ; nInd <= nTokenCnt - 2 ; ++ nInd) {
|
||||
int nField ;
|
||||
if ( FromString( vsTokens[nInd], nField))
|
||||
lua_rawgeti( L, -1, nField) ;
|
||||
else
|
||||
lua_getfield( L, -1, vsTokens[nInd].c_str()) ;
|
||||
}
|
||||
bool bOk = LuaGetTabFieldParam( L, -1, vsTokens[nTokenCnt-1].c_str(), Val) ;
|
||||
lua_pop( L, nTokenCnt - 1) ;
|
||||
return bOk ;
|
||||
}
|
||||
}
|
||||
@@ -536,11 +558,27 @@ LuaSetGlobVar( lua_State* L, const std::string& sVar, const T& Val)
|
||||
}
|
||||
// altrimenti campo di tabella
|
||||
else {
|
||||
std::string sTab, sField ;
|
||||
SplitFirst( sVar, ".", sTab, sField) ;
|
||||
lua_getglobal( L, sTab.c_str()) ;
|
||||
bool bOk = LuaSetTabFieldParam( L, -1, sField.c_str(), Val) ;
|
||||
lua_pop( L, 1) ;
|
||||
STRVECTOR vsTokens ;
|
||||
Tokenize( sVar, ".", vsTokens) ;
|
||||
int nTokenCnt = int( vsTokens.size()) ;
|
||||
if ( nTokenCnt < 2)
|
||||
return false ;
|
||||
lua_getglobal( L, vsTokens[0].c_str()) ;
|
||||
for ( int nInd = 1 ; nInd <= nTokenCnt - 2 ; ++ nInd) {
|
||||
int nField ;
|
||||
bool bNumber = FromString( vsTokens[nInd], nField) ;
|
||||
if ( ( bNumber ? lua_rawgeti( L, -1, nField) : lua_getfield( L, -1, vsTokens[nInd].c_str())) != LUA_TTABLE) {
|
||||
lua_pop( L, 1) ;
|
||||
lua_newtable( L) ;
|
||||
lua_pushvalue( L, -1) ;
|
||||
if ( bNumber)
|
||||
lua_rawseti( L, -3, nField) ;
|
||||
else
|
||||
lua_setfield( L, -3, vsTokens[nInd].c_str()) ;
|
||||
}
|
||||
}
|
||||
bool bOk = LuaSetTabFieldParam( L, -1, vsTokens[nTokenCnt-1].c_str(), Val) ;
|
||||
lua_pop( L, nTokenCnt - 1) ;
|
||||
return bOk ;
|
||||
}
|
||||
}
|
||||
@@ -560,10 +598,26 @@ LuaResetGlobVar( lua_State* L, const std::string& sVar)
|
||||
}
|
||||
// altrimenti campo di tabella
|
||||
else {
|
||||
std::string sTab, sField ;
|
||||
SplitFirst( sVar, ".", sTab, sField) ;
|
||||
lua_getglobal( L, sTab.c_str()) ;
|
||||
bool bOk = LuaSetTabFieldParam( L, -1, sField.c_str()) ;
|
||||
STRVECTOR vsTokens ;
|
||||
Tokenize( sVar, ".", vsTokens) ;
|
||||
int nTokenCnt = int( vsTokens.size()) ;
|
||||
if ( nTokenCnt < 2)
|
||||
return false ;
|
||||
lua_getglobal( L, vsTokens[0].c_str()) ;
|
||||
for ( int nInd = 1 ; nInd <= nTokenCnt - 2 ; ++ nInd) {
|
||||
int nField ;
|
||||
bool bNumber = FromString( vsTokens[nInd], nField) ;
|
||||
if ( ( bNumber ? lua_rawgeti( L, -1, nField) : lua_getfield( L, -1, vsTokens[nInd].c_str())) != LUA_TTABLE) {
|
||||
lua_pop( L, 1) ;
|
||||
lua_newtable( L) ;
|
||||
lua_pushvalue( L, -1) ;
|
||||
if ( bNumber)
|
||||
lua_rawseti( L, -3, nField) ;
|
||||
else
|
||||
lua_setfield( L, -3, vsTokens[nInd].c_str()) ;
|
||||
}
|
||||
}
|
||||
bool bOk = LuaSetTabFieldParam( L, -1, vsTokens[nTokenCnt-1].c_str()) ;
|
||||
lua_pop( L, 1) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user