exponenta event banner

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

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

  • Чтобы указать, является ли аргумент указателя входным, выходным или изменяемым, используйте параметр DIRECTION.

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

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

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

  • Раскомментируйте код, определяющий функцию.

  • Удалите имя параметра, включая <> персонажи.

  • Приостановите отображение предложений кода.

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

DIRECTION Параметр

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

DIRECTION параметр имеет одно из следующих значений:

  • "input"- Только входной аргумент

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

    DIRECTION необходимо ввести значение для параметров C-string.

  • "output"- Только выходной аргумент

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

  • "inputoutput"- Входной и выходной аргумент

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

Примечание

Аргументы по умолчанию с направлением, указанным как OUT не поддерживаются. Определите их с помощью DIRECTION как "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++

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

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

Для просмотра cppUseCases.hpp файл заголовка и созданный файл определения см. в разделе Пример файла определения библиотеки C++.

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

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

Вход в эту функцию является скалярным указателем in.

void readScalarPtr(int const * in)

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

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

Вход в эту функцию является скалярным указателем на класс ns::MyClass2.

void readScalarPtr(ns::MyClass2 const * in)

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

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

Определить аргумент указателя

Подпись C++defineArgument Ценности

Вход в эту функцию является указателем на целочисленный массив длины m.

void readMatrix1DPtr(int const * mat, 
    size_t m)

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

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

Вход в эту функцию является указателем на массив фиксированной длины mat.

void readMatrix1DPtrFixedSize(int const * mat)

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

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

Вход в эту функцию является указателем на двумерную целочисленную матрицу 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"]);

Вход в эту функцию является указателем на двумерную матрицу mat фиксированных размеров.

void readMatrix2DPtrFixedSize(int const * mat)

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

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

Вход в эту функцию является указателем на трехмерную матрицу 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"]);

Определить аргумент массива

Подпись C++defineArgument Ценности

Вход в эту функцию представляет собой одномерный массив mat длины len.

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

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

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

Определение аргумента выходного указателя

Подпись C++defineArgument Ценности

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

int const * getRandomValues(size_t len)

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

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

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

int const * getRandomValuesFixedSize()

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

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

Определение аргумента скалярного объекта

Подпись C++defineArgument Ценности

Вход в эту функцию является указателем на класс ns::MyClass2.

double addClassByPtr(ns::MyClass2 const * myc2)

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

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

Вход в эту функцию является указателем на класс 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);

Вход в эту функцию является указателем на класс ns::MyClass2.

void readClassByPtr(ns::MyClass2 * myc2)

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

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

Вход в эту функцию является указателем на класс 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 Ценности

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

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

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

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

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

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

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

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

Вход в эту функцию является указателем на целочисленный вектор длины len. Функция не изменяет входной аргумент.

int addValuesByPtr(int * mat,
    size_t len)

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

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

Вход в эту функцию является ссылкой на целочисленный массив длины len. Функция не изменяет входной аргумент.

int addValuesByArr(int [] mat, 
    size_t len)

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

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

Эта функция создает целочисленный вектор длины len и возвращает ссылку на вектор.

void fillRandomValuesToPtr(int * mat, 
    size_t len)

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

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

Эта функция создает целочисленный вектор длины len и возвращает ссылку на вектор.

void fillRandomValuesToArr(int [] mat, 
    size_t len)

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

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

Определить строковый аргумент

Подпись C++defineArgument Ценности

Входными данными для этой функции является строка в стиле Си.

char const * getStringCopy(char const * str)

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

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

Возвращаемое значение для этой функции является строкой.

char const * getStringCopy(char const * str)

Для возвращаемого значения RetVal, комплект MLTYPE кому "string" и SHAPE кому "nullTerminated".

defineOutput(getStringCopyDefinition, "RetVal", "string", ...
    "nullTerminated");

Вход в эту функцию представляет собой строку, заданную длиной len.

void readCharArray(char const * chArray,
    size_t len)

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

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

Вход в эту функцию является массивом типа int8 и длина len.

void readInt8Array(char const * int8Array,
    size_t len)

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

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

Возвращаемое значение для этой функции является скаляром символов.

char const * getRandomCharScalar()

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

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

Тип возвращаемого значения для этой функции: int8.

char const * getRandomInt8Scalar()

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

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

Эта функция обновляет входной аргумент chArray. Длина chArray является len.

void updateCharArray(char* chArray,
    size_t len)

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

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

Вход в эти функции представляет собой массив C-строки размера numStrs.

void readCStrArray(char** strs, int numStrs);
void readCStrArray(char* strs[], int numStrs);

Для аргумента strs, комплект SHAPE в массив ["numStrs", "nullTerminated"].

defineArgument(readCStrArrayDefinition, ...
    "strs", "string", "input", ["numStrs", "nullTerminated"])

Входные данные для этих функций являются массивом const C-строки размера numStrs.

void readConstCStrArray (const char** strs, int numStrs);
void readConstCStrArray (const char* strs[], int numStrs);

Звонить clibgen.generateLibraryDefinition с TreatConstCharPointerAsCString установить значение true для автоматического определения SHAPE для аргумента strs как ["numStrs", "nullTerminated"].

defineArgument(readConstCStrArrayDefinition, ...
    "strs", "string", "input", ["numStrs", "nullTerminated"])

Вход в эту функцию представляет собой массив C-строки фиксированного размера.

void readFixedCStrArray (char* strs[5]);

Для аргумента strs, комплект SHAPE в массив [5, "nullTerminated"].

defineArgument(readFixedCStrArrayDefinition, ...
    "strs", "string", "input", [5, "nullTerminated"])

Вход в эту функцию представляет собой массив констант фиксированного размера C-строки.

void readConstCFixedStrArray (const char* strs[5]);

Звонить clibgen.generateLibraryDefinition с TreatConstCharPointerAsCString установить значение true для определения SHAPE для аргумента strs как [5, "nullTerminated"].

defineArgument(readConstFixedCStrArrayDefinition, ...
    "strs", "string", "input", [5, "nullTerminated"])

Определение аргумента указателя типа

Подпись C++defineArgument Ценности

Вход в эту функцию является указателем на typedef 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, как описано в разделе Отображение типов данных C++ в MATLAB. Если тип C++ для аргумента является строкой, используйте эти параметры для выбора значений MLTYPE и SHAPE аргументы.

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

"int8"

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

char**
char*[]

"string"

вектор
const char*

"char"

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

"string"

"nullTerminated"

const char**
const char*[]

"char"

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

"string"

"nullTerminated"

Связанные темы