SWIG / Lua:确定成员字段的数据类型
2009-10-1 17:50:46
收藏:0
阅读:257
评论:2
SWIG慷慨地提供了swig_type()函数来获取传递的用户数据对象的数据类型的字符串表示。但是,在成员字段的情况下,SWIG和Lua认为它们只是简单的“数字”项,因此只打印“数字”,而不是数据类型的名称。
例如,
typedef num_years int;
class Person
{
public:
Person * spouse;
num_years age;
};
在C++中将导致:
Lua 5.1.4 版权所有(C)1994-2008 Lua.org,PUC-Rio
> p = MyModule.Person();
> print(swig_type(p.spouse));
Person *
> print(swig_type(p.age));
number
是否有一些后门路径可以采取来确定成员字段的数据类型?当验证参数时,我看到获取和设置函数具有数字字段的正确字符串表示。
感谢任何帮助!
原文链接 https://stackoverflow.com/questions/1504747
点赞
stackoverflow用户702713
我知道这份代码非常老旧,但我想我可以提供一个可能的解答。
将年份包装在如下结构体中:
struct year_t
{
year_t(int year) : m_year(year) {}
void operator()(int year) { m_year = year; }
int operator()() const { return m_year; }
private:
int m_year;
}
class Person
{
public:
Person * spouse;
year_t age;
};
2016-08-04 12:58:46
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
SWIG 封装的 C++ 对象是符合特定规则的 Lua userdata 对象。
swig_type()
函数通过查看这些 userdata 对象并检索 SWIG 存储在其中的类型名称信息来工作。但是age
直接表示,所以没有类型名称字段可供查找,因此swig_type()
无法使用其魔法。您可以通过将num_years
定义为封装 int 的不透明类类型(也许在 C++ 中定义一些隐式转换以方便使用),来获得所需的结果,但这需要很多努力以获得可疑的回报。获取和设置功能的工作机制完全不同。它们具有正确的签名,因为 SWIG 在编译时在生成的包装程序中存储它,并从接口文件进行复制。