Задайте Недостающую информацию для подписей MATLAB

Интерфейс MATLAB® автоматически преобразует подписи функции C++ в подписи функции MATLAB. Однако некоторые построения языка C++ не имеют уникальных соответствий на языке MATLAB. Чтобы включать эту функциональность в интерфейс, отредактируйте .mlx файл определения и замена <DIRECTION>, <SHAPE>, и <MLTYPE> параметры с недостающей информацией. Эти параметры используются в следующих случаях.

  • Чтобы задать, является ли аргумент указателя входом только для чтения, выход только или модифицируемый входной параметр, использует параметр НАПРАВЛЕНИЯ.

  • Если аргумент указателя используется в данных массива, то информация о размерности требуется, чтобы преобразовывать массив между C++ и MATLAB. Используйте параметр SHAPE, чтобы указать эту информацию.

  • C++ имеет много типов, представляющих аргументы строки. Вы можете должны быть задать MLTYPE и значения SHAPE так, чтобы MATLAB мог правильно преобразовать тип C++ в string MATLAB ввод.

MATLAB предлагает предложения кода для значений этих параметров. Активировать предложения для определенного параметра:

  • Не прокомментируйте код, задающий функцию.

  • Удалите название параметра, включая <> 'characters'.

  • Сделайте паузу, чтобы позволить предложениям кода отображаться.

  • Если предложения не появляются, проверяйте что definelibName.mlx файл находится на вашем пути MATLAB.

DIRECTION Параметр

На C++ аргументы указателя могут использоваться, чтобы передать и возвратить данные из функции. Используйте DIRECTION параметр, чтобы задать, является ли аргумент входом только для чтения, выход только или модифицируемый входной параметр.

DIRECTION параметр имеет одно из этих значений:

  • input— Входной параметр только

    Если аргумент указателя используется, чтобы передать данные функции, то это должно появиться как входной параметр в подписи MATLAB.

  • output— Выходной аргумент только

    Если аргумент указателя используется, чтобы получить данные от функции, то это должно появиться как выходной аргумент в подписи MATLAB.

  • inputoutput— Аргумент ввода и вывода

    Если аргумент указателя используется, чтобы и передать и возвратить данные, то это должно появиться и как входной параметр и как выходной аргумент.

Примечание

Параметры по умолчанию с направлением, заданным как OUT не поддержаны. Задайте их с НАПРАВЛЕНИЕМ как INPUT или INPUTOUTPUT в файле MLX.

Например, предположите, что C++ функционирует passData имеет следующую подпись. Аргумент data может быть вход к функции, возвращаемому значению функции, или ввести это, функция изменяет и возвращается. Документация функции говорит вам, как функция использует аргумент data.

void passData(double *data); 

Принятие data скалярное двойное значение, эта таблица показывает подпись MATLAB на основе своей роли.

Роль C++ для dataПодпись MATLAB

Входные данные только к passData

% Set DIRECTION = input
passData(data) 

Возвратите данные только из passData

% Set DIRECTION = output
[data] = passData() 

Входные и выходные данные для passData

% Set DIRECTION = inputoutput
[data] = passData(data) 

SHAPE Параметр

На C++ аргументы указателя используются и в скалярных данных и в данных массива. Чтобы использовать указатель в качестве массива, информация о размерности требуется, чтобы преобразовывать массив между C++ и MATLAB. SHAPE параметр задает размерности для указателя.

Примечание

Эти типы указателей могут только использоваться в качестве скаляров. Задайте SHAPE как 1 в файле MLX.

  • Указатели, представляющие массивы объектов класса C++

  • Указатели на неconst примитивные массивы, возвращенные в функцию

Следующие примеры построений заданы в демонстрационном cppUseCases.hpp заголовочный файл показывает вам, как задать форму аргумента. В этих таблицах описания для функций в столбце C++ Signature and Role of Pointer основаны на принятом знании аргументов. Сама подпись не предоставляет эту информацию.

Просмотреть cppUseCases.hpp заголовочный файл и его сгенерированный файл определения, смотрите Выборку Файл Определения Библиотеки C++.

Задайте аргумент указателя к фиксированному скаляру

Подпись C++ и роль указателяdefineArgument Значения

Вход, чтобы функционировать readScalarPtr скалярный указатель in.

void readScalarPtr(int const * in)

Для аргумента in, установите SHAPE к 1.

defineArgument(readScalarPtrDefinition, "in", ...
    "int32", "input", 1);

Вход, чтобы функционировать readScalarPtr скалярный указатель должен классифицировать ns::MyClass2.

void readScalarPtr(ns::MyClass2 const * in)

Для аргумента in, установите SHAPE к 1.

defineArgument(readScalarPtrDefinition, "in", ...
    "clib.cppUseCases.ns.MyClass2", "input", 1);

Задайте аргумент указателя

Подпись C++defineArgument Значения

Вход, чтобы функционировать readMatrix1DPtr указатель на целочисленный массив длины m.

