static T DefaultCheck(IntPtr L, int stackPos) { int udata = LuaDLL.tolua_rawnetobj(L, stackPos); if (udata != -1) { ObjectTranslator translator = ObjectTranslator.Get(L); object obj = translator.GetObject(udata); if (obj != null) { if (obj is T) { return((T)obj); } LuaDLL.luaL_argerror(L, stackPos, string.Format("{0} expected, got {1}", TypeTraits <T> .GetTypeName(), obj.GetType().FullName)); } if (!TypeTraits <T> .IsValueType) { return(default(T)); } } else if (LuaDLL.lua_isnil(L, stackPos) && !TypeTraits <T> .IsValueType) { return(default(T)); } LuaDLL.luaL_typerror(L, stackPos, TypeTraits <T> .GetTypeName()); return(default(T)); }
public static object CheckObject(IntPtr L, int stackPos, Type type) { int udata = LuaDLL.tolua_rawnetobj(L, stackPos); if (udata != -1) { ObjectTranslator translator = ObjectTranslator.Get(L); object obj = translator.GetObject(udata); if (obj != null) { Type objType = obj.GetType(); if (type == objType || type.IsAssignableFrom(objType)) { return(obj); } LuaDLL.luaL_argerror(L, stackPos, string.Format("{0} expected, got {1}", type.FullName, objType.FullName)); } return(null); } else if (LuaDLL.lua_isnil(L, stackPos) && !TypeChecker.IsValueType(type)) { return(null); } LuaDLL.luaL_typerror(L, stackPos, type.FullName); return(null); }
static T DefaultCheck(IntPtr L, int stackPos) { int udata = LuaDLL.tolua_rawnetobj(L, stackPos); if (udata != -1) { ObjectTranslator translator = ObjectTranslator.Get(L); Type eleType = translator.CheckOutNodeType(udata); if (eleType != null) { bool bValid = eleType == TypeTraits <T> .type || TypeTraits <T> .type.IsAssignableFrom(eleType); if (bValid) { return(translator.GetObject <T>(udata)); } else { LuaDLL.luaL_argerror(L, stackPos, string.Format("{0} expected, got {1}", TypeTraits <T> .GetTypeName(), eleType != null ? eleType.FullName : "null")); } } else if (udata == 1) { return(default(T)); } } else if (TypeTraitsBase.IsNilType(TypeTraits <T> .IsValueType, TypeTraits <T> .type) && LuaDLL.lua_isnil(L, stackPos)) { return(default(T)); } LuaDLL.luaL_typerror(L, stackPos, TypeTraits <T> .GetTypeName()); return(default(T)); }
public static void luaL_checkany(IntPtr L, int narg) { if (LuaDLL.lua_type(L, narg) == LuaTypes.LUA_TNONE) { LuaDLL.luaL_argerror(L, narg, "value expected"); } }
public static TrackedReference CheckTrackedReference(IntPtr L, int stackPos, Type type) { int num = LuaDLL.tolua_rawnetobj(L, stackPos); if (num != -1) { ObjectTranslator objectTranslator = ObjectTranslator.Get(L); object @object = objectTranslator.GetObject(num); if (@object != null) { TrackedReference trackedReference = (TrackedReference)@object; if (trackedReference == null) { LuaDLL.luaL_argerror(L, stackPos, string.Format("{0} expected, got nil", type.get_FullName())); return(null); } Type type2 = trackedReference.GetType(); if (type == type2 || type2.IsSubclassOf(type)) { return(trackedReference); } LuaDLL.luaL_argerror(L, stackPos, string.Format("{0} expected, got {1}", type.get_FullName(), type2.get_FullName())); } return(null); } if (LuaDLL.lua_isnil(L, stackPos)) { return(null); } LuaDLL.luaL_typerror(L, stackPos, type.get_FullName(), null); return(null); }
public static object CheckObject(IntPtr L, int stackPos, Type type) { int num = LuaDLL.tolua_rawnetobj(L, stackPos); if (num != -1) { ObjectTranslator objectTranslator = ObjectTranslator.Get(L); object @object = objectTranslator.GetObject(num); if (@object != null) { Type type2 = @object.GetType(); if (type == type2 || type.IsAssignableFrom(type2)) { return(@object); } LuaDLL.luaL_argerror(L, stackPos, string.Format("{0} expected, got {1}", type.get_FullName(), type2.get_FullName())); } return(null); } if (LuaDLL.lua_isnil(L, stackPos) && !TypeChecker.IsValueType(type)) { return(null); } LuaDLL.luaL_typerror(L, stackPos, type.get_FullName(), null); return(null); }
public static int luaL_typerror(IntPtr L, int stackPos, string tname, string t2 = null) { if (t2 == null) { t2 = LuaDLL.luaL_typename(L, stackPos); } string extramsg = string.Format("{1} expected, got {2}", stackPos - 1, tname, t2); return(LuaDLL.luaL_argerror(L, stackPos, extramsg)); }
public static UnityEngine.TrackedReference CheckTrackedReference(IntPtr L, int stackPos, Type type) { int udata = LuaDLL.tolua_rawnetobj(L, stackPos); object obj = null; if (udata != -1) { ObjectTranslator translator = ObjectTranslator.Get(L); obj = translator.GetObject(udata); if (obj != null) { UnityEngine.TrackedReference uObj = (UnityEngine.TrackedReference)obj; if (uObj == null) { LuaDLL.luaL_argerror(L, stackPos, string.Format("{0} expected, got nil", type.FullName)); return(null); } Type objType = uObj.GetType(); if (type == objType || objType.IsSubclassOf(type)) { return(uObj); } LuaDLL.luaL_argerror(L, stackPos, string.Format("{0} expected, got {1}", type.FullName, objType.FullName)); } return(null); } else if (LuaDLL.lua_isnil(L, stackPos)) { return(null); } LuaDLL.luaL_typerror(L, stackPos, type.FullName); return(null); }