Тип 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;