lua_touserdata函数源代码
以下是lua_touserdata函数的源代码:
void *lua_touserdata(lua_State *L, int idx) {
TValue *o = index2addr(L, idx);
switch (ttype(o)) {
case LUA_TUSERDATA: return getudatamem(o);
case LUA_TLIGHTUSERDATA: return pvalue(o);
default: {
const char *msg = lua_pushfstring(L, "userdata expected, got %s",
luaL_typename(L, idx));
luaL_argerror(L, idx, msg);
return NULL; /* unreachable */
}
}
}
该函数的作用是从给定索引处获取一个指向用户数据的指针,并返回该指针。如果给定索引处的值不是一个用户数据,则会抛出一个错误。
函数的参数说明如下:
L:Lua状态机指针idx:栈索引,可以是任意有效的栈索引
函数的返回值是一个指向用户数据的指针,或者在给定索引处的值不是一个用户数据时抛出错误。
函数的实现非常简单,它只是检查给定索引处的值的类型,并根据类型返回相应的指针或抛出错误。如果给定索引处的值是一个用户数据,则它会调用getudatamem函数来获取用户数据的指针。如果给定索引处的值是一个轻量级用户数据,则它会直接获取该值的指针,并将其作为用户数据的指针返回。如果给定索引处的值不是一个用户数据,则会抛出一个错误,指出期望的类型是用户数据
原文地址: http://www.cveoy.top/t/topic/hvLD 著作权归作者所有。请勿转载和采集!