Алгоритм — это совокупность методов с общим списком параметров. Класс алгоритма поддерживает интерфейс списка ImaReadList, а также интерфейс ImaAlgorithm, функции которого перечислены ниже.

- SetMethod ([in] ImaMethodDef* mdef)
- GetMethod ([in,string] maString name, [out,retval] ImaMethod** method)
- GetDescription ([out,retval,string] maString* descr)
- VerifyMethod ([in] int cellno)
- VerifyMethodByName ([in,string] maString name)
- Verify ()

    HRESULT SetMethod ([in] ImaMethodDef* mdef)

Функция создает и добавляет в алгоритм новый метод с определителем mdef. Если метод с таким именем уже существует в алгоритме, он заменяется новым. При создании алгоритма с помощью функции управляющего ядра CreateAlgorithm все методы создаются ядром автоматически.

Параметры:

mdef Определитель добавляемого метода.

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_BAD_PARAM, если mdef == NULL
MA_ERR_INVALIDDEF, если mdef возвращает неправильное описание метода.

    HRESULT GetMethod (
      [in,string] maString name, [out,retval] ImaMethod** method)

Функция возвращает метод алгоритма по имени метода.

Параметры:

name Имя метода
method Указатель на возвращаемый метод

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_BAD_PARAM, если mdef == NULL
MA_ERR_NOTFOUND, если у алгоритма нет метода с таким именем>

    HRESULT GetDescription ([out,retval,string] maString* descr)

Функция выдает строку с описанием всех методов алгоритма.

Параметры:

descr Указатель на возвращаемое описание

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_BAD_PARAM если descr == NULL

Замечание:

    HRESULT VerifyMethod ([in] int cellno)
    HRESULT VerifyMethodByName ([in,string] maString name)

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

Параметры:

cellno Номер проверяемого метода
name Имя проверяемого метода

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_NOTFOUND, если у алгоритма нет метода с таким именем или номером
MA_ERR_VERIFY, если метод сформирован неправильно

Замечание:

Метод считается сформированным, если заданы все его обязательные аргументы. Функцию VerifyMethod следует вызывать после формирования метода, но перед первым обращением к функциям Calc или CalcCell данного метода. Проверка осуществляется в соответствии с описаниями всех методов данного алгоритма. В случае обнаружения ошибок функция проверки записывает соответствующие сообщения в отладочный поток алгоритма и возвращает MA_ERR_VERIFY. Если метод сформирован неправильно, то результат его выполнения непредсказуем, так как функции метода Calc и CalcCell не обязаны проверять свои аргументы.

    HRESULT Verify ()

Функция проверяет правильность формирования всех аргументов во всех методах. Проверка сводится к вызову VerifyMethod для каждого метода алгоритма. В случае обнаружения ошибок хотя бы в одном из методов функция записывает соответствующие сообщения в отладочный поток алгоритма и возвращает MA_ERR_VERIFY.

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_VERIFY, если метод сформирован неправильно