void readMatrix1DPtr(int const * mat, 
    size_t m)

Для аргумента mat, установите SHAPE к аргументу m.

defineArgument(readMatrix1DPtrDefinition, "mat", ...
    "int32", "input", "m");

Вход, чтобы функционировать readMatrix1DPtrFixedSize указатель на массив фиксированной длины mat.

void readMatrix1DPtrFixedSize(int const * mat)

Для аргумента mat, установите SHAPE к фиксированному целому числу, такой как 5.

defineArgument(readMatrix1DPtrFixedSizeDefinition, ...
    "mat", "int32", "input", 5);

Вход, чтобы функционировать readMatrix2DPtr указатель на двумерную целочисленную матрицу mat из размера m- n.

void readMatrix2DPtr(int const * mat, 
    size_t m, size_t n)

Для аргумента mat, установите SHAPE к ["m","n"].

defineArgument(readMatrix2DPtrDefinition, "mat", ...
    "int32", "input", ["m","n"]);

Вход, чтобы функционировать readMatrix2DPtrFixedSize указатель на двумерный матричный mat из фиксированных размерностей.

void readMatrix2DPtrFixedSize(int const * mat)

Для аргумента mat, установите SHAPE к фиксированному целому числу, такой как 6.

defineArgument(readMatrix2DPtrFixedSizeDefinition, ...
    "mat", "int32", "input", 6);

Вход, чтобы функционировать readMatrix3DPtr указатель на 3D матричный mat из размера m- n- p.

void readMatrix3DPtr(int const * mat, 
    size_t m, size_t n, size_t p)

Для аргумента mat, установите SHAPE к ["m","n","p"].

defineArgument(readMatrix3DPtrDefinition, "mat", ...
    "int32", "input", ["m","n","p"]);

Задайте аргумент Array

Подпись C++defineArgument Значения

Вход, чтобы функционировать readMatrix1DArr одномерный массив mat из длины len.

void readMatrix1DArr(int const [] mat, 
    size_t len)

Для аргумента mat, установите SHAPE к длине len.

defineArgument(readMatrix1DArrDefinition, "mat", ...
    "int32", "input", "len");

Выходной Define аргумент указателя

Подпись C++defineArgument Значения

Вход, чтобы функционировать getRandomValues указатель на массив длины len. Функция возвращает аргумент указателя, как выведено.

int const * getRandomValues(size_t len)

Для возвращаемого значения RetVal, установите SHAPE к аргументу len.

defineOutput(getRandomValuesDefinition, "RetVal", ...
    "int32", "len");

Выходной аргумент функционального getRandomValuesFixedSize указатель на массив фиксированной длины.

int const * getRandomValuesFixedSize()

Для возвращаемого значения RetVal, установите SHAPE к целому числу, такой как 5.

defineOutput(getRandomValuesFixedSizeDefinition, ...
    "RetVal", "int32", 5);

Задайте скалярный аргумент объекта

Подпись C++defineArgument Значения

Вход, чтобы функционировать addClassByPtr указатель должен классифицировать ns::MyClass2.

double addClassByPtr(ns::MyClass2 const * myc2)

Для myc2 аргумент, набор SHAPE к 1.

defineArgument(addClassByPtrDefinition, "myc2", ...
    "clib.cppUseCases.ns.MyClass2", "input", 1);

Вход, чтобы функционировать updateClassByPtr указатель должен классифицировать ns::MyClass2.

void updateClassByPtr(ns::MyClass2 * myc2,
    double a, short b, long c)

Для аргумента myc2, установите SHAPE к 1.

defineArgument(updateClassByPtrDefinition, "myc2", ...
    "clib.cppUseCases.ns.MyClass2", "input", 1);

Вход, чтобы функционировать readClassByPtr указатель должен классифицировать ns::MyClass2.

void readClassByPtr(ns::MyClass2 * myc2)

Для аргумента myc2, установите SHAPE к 1.

defineArgument(readClassByPtrDefinition, "myc2", ...
    "clib.cppUseCases.ns.MyClass2", "input", 1);

Вход, чтобы функционировать fillClassByPtr указатель должен классифицировать ns::MyClass2.

void fillClassByPtr(ns::MyClass2 * myc2,
    double a, short b, long c)

Для аргумента myc2, установите SHAPE к 1.

defineArgument(fillClassByPtrDefinition, "myc2", ...
    "clib.cppUseCases.ns.MyClass2", "input", 1);

Задайте матричный аргумент

Подпись C++defineArgument Значения

Вход, чтобы функционировать updateMatrix1DPtrByX указатель на целочисленный вектор длины len. Аргумент x изменяет входной параметр.

void updateMatrix1DPtrByX(int * mat, 
    size_t len, int x)

Для аргумента mat, установите DIRECTION к inputoutput и SHAPE к len.

defineArgument(updateMatrix1DPtrByXDefinition, ...
    "mat", "int32", "inputoutput", "len");

