【问题标题】:When is a typemap necessary for swig?swig 什么时候需要类型映射?
【发布时间】:2011-07-19 08:09:44
【问题描述】:

我在.i文件中有这样的功能:

t_demo * t struct_new();

似乎我不需要任何类型映射,它就可以工作。 转换后可以直接使用:

use test;

$a = test::struct_new;

swig 什么时候需要 typemap?

【问题讨论】:

    标签: perl swig


    【解决方案1】:

    例如,我们可以为 t_demo 创建“out”类型映射并返回填充了此结构的选定成员的哈希:

    %typemap(out) t_demo {
      HV* tmp = newHV();
    
      SV* t_data = newSViv($1.int_field1);
      hv_store(tmp, "int_field1", 4, t_data, 0);
    
      $result = sv_2mortal(newRV_noinc((SV*) tmp));
      argvi++;
    }
    

    swig 手册中记录了更多用途。

    【讨论】:

    • 但是我可以通过访问器函数获取字段,对吗?所以这不是必需的......
    • “Typemaps 通常不是使用 SWIG 的必需部分”,但在某些边缘情况下可能需要这样做 - 例如没有访问器,也无法添加。
    • 这是有道理的。顺便说一句,swig 的 -shadow 选项是否仅适用于 c++?我试图让它与 c 结构一起工作,但不工作......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2018-12-10
    • 2015-01-19
    • 1970-01-01
    相关资源
    最近更新 更多