luabind实现lua中的取对象大小功能

2014-11-24 12:12:43 · 作者: · 浏览: 0

在lua中, #操作符用于获取对象大小, 对于table来说, 获取的是table元素个数, 对于字符串来说获取的是字符串长度
另外一种获取方法是table.getn(obj), 但是这个方法已经标记为废除了, 尽量使用通用且简洁的#操作符

使用lua api实现此功能就需要用到lua_objlen( ),但是这个功能未在luabind中提供.所以我们顺手添加一个
首先找到luabind源码的object.hpp中取对象类型的type函数,在其下添加以下代码

1: template
2: inline int obj_size(ValueWrapper const& value)
3: {
4: lua_State* interpreter = value_wrapper_traits::interpreter(

5: value
6: );
7:
8: value_wrapper_traits::unwrap(interpreter, value);
9: detail::stack_pop pop(interpreter, 1);
10: return lua_objlen(interpreter, -1);
11: }

重新编译你的代码, 就可以这样使用luabind::obj_size( obj ) 获取对象大小了

摘自 战魂小筑