Main Content

defineArgument

类: clibgen.MethodDefinition
包: clibgen

为 C++ 方法添加输入参数定义

说明

defineArgument(MethodDefinition,CPPName,MATLABType) 为 C++ 方法添加输入参数定义。

defineArgument(MethodDefinition,CPPName,MATLABType,Direction) 定义参数是输入、输出,还是两者兼而有之。

defineArgument(MethodDefinition,CPPName,MATLABType,Direction,Shape) 提供有关数据维度的信息。

defineArgument(___,Name,Value) 添加由一个或多个 Name,Value 对组参数指定的附加参数定义选项,并且可以包括上述语法中的任何输入参数。

输入参数

全部展开

方法定义,指定为 clibgen.MethodDefinition 对象。

C++ 参数名称,指定为字符串标量或字符向量。

MATLAB® 类型,指定为字符串标量或字符向量。有关详细信息,请参阅 Define Missing MLTYPE Parameter

参数类型,对于输入参数指定为 "input",对于输出参数指定为 "output",对于同时作为输入和输出的参数指定为 "inputoutput"。有关详细信息,请参阅 Define Missing DIRECTION Parameter

MATLAB 用于定义数据维度的维度定义,指定为字符串向量、标量文本、正整数向量、"nullTerminated" 或元胞数组。对于元胞数组,元素是标量文本和正整数标量的组合。有关详细信息,请参阅 Define Missing SHAPE Parameter

如果可以将参数维度定义为固定标量值,请输入数字,例如 5

如果维度由另一个参数定义,则以字符串形式输入参数名称。例如,假设有以下 C++ 签名。如果参数 len 定义 data 的长度,则 Shape 的值为 "len"

myFunc(const int *data, int len)

如果参数的大小由数组定义,则 Shape 的值为下列值之一:

  • 1

  • 固定维度:输入数值数组,例如 [5,2]

  • 可变维度:输入由参数名称组成的字符串数组,例如 ["row","col"]

如果参数的 C++ 类型是字符串,则使用这些选项为 MATLABTypeShape 参数选择值。

C++ 类型MATLABTypeDIRECTIONSHAPE 的选项
char*a

"int8"

"input"

标量值
标量值构成的数组

char**
char*[]

"string"

"input"向量
const char*

"char"

 

标量值
标量值构成的数组

"string"

"input"

"nullTerminated"

const char**
const char*[]

"char"

"input"

标量值
标量值构成的数组

"string"

"input"

"nullTerminated"

a These types are equivalent to MATLAB char:

  • wchar_t

  • char16_t

  • char32_t

有关详细信息,请参阅C++ to MATLAB Data Type Mapping

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

C++ 参数说明,指定为字符串标量或字符向量。此值设置 Description 属性。

转移参数的内存所有权,指定为数值或逻辑值 1 (true) 或 0 (false)。MATLAB 拥有作为输入参数的指针或引用分配的内存。C++ 库不会释放此内存。要更改非 const 参数的此行为,请将 'ReleaseOnCall' 设置为 true

以下各项不支持 'ReleaseOnCall' 参数:

  • const 参数。

  • 定义为输出的双精度指针(obj**void**)参数。

如果未指定 'ReleaseOnCall',则 ReleaseOnCall 为 false。

有关详细信息,请参阅 Lifetime Management of C++ Objects in MATLAB

示例: 'ReleaseOnCall',true

数据类型: logical

填充维度的位置,指定为数值或逻辑值 1 (true) 或 0 (false)。默认情况下,当 MATLAB 输入的维度少于对应的 C++ 参数时,则 MATLAB 在 Shape 参数的开头插入单一维度。要在末尾插入单一维度,请将 'AddTrailingSingletons' 设置为 true。有关详细信息,请参阅Dimension Matching

示例: 'AddTrailingSingletons',true

数据类型: logical

以空值结尾的 C++ 字符串参数的缓冲区大小,指定为数值标量、字符串标量或字符向量。该大小是缓冲区中 C++ 元素的数量。对 MLTYPE 值为 "string"DIRECTION 值为 "output" 的参数使用 NumElementsInBuffer。要指定:

  • 固定大小值,请使用数值标量。

  • 固定大小数组,该值必须与数组的大小相同。

  • 另一个参数的名称,请使用字符串标量或字符向量。参数必须为整数值。

使用此缓冲区为 C++ 函数返回的以空值结尾的字符串参数定义参数。MATLAB 将以空值结尾的 C++ 字符串转换为 MATLAB 字符串。

NumElementsInBuffer 参数不支持:

  • const 类型

  • void *

有关示例,请参阅Define String Argument表中的 getMessage 函数。

示例: "NumElementsInBuffer", "bufLen"

删除函数,指定为字符串标量或字符向量。Deleter 可以是 C++ 标准 delete 操作符或用户定义的函数。对于具有双精度指针输入参数的函数,请使用 'DeleteFcn',例如 void**object**

当您指定 'DeleteFcn' 时,MATLAB 将获得所有权并管理该参数所表示的内存的生命周期。如果未指定 'DeleteFcn',则库负责管理内存。

如果为删除函数指定库函数,则该函数不会包含在接口中,用户无法从 MATLAB 调用该函数。MATLAB 用户调用 MATLAB delete 函数,该函数调用由 'DeleteFcn' 指定的函数。

有关详细信息,请参阅Pass Ownership of Memory to MATLAB

示例: 'DeleteFcn','objFree'

版本历史记录

在 R2019a 中推出