Тип maString предназначен для передачи строк через интерфейсные функции и является указателем на строку Unicode, завершающуюся нулевым символом.

    typedef const wchar_t* maString;

При передаче строк соблюдаются два основных правила:

- Если строка передаётся как maString, то она является входным аргументом, создается и удаляется вне интерфейсной функции, и функция не имеет права её модифицировать.
- Если строка передаётся как maString*, то она является выходным аргументом, создается и удаляется внутри интерфейсной функции, и клиент не имеет права её модифицировать. Следующий вызов любой интерфейсной функции может изменить расположенную по данному указателю строку.

Тип maIndex предназначен для задания координат ячеек в многомерных матрицах и списках. Реализован как массив целых чисел, нулевой элемент которого содержит размерность (длину) индекса. Нумерация по каждой координате начинается с нуля.

    typedef int* maIndex;

Эквивалентный способ реализации — через структуру:

    typedef struct {
    	int count;
    	[size_is(count)] int  idx[*];
    } *maIndex;

Тип maConvertStrings

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

    typedef struct {
            maString strReadFmt,strWriteFmt;
            maString longReadFmt,longWriteFmt;
            maString doubleReadFmt,doubleWriteFmt;

            maString defaultString;
            long defaultLong;
            double defaultDouble;

    }maConvertStrings;

Тип поля | Имя поля | По умолчанию | Примечание
maString | strReadFmt | " %[^\t\n]" | Формат чтения строки из файла
maString | strWriteFmt | "%s" | Формат записи строки в файла
maString | longReadFmt | " %d" | Формат преобразования строки в целое
maString | longWriteFmt | "%d" | Формат преобразования целого в строку
maString | doubleReadFmt | " %lf" | Формат преобразования строки в вещественное число
maString | doubleWriteFmt | "%lg" | Формат преобразования вещественного числа в строку
maString | defaultString | "" | Строка, которая возвращается ячейкой или матрицей вместо пустого значения при вызове GetAsString
long | defaultLong | 0 | Число, которое возвращается ячейкой или матрицей вместо пустого значения при вызове GetAsLong
double | defaultDouble | 0 | Число, которое возвращается ячейкой или матрицей вместо пустого значения при вызове GetAsDouble

Тип maStreamOptions

предназначен для чтения и записи формата ввода/вывода в поток. Первые три параметра устанавливаются при создании потока и их нельзя изменить. Остальные параметры задают формат ввода/вывода для текстовых файлов.

    typedef struct {
            maType fileMode;
            boolean textStream,canRead,canWrite;
            maString fileName;

            maConvertStrings convStrings;

            maString emptyValue;
            boolean printGUIDs;

            maString DelimiterSkipFmt;
            maString Delimiter,RowDelimiter;
            long levelIndent;
    } maStreamOptions;

Тип поля | Имя поля | По умолчанию | Примечание
maType | fileMode |  | (только чтение) Режим работы потока в том виде, в котором он был задан при создании потока
boolean | textStream |  | (только чтение) если true, то при вводе-выводе числа преобразовываются в строки и обратно в соответствии с convStrings и для разделения данных необходимо использовать newField/NewLine
boolean | canRead,canWrite |  | (только чтение) Возможность соответственно чтения и записи данных в поток
maConvertStrings | convStrings |  | Формат преобразования числе в строки для текстового потока
maString | emptyValue | "%empty" | Для текстового потока: cтрока, которая записывается в файл вместо пустого значения
boolean | printGUIDs | TRUE | Для текстового потока: если FALSE, то строки ##begin ..., ##end ... и ##data ... не выводятся в поток при записи компонентов
maString | DelimiterSkipFmt | "%*[ \t\n]s" | Форматная строка (для scanf), чтение которой пропускает разделители между читаемыми значениями
maString | Delimiter | "\t" | Строка, которая выводится при выполнении функции newField потока
maString | RowDelimiter | "\n" | Строка, которая выводится при выполнении функции newLine потока
long | levelIndent | 2 | Отступ при выводе вложеных компонентов

Тип maType перечисляет допустимые типы данных в ячейках:

    typedef unsigned long maType;