Python SWIG 数组

发布于 2024-09-29 20:23:31 字数 89 浏览 5 评论 0原文

我正在使用 Python 的 SWIG 包装 C 模块。有没有办法将所有成员均为相同类型(相同类型的 Swig 对象)的 Python 列表/元组转换为 C 数组?

I am wrapping a C module with SWIG for Python. Is there any way to turn all Python lists/tuples whose members are all of the same type (same kind of Swig object) to C arrays?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情场扛把子 2024-10-06 20:23:31

类型映射。您最有可能寻找的是“in”类型映射,它将 Python 类型映射到 C 类型。声明看起来像这样:

%typemap(in) {
/* 将 Python 元组对象转换为 C 数组的 C 代码 */
在类型映射代码

中,您可以使用变量 $input 来引用要转换的 PyObject*,并将转换后的 C 数组分配给 $1。

http://docs.python.org/c-api/ 有关于 Python/ 的信息C API,您需要解压元组以获取项目并将其转换为 C。

http://www.swig.org/Doc1.3/Typemaps.html 有类型映射的 SWIG 文档。

该文档一开始可能很难理解,因此请查看 /share 中的一些示例类型映射。该目录中的 crays.i 也可以作为一个很好的起点。

Typemaps. What you are most likely looking for is an "in" typemap, which maps Python types to C types. The declaration looks something like this:

%typemap(in) {
/* C code to convert Python tuple object to C array */
}

Inside the typemap code you can use the variable $input to reference the PyObject* to convert, and assign your converted C array to $1.

http://docs.python.org/c-api/ has information on the Python/C API, which you'll need to unpack the tuple to get the items and convert them to C.

http://www.swig.org/Doc1.3/Typemaps.html has the SWIG documentation for typemaps.

The documentation can be hard to understand at first, so take a look at some example typemaps in /share. carrays.i in that directory might also serve as a good starting point.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文