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

typedef const wchar_t* 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;