wr.*_*wr. 0 python swig typemaps
根据Swig文档和typemap中SWIG的出色解释,可以使用,但@Flexo不能使用argout,argouttypemap将引用参数转换为Python中的返回值。
我有一个场景,其中我传递了一个dict,然后将其转换为unordered_mapin typemap(in),然后将其填充到C ++ lib中。单步执行代码,我可以看到从C ++返回后,映射发生了变化,因此我想知道为什么不可能仅将unordered_map原位转换为dict已传递的映射。还是现在有可能,而我只是忽略了什么?
谢谢!
关于您到底要问什么,我有些困惑,但我的理解是:
dict为C ++ unordered_map。unordered_map。dict更新到current unordered_map,并且在此步骤上遇到了麻烦。dict到unordered_map,我假定你基本上就知道如何转换unordered_map回给dict使用Python C-API,但在某种程度上不确定成痛饮类型映射到放码。因此,在这些假设下,我将尝试提供帮助:
“ argout类型映射将引用参数转换为Python中的返回值”。尽管它主要用于此目的,但并非如此。一个“argout”类型映射简单地提供的代码来处理一些函数参数(内部称为$1插入到包装代码)后的C ++函数被调用。将此与“ in”类型映射进行比较,该映射提供代码以将提供的Python参数$input转换为C ++参数$1,该参数显然在调用C ++函数之前插入包装器代码中。
原始传递的Python dict在“ argout”类型图中可以称为$input,而在修改时则可以unordered_map称为$1(请参见上面链接的SWIG文档)。
因此,您要做的就是为与您已有的“ in”类型图相同的参数签名编写一个“ argout”类型图,并插入代码(使用Python C-API)以更新Python的内容dict($input)以反映unordered_map($1)的内容。
请注意,这与“ argout”类型映射的传统用法不同,后者通常会将$1back 转换回新的Python dict并将其附加到Python返回对象(您可以通过引用)$result。
我希望这有帮助。如果仍然无法解决问题,请修改问题以明确遇到问题的那一点。
| 归档时间: |
|
| 查看次数: |
618 次 |
| 最近记录: |