Вход, чтобы функционировать updateMatrix1DArrByX ссылка на целочисленный массив длины len. Аргумент x изменяет входной параметр mat.

void updateMatrix1DArrByX(int [] mat,  
    size_t len, int x)

Для аргумента mat, установите DIRECTION к inputoutput и SHAPE к len.

defineArgument(updateMatrix1DArrByXDefinition, ...
    "mat", "int32", "inputoutput", "len");

Вход, чтобы функционировать addValuesByPtr указатель на целочисленный вектор длины len. Функция не изменяет входной параметр.

int addValuesByPtr(int * mat,
    size_t len)

Для аргумента mat, установите DIRECTION к input и SHAPE к len.

defineArgument(addValuesByPtrDefinition, "mat", ...
    "int32", "input", "len");

Вход, чтобы функционировать addValuesByArr ссылка на целочисленный массив длины len. Функция не изменяет входной параметр.

int addValuesByArr(int [] mat, 
    size_t len)

Для аргумента mat, установите DIRECTION к input и SHAPE к len.

defineArgument(addValuesByArrDefinition, ...
    "mat", "int32", "input", "len");

Функциональный fillRandomValuesToPtr создает целочисленный вектор длины len и возвращает ссылку на вектор.

void fillRandomValuesToPtr(int * mat, 
    size_t len)

Для аргумента mat, установите DIRECTION к output и SHAPE к len.

defineArgument(fillRandomValuesToPtrDefinition, ...
    "mat", "int32", "output", "len");

Функциональный fillRandomValuesToArr создает целочисленный вектор длины len и возвращает ссылку на вектор.

void fillRandomValuesToArr(int [] mat, 
    size_t len)

Для аргумента mat, установите DIRECTION к output и SHAPE к len.

defineArgument(fillRandomValuesToArrDefinition, ...
    "mat", "int32", "output", "len");

Задайте аргумент строки

Подпись C++defineArgument Значения

Вход, чтобы функционировать getStringCopy отключенная пустым указателем строка.

char const * getStringCopy(char const * str)

Для аргумента str, установите MLTYPE к string и SHAPE к nullTerminated.

defineArgument(getStringCopyDefinition, "str", ...
    "string", "input", "nullTerminated");

Возвращаемое значение для функционального getStringCopy скаляр символов.

char const * getStringCopy(char const * str)

Для возвращаемого значения RetVal, установите MLTYPE к char и SHAPE к 1.

defineOutput(getStringCopy, "RetVal", "char", 1);

Вход, чтобы функционировать readCharArray строка, заданная длиной len.

void readCharArray(char const * chArray,
    size_t len)

Для аргумента chArray, установите MLTYPE к char и SHAPE к len.

defineArgument(readCharArrayDefinition, "chArray", ...
    "char", "input", "len");

Вход, чтобы функционировать readInt8Array массив типа int8 и длина len.

void readInt8Array(char const * int8Array,
    size_t len)

Для аргумента int8Array, установите MLTYPE к int8 и SHAPE к len.

defineArgument(readInt8ArrayDefinition, "int8Array", ...
    "int8", "input", "len");

Возвращаемое значение для функционального getRandomCharScalar скаляр символов.

char const * getRandomCharScalar()

Для возвращаемого значения RetVal, установите MLTYPE к char и SHAPE к 1.

defineOutput(getRandomCharScalarDefinition, ... 
   "RetVal", "char", 1);

Тип возвращаемого значения для функционального getRandomInt8Scalar int8.

char const * getRandomInt8Scalar()

Для возвращаемого значения RetVal, установите MLTYPE к int8 и SHAPE к 1.

defineOutput(getRandomInt8ScalarDefinition, ...
    "RetVal", "int8", 1);

Функциональный updateCharArray обновляет входной параметр chArray. Длина chArray len.

void updateCharArray(char * chArray,
    size_t len)

Для аргумента chArray, установите DIRECTION к inputoutput и SHAPE к len.

defineArgument(updateCharArrayDefinition, ...
    "chArray", "int8", "inputoutput", "len");

Задайте введенный аргумент указателя

Подпись C++defineArgument Значения

Вход, чтобы функционировать useTypedefPtr указатель на определение типа intDataPtr.

void useTypedefPtr(intDataPtr input1)

intDataPtr задан как:

typedef int16_t intData;
typedef intData * intDataPtr;

Для аргумента input1, установите DIRECTION к input и SHAPE к 1.

defineArgument(useTypedefPtrDefinition, "input1", ...
    "int16", "input", 1);

MLTYPE Параметр

MATLAB автоматически преобразует типы C++ в типы MATLAB, как описано в MATLAB к Отображению Типа данных C++. Если тип C++ для аргумента является строкой, то используйте эти опции, чтобы выбрать значения для MLTYPE и SHAPE аргументы.

Тип C++MLTYPEОпции для SHAPE
char *

int8

Скалярное значение
Массив скалярных значений

const char *

char

Скалярное значение
Массив скалярных значений

string

"nullTerminated"

Похожие темы