Класс CmaStream переопределяет операторы потокового ввода и вывода,
чтобы сократить код сохранения данных.
CmaStream (maType type, maString location);
Создание нового потока.
Поле type - объединение
файловых констант -
указывает тип потока(ввод/вывод, текстовый/бинарный,
файл/буфер/приложение). Location - расположение потока (имя файла, строка
запуска приложения). Файл при этом
не открывается.
СmaStream(ImaStream* stream);
Присоединяет класс-оболочку к существующему потоку.
void Open();
void Close();
Функции открывают и закрывают поток соответственно.
Использовать эти функции не обязательно.
Однако для некоторых типов потоков (например, файлов)
имеет смысл открыть поток один раз перед многократным обращением
к функциям ввода-вывода, а по завершении работы закрыть поток.
Тогда поток не будет открываться и закрываться при чтении/записи
каждой порции данных, что повысит эффективность операции.
void Flush();
Функция принудительно выводит в поток содержимое внутреннего буфера
(если таковой определён для данного типа потоков).
maStreamOptions GetOptions();
void SetOptions(maStreamOptions opt);
Функции обеспечивают доступ к опциям ввода-вывода. Тип maStreamOption описан в описании
простых типов.
CmaStream& operator<< (int data);
CmaStream& operator<< (double data);
CmaStream& operator<< (maString data);
CmaStream& operator<< (CmaCell &data);
CmaStream& operator<< (CmaList &data);
CmaStream& operator<< (CmaMatrix &data);
CmaStream& operator>> (int data);
CmaStream& operator>> (double data);
CmaStream& operator>> (maString data);
CmaStream& operator>> (CmaCell &data);
CmaStream& operator>> (CmaList &data);
CmaStream& operator>> (CmaMatrix &data);
Основные операторы ввода и вывода.
В операторах чтения классов:
-
если класс-оболочка не создан, то он будет создан с нулевым указателем на компонент.
-
если компонент не создан (равен нулю), то из потока
будет считан CLSId, по нему создан компонент, последний считан из потока и укзатель
на интерфейс записан в класс-оболочку.
-
если компонент создан, но в потоке очередной компонент имеет CLSId, не равный CLSId компонента,
то чтение из потока не будет произведено.
CmaStream& newLine(CmaStream& rvalue);
CmaStream& newField(CmaStream& rvalue)
Переход к новой строке и вставка разделителя значений соответственно.
Что именно будет записано в поток, определяется
опциями ввода-вывода.
Если поток не текстовый, то вызовы игнорируются.
void PrintF (maString format, ...);
Функция является аналогом сиандартной функции wprintf для потока.