本文整理汇总了C++中CScriptArgReader::NextIsTable方法的典型用法代码示例。如果您正苦于以下问题:C++ CScriptArgReader::NextIsTable方法的具体用法?C++ CScriptArgReader::NextIsTable怎么用?C++ CScriptArgReader::NextIsTable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CScriptArgReader
的用法示例。
在下文中一共展示了CScriptArgReader::NextIsTable方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: argStream
int CLuaVector2Defs::Create ( lua_State* luaVM )
{
CVector2D vector;
CScriptArgReader argStream ( luaVM );
if ( argStream.NextIsTable () )
{
lua_pushvalue ( luaVM, 1 );
lua_pushstring ( luaVM, "x" );
lua_rawget ( luaVM, -2 );
if ( lua_isnumber ( luaVM, -1 ) )
{
vector.fX = ( float ) lua_tonumber ( luaVM, -1 );
lua_pop ( luaVM, 1 );
}
else
{
lua_pop ( luaVM, 1 );
lua_rawgeti ( luaVM, -1, 1 );
if ( lua_isnumber ( luaVM, -1 ) )
vector.fX = ( float ) lua_tonumber ( luaVM, -1 );
lua_pop ( luaVM, 1 );
}
lua_pushstring ( luaVM, "y" );
lua_rawget ( luaVM, -2 );
if ( lua_isnumber ( luaVM, -1 ) )
{
vector.fY = ( float ) lua_tonumber ( luaVM, -1 );
lua_pop ( luaVM, 1 );
}
else
{
lua_pop ( luaVM, 1 );
lua_rawgeti ( luaVM, -1, 2 );
if ( lua_isnumber ( luaVM, -1 ) )
vector.fY = ( float ) lua_tonumber ( luaVM, -1 );
lua_pop ( luaVM, 1 );
}
}
else if ( argStream.NextIsNumber () )
{
argStream.ReadNumber ( vector.fX );
if ( argStream.NextIsNumber () )
{
argStream.ReadNumber ( vector.fY );
}
}
else if ( argStream.NextIsVector2D () )
{
argStream.ReadVector2D ( vector );
}
lua_pushvector ( luaVM, vector );
return 1;
}
示例2: OOP_DbQuery
int CLuaDatabaseDefs::OOP_DbQuery ( lua_State* luaVM )
{
// handle dbQuery ( [ function callbackFunction, [ table callbackArguments, ] ] element connection, string query, ... )
CLuaFunctionRef iLuaFunction; CLuaArguments callbackArgs; CDatabaseConnectionElement* pElement; SString strQuery; CLuaArguments Args;
CScriptArgReader argStream ( luaVM );
argStream.ReadUserData ( pElement );
if ( argStream.NextIsFunction () )
{
argStream.ReadFunction ( iLuaFunction );
if ( argStream.NextIsTable () )
{
argStream.ReadLuaArgumentsTable( callbackArgs );
}
}
argStream.ReadString ( strQuery );
argStream.ReadLuaArguments ( Args );
argStream.ReadFunctionComplete ();
if ( !argStream.HasErrors () )
{
// Start async query
CDbJobData* pJobData = g_pGame->GetDatabaseManager ()->QueryStart ( pElement->GetConnectionHandle (), strQuery, &Args );
if ( !pJobData )
{
if ( !g_pGame->GetDatabaseManager ()->IsLastErrorSuppressed () )
m_pScriptDebugging->LogWarning ( luaVM, "%s failed; %s", lua_tostring ( luaVM, lua_upvalueindex ( 1 ) ), *g_pGame->GetDatabaseManager ()->GetLastErrorMessage () );
lua_pushboolean ( luaVM, false );
return 1;
}
// Make callback function if required
if ( VERIFY_FUNCTION ( iLuaFunction ) )
{
CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine ( luaVM );
if ( pLuaMain )
{
CLuaArguments Arguments;
Arguments.PushDbQuery ( pJobData );
Arguments.PushArguments ( callbackArgs );
pJobData->SetCallback ( CLuaDatabaseDefs::DbQueryCallback, g_pGame->GetLuaCallbackManager ()->CreateCallback ( pLuaMain, iLuaFunction, Arguments ) );
}
}
// Add debug info incase query result does not get collected
pJobData->SetLuaDebugInfo ( g_pGame->GetScriptDebugging ()->GetLuaDebugInfo ( luaVM ) );
lua_pushquery ( luaVM, pJobData );
return 1;
}
else
m_pScriptDebugging->LogCustom ( luaVM, argStream.GetFullErrorMessage () );
lua_pushboolean ( luaVM, false );
return 1;
}
示例3: Reference
int CLuaFunctionDefs::Reference ( lua_State* luaVM )
{
CScriptArgReader argStream ( luaVM );
if ( argStream.NextIsTable ( ) || argStream.NextIsFunction ( ) ||
argStream.NextIsUserData ( ) )
{
int iPointer = lua_ref ( luaVM, 1 );
lua_pushnumber ( luaVM, iPointer );
return 1;
}
lua_pushboolean ( luaVM, false );
return 1;
}