本文整理汇总了C#中ILuaState.SetUpvalue方法的典型用法代码示例。如果您正苦于以下问题:C# ILuaState.SetUpvalue方法的具体用法?C# ILuaState.SetUpvalue怎么用?C# ILuaState.SetUpvalue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ILuaState
的用法示例。
在下文中一共展示了ILuaState.SetUpvalue方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: B_LoadFile
public static int B_LoadFile( ILuaState lua )
{
string fname = lua.L_OptString( 1, null );
string mode = lua.L_OptString( 2, null );
bool env = ! lua.IsNone( 3 );
var status = lua.L_LoadFileX( fname, mode );
if( status != ThreadStatus.LUA_OK && env )
{
lua.PushValue( 3 );
lua.SetUpvalue( -2, 1 ); // put before error message
return 2;
}
return LoadAux( lua, status );
}
示例2: B_Load
public static int B_Load( ILuaState lua )
{
ThreadStatus status;
int top = lua.GetTop();
string s = lua.ToString(1);
string mode = lua.L_OptString(3, "bt");
if( s != null )
{
string chunkName = lua.L_OptString(2, s);
status = lua.L_LoadBufferX( s, chunkName, mode );
}
else // loading from a reader function
{
throw new System.NotImplementedException();
}
if( status == ThreadStatus.LUA_OK && top >= 4 ) // is there an `env' argument
{
lua.PushValue(4); // environment for loaded function
lua.SetUpvalue(-2, 1); // set it as 1st upvalue
}
return LoadAux( lua, status );
}
示例3: LoadAux
private static int LoadAux( ILuaState lua, ThreadStatus status, int envidx )
{
if( status == ThreadStatus.LUA_OK )
{
if( envidx != 0 ) // `env' parameter?
{
lua.PushValue(envidx); // push `env' on stack
if( lua.SetUpvalue(-2, 1) == null ) // set `env' as 1st upvalue of loaded function
{
lua.Pop(1); // remove `env' if not used by previous call
}
}
return 1;
}
else // error (message is on top of the stack)
{
lua.PushNil();
lua.Insert(-2); // put before error message
return 2; // return nil plus error message
}
}