Алгоритм — это совокупность методов с общим списком параметров. Класс алгоритма наследует функциональность списка TmaReadList. При создании объекта TmaAlgorithm указывается имя алгоритма, под которым он был зарегистрирован в управляющем ядре. По имени алгоритма однозначно определяется состав его методов. Можно создать сколько угодно экземпляров алгоритмов с данным именем.

###### Свойства и функции класса TmaAlgorithm

- constructor Create(Kernel:TmaKernel;const name:WideString)
- constructor Create(alg: ImaAlgorithm)
- constructor Create(algorithm:ImaAlgorithm)
- function Param: TmaList
- procedure ExecuteMethod(name:WideString;input:array of TmaMatrix;output:array of TmaMatrix)
- procedure SetMethod(mdef:ImaMethodDef)
- function GetMethod(name: WideString): TmaMethod
- function Description:WideString
- function VerifyMethod(num:integer):boolean
- function VerifyMethod(name:WideString):boolean
- function Verify:boolean

    constructor Create(Kernel:TmaKernel;const name:WideString)

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

    constructor Create(alg: ImaAlgorithm)

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

    constructor Create(algorithm:ImaAlgorithm)

Присоедимяет класс к уже существующему интерфейсу.

    function Param: TmaList

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

Внимание! Никогда не уничтожайте класс, полученный из этой функции.

    procedure ExecuteMethod(name:WideString;input:array of TmaMatrix;output:array of TmaMatrix)

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

Параметры:

name имя выполняемого метода
input массив входных параметров алгоритма. Его элементами должны быть типа TmaMatrix
output массив выходных параметров алгоритма. Его элементами должны быть типа TmaMatrix

    procedure SetMethod(mdef:ImaMethodDef)

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

    function GetMethod(name: WideString): TmaMethod

Находит метод по имени. Возвращает класс-оболочку с пустым указателем на интерфейс, если в алгоритме нет метода с таким именем.

Внимание! Никогда не уничтожайте методы, полученные из этой функции.

    function Description:WideString

Возвращает описание всех методов данного алгоритма.

    function VerifyMethod(num:integer):boolean
    function VerifyMethod(name:WideString):boolean

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

    function Verify:boolean

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