python 的 swig 类型映射:输入和输出数组

2024-03-06

我想在 Python 中使用一个 C 函数:

extern int convertAtoB( stateStruct *myStruct,
                        const double PointA[3],
                        double PointB[3]);

使用 SWIG,我想我需要定义一个类型映射来转换两个点(PointA 为输入,PointB 为输出),以便 Python 可以使用它。 typemaps.i 中似乎没有适用于此的类型映射,因此我必须定义一个。我似乎无法在 SWIG 文档中找到数组的示例。

我想像这样使用这个库:

s = externalStruct()
point_a = [1, 2, 3]
result, point_b = convertAtoB(s, point_a)
print point_b
"expect [4, 5, 6]"

我该怎么做?谢谢


你快到了。要摆脱 python 签名中的虚拟参数,您需要更改%typemap(in) for PointB[3] to %typemap(in,numinputs=0)指示 SWIG 忽略该输入值(无论如何您已经获取了它的副本)。这将从 python 方法签名中删除虚拟参数。

但是我不确定您是否需要复制整个%typemap(in)对于该专业。可能有一种方法可以重用实际的类型映射,但我不知道如何。否则你最终会得到一个额外的

%typemap(in,numinputs=0) double PointB[3] (double temp[$1_dim0]) {
  int i;
  if (!PySequence_Check($input)) {
    PyErr_SetString(PyExc_ValueError,"Expected a sequence");
    return NULL;
  }
  if (PySequence_Length($input) != $1_dim0) {
    PyErr_SetString(PyExc_ValueError,"Size mismatch. Expected $1_dim0 elements");
    return NULL;
  }
  for (i = 0; i < $1_dim0; i++) {
    PyObject *o = PySequence_GetItem($input,i);
    if (PyNumber_Check(o)) {
      temp[i] = (double) PyFloat_AsDouble(o);
    } else {
      PyErr_SetString(PyExc_ValueError,"Sequence elements must be numbers");      
      return NULL;
    }
  }
  $1 = temp;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 的 swig 类型映射:输入和输出数组 的相关文章

  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 在 Sphinx 中,有没有办法在声明参数的同时记录参数?

    我更喜欢在声明参数的同一行记录每个参数 根据需要 以便应用D R Y http en wikipedia org wiki Don t repeat yourself 如果我有这样的代码 def foo flab nickers a ser
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 使用 urllib 编码时保持 url 参数有序

    我正在尝试用 python 模拟 get 请求 我有一个参数字典 并使用 urllib urlencode 对它们进行 urlencode 我注意到虽然字典的形式是 k1 v1 k2 v2 k3 v3 urlencoding 后参数的顺序切

随机推荐

  • Typescript 扩展方法编译但在运行时不起作用

    我用一个简单的方法扩展了 Typescript 中的 String 原型 字符串扩展 ts String prototype toCleanedTitleCase function string let titleCase this rep
  • 如何从 xaxis 中删除空因子

    尝试使用 filter select 和无光泽的工作制作交互式绘图条形图 我正在处理许多机场 gt 100 个 的数据 条形图通常过于拥挤 无法支持用户将一个机场 APT x 观察到的性能 值 VAL 与对等机场的子集进行比较 这个想法是使
  • 印度的 R 包?

    我正在美国 R 中以县为基础进行大量统计分析 但我也想对印度做一些研究 我找到了州地图 但在 R 中没有找到区地图 我可以在 d3 js 中找到这样的东西 但我不想放弃 R 印度是否有类似于 地图 的 R 包 您可以使用来自GADM htt
  • 使用 boost::asio::async_read() 的问题

    这是我使用的代码 class Server void Server accepted std cout lt lt Accepted lt lt std endl boost array
  • 创建新的 virtualenv 挂起

    我有一台 MacBook Pro 我从 pylonsbook com virutalenv py 下载了 virtualenv py 当我输入 python virtualenv py no site packages env 它输出 Ne
  • CoreData Swift 和瞬态属性获取器

    关于在 Swift 中使用 Core Data 时实现计算属性有什么建议吗 使用生成的 ManagedObject 类 我尝试重写 getter 但收到错误 计算属性上不允许使用 NSManaged 这意味着您不能覆盖瞬态 计算的 属性的
  • AngularJs 指令 - 如何从指令内获取属性值

    知道如何从指令内部访问属性值吗 angular module portal directives directive languageFlag routeParams function params return function scop
  • 如何使命名管道在 C++ 和 .NET 之间工作?

    我在让命名管道在 c 和 NET 之间工作方面经历了一段非常艰难的时期 我在创建在 2 个 C 应用程序或 2 个 NET 应用程序之间运行的命名管道时没有遇到任何问题 我对这种通信没有问题 我在某些项目中使用这种情况 C 方面 LPTST
  • SendMessage 模拟右键单击使目标应用程序崩溃

    我正在编写一个 C 自动化工具 由于 Microsoft UI 自动化不提供任何模拟右键单击或弹出上下文菜单的方法 因此我正在使用SendMessage改为执行此操作 我宁愿不使用SendInput因为我不想抓住焦点 当我打电话时SendM
  • 如何下载 WatchKit? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道 WatchKit 何时可供 iOS 开发者下载 Xcode 6 是否会包含一个模拟器以允许在
  • 找不到模块“./App.svelte”或其相应的类型声明

    我有一个将电子与 svelte 集成以及打字稿支持集成的设置 当我运行rollup编译 svelte 应用程序的脚本 我找不到模块 App svelte错误如下图所示 Plugin typescript rollup plugin type
  • PHP 警告:非法字符串偏移

    我是 PHP 新手 今天 PHP 从 5 3 3 版本迁移到 5 4 4 版本 Debian Squeeze 到 Debian Wheezy 之后 我从 Apache 日志中收到此错误 gt PHP 警告 xyz 中的非法字符串偏移 php
  • 如何在实体框架 4.3.1 中禁用迁移?

    有没有办法在 Entity Framework 4 3 1 中禁用迁移 我从项目中删除了迁移文件夹以及数据库中生成的表 但它不起作用 如何删除迁移 如果您不想使用迁移 但同时希望 EF 为您创建数据库 则只需设置正确的数据库初始值设定项 D
  • keras.backend的clear_session()方法没有清理拟合数据

    我正在研究不同类型数据质量的拟合精度结果的比较 好数据 是特征值中没有任何NA的数据 坏数据 是特征值中具有 NA 的数据 坏数据 应该通过一些值修正来修复 作为值修正 它可能会用零或平均值替换 NA 在我的代码中 我尝试执行多个拟合过程
  • 为什么这是一个最终递归可变参数宏?

    以下构造在 VisualStudio 2013 中进行编译 我刚刚创建了一个新的 consoleApplication 项目 并且仅更改了主 cpp 因此您只需粘贴它并尝试一下即可 它显然所做的是创建一个最终递归可变参数宏 include
  • Python 代码:几何布朗运动 - 出了什么问题?

    我对 Python 还很陌生 但是对于大学论文 我需要应用一些模型 最好使用 Python 我花了几天时间处理我附加的代码 但我真的帮不上忙 出了什么问题 它没有创建一个看起来像带有漂移的标准布朗运动的随机过程 我的参数 如 mu 和 si
  • Windows 通用项目不支持 VS2017 页面

    从昨天开始我遇到了一个相当不愉快的问题 我清除了 NuGet 缓存 因为我无法让 NuGet 包与我的代码之一一起使用 但这没有帮助 反而搞砸了我之前编写的 UWP 应用程序 我的代码中的每个元素都会出现错误 如下所示 在 XAML 中 主
  • PostgreSQL中如何实现嵌套INSERT语句?

    我有两张桌子 group and groupmembers 在插入行时group表 我还想插入两个值 groupid 来自组表的 ID 和userid 创建该组的用户的 ID 到groupmembers桌子 这些是表格 CREATE TAB
  • 如何将根(裸)域重定向到 www - heroku 和 zerigo

    我有一个域 example com 和 www example com 我正在使用 Heroku 和 Zerigo 作为 DNS 现在我有一个从我的 Hostgator 帐户从根域到 www example com 的转发 但这不起作用 我
  • python 的 swig 类型映射:输入和输出数组

    我想在 Python 中使用一个 C 函数 extern int convertAtoB stateStruct myStruct const double PointA 3 double PointB 3 使用 SWIG 我想我需要定义一