Borland С++ предусматривает ряд предопределенных глобальных переменных, которые могут использоваться при работе с датой, временем, аргументами командной строки и т.д.
Флаг микропроцессора (для DOS, Win16, Win32). Устанавливается в ненулевое значение, если логика автообнаружение кода запуска обнаруживает наличие сопроцессора. Эту логику можно переопределить установкой переменной операционной среды 87.
Содержит число аргументов командной строки (для DOS, Win16, Win32 и OS/2) - значение argc, переданное main при запуске программы.
Массив указателей на аргументы командной строки (для DOS, Win16, Win32 и OS/2). Элементы этого массива передаются программе при ее запуске.
Информационных массив символьных атрибутов (для DOS, Win16, Win32 и OS/2), индексируемых значением ASCII +1. Каждая запись это битовый набор, описывающий символ.
Указывает, требуется ли сохранение настраиваемого времени суток (для DOS, Win16, Win32 или OS/2). Используется функциями даты и времени. Принимает значения 1 (сохраненное время) и 0 (стандартное).
Флаг, управляющий видеовыводом (для DOS, Win16, Win32). Определяет вывод непосредственно в видеопамять (1) или через вызовы BIOS в ПЗУ (0). По умолчанию равна 1. Эту переменную следует использовать только в символьных приложениях.
Позволяет обращаться к системным переменным операционной среды и представляет собой массив указателей на строки "переменная=значение" (для DOS, Win16, Win32 и OS/2). Значение в строке может быть пустым. При выполнении значения переменных среды передаются непосредственно программе.
Обращаться к _environ можно через getenv, а добавлять, изменять или удалять записи массива _environ - с помощью getenv.
Для печати сообщений об ошибке разрешает perror (для DOS, Win16, Win32 и OS/2). Функция perror использует эти переменные для вывода сообщений об ошибках.
| Переменная | Назначение |
|---|---|
| errno | Указывает тип ошибки при математическом или системном вызове. В других ситуациях не содержит кода ошибки. |
| _doserrno | Содержит фактический код ошибки операционной системы, когда вызов операционной системы дает ошибку. |
| _sys_errlist | Массив строк сообщений. В качестве индекса массива для поиска строки по номеру ошибки можно использовать errno. |
| _sys_nerr | Число строковых сообщений в _sys_nerr. |
Мнемонические обозначения в _sys_errlist показаны в следующей таблице:
| Мнемоника | Описание |
|---|---|
| E2BIG | Слишком длинный список аргументов. |
| EACCES | В разрешении отказано. |
| EBADF | Неверный номер файла. |
| ECHILD | Нет дочернего процесса (Ч). |
| ECONTR | Попытка удаления текущего каталога CurDir. |
| EDEADLOCK | Нарушение блокировки (Ч). |
| EDOM | Ошибка домена (*) или математического аргумента (Ч). |
| EEXIST | Файл уже существует. |
| EFAULT | Неизвестная ошибка. |
| EINTR | Прерванный функциональный вызов (Ч). |
| EINVACC | Недопустимый код доступа. |
| EINVAL | Недопустимый аргумент. |
| EINVDAT | Недопустимые данные. |
| EINDRV | Недопустимая спецификация диска. |
| EINVENV | Недопустимая операционная среда. |
| EINVFMP | Недопустимый формат. |
| EINVFNC | Недопустимый номер функции. |
| EINVMEM | Недопустимый адрес блока памяти. |
| EIO | Ошибка ввода-вывода (Ч). |
| EMFILE | Открыто слишком много файлов. |
| EMATOOLONG | Слишком длинное имя файла (Ч). |
| ENFILE | Слишком много открытых файлов. |
| ENMFILE | Файлов больше нет. |
| ENODEV | Нет такого устройства. |
| ENOENT | Нет такого файла или каталога. |
| ENOEXEC | Ошибка формата выполняемого файла. |
| ENOMEM | Не хватает памяти. |
| ENOPATH | Маршрут не найден. |
| ENOSPC | На устройстве не осталось места (Ч). |
| ENOTSAM | Не то же устройство. |
| ENXIO | Нет такого устройства или адреса (Ч). |
| EPERM | Операция не разрешена (Ч). |
| EPIPE | Нарушение конвейера (Ч). |
| ERANGE | Результат вне диапазона (*) или слишком велик (Ч). |
| EORFS | Файловая система доступна только по чтению (Ч). |
| ESPIPE | Неразрешенная операция установки позиции (Ч). |
| EXDEV | Перекрестная связь между устройствами. |
| EZER0 | Ошибка 0. |
(Ч) - только для 32-разрядных приложений.
(*) - только для 16-разрядных приложений.
Ниже перечислены мнемоники фактических кодов ошибок DOS, в которые может устанавливаться _doserrno (это значение может не отображаться через errno):
| Мнемоника | Код ошибки DOS |
|---|---|
| E2BIG | Неверная операционная среда. |
| EACCES | Доступ запрещен. |
| EACCES | Неверный доступ. |
| EACCES | Это текущий каталог. |
| EBADF | Неверный описатель. |
| EFAULT | Зарезервирован. |
| EINVAL | Неверные данные. |
| EINVAL | Неверная функция. |
| EMFILE | Слишком много открытых файлов. |
| ENOENT | Такого файла или каталога нет. |
| ENOEXEC | Неверный формат. |
| ENOMEM | Нет памяти. |
| ENOMEM | Плохой блок. |
| EXDEV | Неверный диск. |
| EXDEV | Не то же устройство. |
Компонует форматы с плавающей точкой (для DOS, Win16, Win32 и OS/2). Вывод с плавающей точкой требует компоновки подпрограмм преобразования. Для уменьшения размера такая компоновка автоматически не выполняется. Однако, она выполняется автоматически при использовании в программе математической подпрограммы или получении числа с плавающей точкой.
Определяет заданный по умолчанию режим трансляции - текстовый или двоичный (для DOS, Win16, Win32 и OS/2). По умолчанию задается текстовый режим: при вводе возврат каретки/перевод строки транслируется в перевод строки, а при выводе наоборот.
Перехватывает операции распределения (для DOS, Win16, Win32 и OS/2). Содержит указатель на функцию без аргументов, возвращающую void. При невозможности распределения памяти будет вызываться функция, на которую указывает данная переменная. В качестве альтернативы можно использовать функцию _set_new_handler.
Содержит основной и дополнительный номера версии операционной системы (для DOS, Win16, Win32 и OS/2).
Содержит адрес сегмента PSP для текущей программы (для DOS, Win16, Win32 и OS/2). PSP - это дескриптор процесса DOS, который содержит начальную информацию о программе.
Указатель на идентификатор нити (для DOS, Win32 и OS/2). Это значение длинного целого типа, идентифицирующее текущую выполняемую нить.
Генерируют информацию о порожденной исключительной ситуации (для DOS, Win16, Win32 и OS/2). Эти глобальные переменные позволяют получить имя и место возникновения особой ситуации (в виде текстовой строки).
Содержит разницу в секундах между местным временем и временем по Гринвичу (для DOS, Win16, Win32 и OS/2). Используется функциями даты и времени.
Массив указателей на имена временных поясов (для DOS, Win16, Win32 и OS/2).
Содержит номер версии операционной системы (для DOS, Win16, Win32 и OS/2). Основной номер версии находится в старшем байте (или слове для 32-разрядного приложения).
Разрешает или запрещает прокрутку в консольных функциях ввода-вывода (для DOS, Win16, Win32 и OS/2). По умолчанию прокрутка разрешена - переменная имеет значение 1. При установке в 0 прокрутка запрещается. Данную переменную следует использовать только в текстовых приложениях.
Библиотека потоковых классов в С++ состоит из нескольких классов, распределенным по двум отдельным иерархическим деревьям. Данный справочный материал содержит некоторые наиболее полезные детали таких классов. Перечисляемые классы содержатся в различных файлах заголовков:
| Файл заголовка | Классы |
|---|---|
| constrea.h | conbuf, constream (только для приложений консольного режима). |
| iostream.h | ios, iostream, iostream_withassign, istream, istream_withassign, streambuf |
| fstream.h | filebuf, fstream, ostream, strstream, strstre- ambase, strstreambuf. |
Специализирует streambuf для обработки консольного вывода.
| Constructor | Создает подключенный conbuf. |
| clreol | Очищает экран до конца текстового окна. |
| clrscr | Очищает заданный экран. |
| delline | Удаляет строку в окне. |
| gotoxy | Позиционирует курсор в заданной позиции окна. |
| highvideo | Выделяет символы повышенной яркостью. |
| insline | Вставляет пустую строку. |
| lowvideo | Выделяет символы пониженной яркостью. |
| normvideo | Задает нормальную интенсивность символов. |
| overflow | Выводит содержимое conbuf. |
| setcursotype | Задает вид курсора. |
| textattr | Задает атрибут текста. |
| textbackground | Задает текстовый фоновый курсор. |
| textmode | Переводит курсор в текстовый режим. |
| wherex | Получает горизонтальную позицию курсора. |
| wherey | Получает вертикальную позицию курсора. |
| window | Определяет активное окно. |
Обеспечивает потоки вывода на консоль. Этот класс является производным от ostream и доступен только для приложений консольного режима.
| Constructor | Определяет для консоли неподсоединенный поток вывода. |
| clrscr | Очищает экран. |
| rdbuf | Возвращает указатель на назначенный для потока conbuf. |
| textmode | Переводит экран в текстовый режим. |
| window | Определяет активное окно. |
Специализирует streambuf для ввода и вывода символов. Управляет выделением и удалением буфера, а также установкой позиции в файле. Позволяет с помощью соответствующего конструктора или функции-элемента использовать небуферизованный ввод-вывод. По умолчанию файлы открываются в режиме openprot и допускают чтение или запись. Этот класс обеспечивает только базовые средства для ввода-вывода. Операции ввода-вывода выполняются с помощью функций streambuf.
| openprot | Заданная по умолчанию защита файла. Определяет разрешение чтения из файла и записи в файл. |
| constructor | Создает filebuf, не подключенный к файлу, или подключенный к файлу с заданным дескриптором. |
| attach | Связывает закрытый filebuf с файлом, заданным дескриптором. Если файловый буфер уже открыт, возвращает NULL. |
| close | Выводит содержимое буфера и закрывает файл. Обычно не требует явного вызова, т.к. закрытие обеспечивается деструктором. В случае ошибки возвращает 0. |
| fd | Возвращает дескриптор файла или EOF. |
| is_rtl_open | Возвращает в случае открытия файла ненулевое значение. |
| open | Открывает файл, заданный именем, и подключается к нему. Режим открытия задается аргументом режима. |
| overflow | Выводит буфер по указанному назначению. Выполняемые действия должны определяться в каждом классе. |
| seekoff | Устанавливает указатель по заданному смещению, перемещая его в заданном направлении относительно текущей позиции. Возвращает значение позиции. |
| setbuf | Выделяет буфер заданного размера для использования в качестве в filebuf. Если файл уже открыт, а буфер выделен, то происходит ошибка, и sefbuf возвращает NULL. |
| sync | Согласовывает внутренние структуры данных и внешнее представление потока. |
| underflow | Делает ввод доступным. Вызывается при отсутствии данных во входном буфере. |
Этот потоковый класс является производным от fstreambase и iostream и выполняет с помощью filebuf одновременный ввод и вывод.
| Constructor | Создает fstream, не подключенный или подключенный к файлу с заданным дескриптором. |
| open | Открывает для fstream файл, заданный именем и режимом открытия. |
| rdbuf | Возвращает используемый filebuf. |
Этот производный от ios класс обеспечивает общие для файловых потоков операции. Он используется в качестве базового для fstream, ifstream и ofstream.
| Constructor | Создает fstreambase, не подключенный или подключенный к файлу с заданным дескриптором. |
| attach | Связывает с дескриптором открытого файла. |
| open | Закрывает соответствующий filebuf и файл. |
| rdbuf | возвращает используемый filebuf. |
| setbuf | Резервирует указанную область памяти, способную вместить указанное число байт. |
Этот производный от fsreambase потоковый класс обеспечивает операции ввода через filebuf.
| Constructor | Создает ifstrem, не подключенный к файла или подключенный к заданному или открытому файлу. |
| open | Открывает файл для ifstream. |
| rdbuf | Возвращает используемый filebuf. |
| Флаг | Описание |
|---|---|
| skipws | Пропускает при вводе пробелы и разделители. |
| left | Выравнивание вывода влево. |
| right | Выравнивание вывода влево. |
| internal | Дополнение после знака или указателя основания. |
| dec | Десятичное преобразование. |
| oct | Восьмеричное преобразование. |
| hex | Шестнадцатиричное преобразование. |
| showbase | Показывает в выводе индикатор основания. |
| showpoint | Показывает при выводе с плавающей точкой десятичную точку. |
| uppercase | Преобразует шестнадцатиричный вывод в верхний регистр. |
| showpos | Выводит с положительными числами символ '+'. |
| scientific | Добавляет к числам с плавающей точкой суффикс с показателем степени (E). |
| fixed | Для вывода чисел с плавающей точкой использует десятичную фиксированную точку. |
| unitbuf | После включения выводит все потоки. |
| stdio | После включения выводит stdout и stderr. |
| adjustfield | Эти константы используются в качестве второго |
| basefield | параметра функции self. Они задают выравнива floatfield ние, систему счисления и формат числа. |
| seek_dir | Направление установки в потоке. |
| open_mode | Режим потоковой операции. |
| *pb | Соответствующий streambuf. |
| x_fill | Символ заполнения для вывода. |
| x_flags | Битовые флаги форматирования. |
| x_precision | Точность выводимых чисел с плавающей точкой. |
| state | Текущее состояние streambuf. |
| *x_tie | Связанный ostream (если он существует). |
| x_width | Ширина поля при выводе. |
| Constructor | Связывает данный streambuf с потоком или строит объект ios без соответствующего streambuf. |
| bad | Не 0 в случае ошибки. |
| bitalloc | Получает новый флаг битового набора. Возвращаемое значение может использовать для установки, очистки и проверки флаги. Это флаги форматирования, определяемые пользователем. |
| eof | В конце файла возвращает ненулевое значение. |
| fail | Не 0 при неуспешном выполнении операции. |
| fill | Возвращает текущий символ-заполнитель или сбрасывает его, возвращает предыдущий символ. |
| flags | Сбрасывает текущие флаги форматирования. |
| good | Не 0, если биты состояния не установлены (то есть нет ошибок). |
| presicion | Возвращает текущую точность числа с плавающей точкой. |
| rdbuf | Возвращает указатель на streambuf, назначенный для данного потока. |
| rdstate | Устанавливает флаги в соответствии с заданным значением. |
| setf | Возвращает ранее установленные флаги. |
| sync_with_stdio | Смешивает файлы stdio и потоки iostreams. В новой программе этого использовать не следует. |
| tie | Возвращает связанный поток или NULL, если такого потока не существует, или связывает с выходным потоком другой поток. |
| unseft | Очищает биты, соответствующие f, и возвращает значение, представляющее собой предыдущие установки. |
| with | Возвращает или устанавливает текущую ширину. |
| xalloc | Возвращает индекс в массиве ранее не используемых слов, которые можно применять как флаги форматирования. |
| init | Выполняет фактическую инициализацию. |
| selstate | Устанавливает все биты состояния. |
Данный производный от istream и ostream класс представляет собой смесь своих базовых классов для ввода и вывода в поток. Он является базовым для fstream и strstream.
| Constructor | Связывает с потоком заданный streambuf. |
Этот класс представляет собой iostream c добавленными оператором присваивания.
| Constructor | Заданный по умолчанию конструктор (вызывает конструктор iostream). |
Обеспечивает форматированный и неформатированный ввод из streambuf. Для фундаментальных типов операция >> переопределяется. Базовым для данного класса является класс ios.
| Constructor | Связывает с потоком данный streambuf. |
| gcount | Возвращает число последний раз выделенных символов. |
| get | Получает следующий символ либо EOF, сохраняя их в буфере. |
| getline | То же, что и get, но ограничитель также считывается. |
| ignore | Пропускает n символов в потоке. При обнаружении delim останавливается. |
| ipfx | Вызывается функциями ввода перед выборкой из входного потока. |
| peek | Возвращает следующий символ без извлечения. |
| putback | Помещает символ обратно в поток. |
| read | Извлекает из потока и помещает в массив указанное число символов. |
| seekg | Перемещает заданное число байт относительно текущей позиции для потока ввода. Можно задавать направление. |
| tellg | Возвращает текущую позицию курсора. В случае неуспешного выполнения возвращает отрицательное число. |
| eatwrite | Извлекает последовательные пробелы. |
Этот класс представляет собой istream с добавленной операцией присваивания.
| Constructor | Используемый по умолчанию конструктор (вызывает конструктор istream). |
Обеспечивает для strstreambuf операции ввода. Этот класс является производным от strstreambase и istream.
| Constructor | Создает istream с заданной строкой (нулевой символ не извлекается). |
Является производным от fstreamable и ostream и обеспечивает для filebuf операции ввода.
| Constructor | Создает osftream, не подключенный к файлу или подключает его к предварительно открытому файлу. |
| open | Открывает файл для заданного ofstream. |
| rdbuf | Возвращает используемый filebuf. |
Обеспечивает для streambuf форматированный или неформатированный вывод. Для всех фундаментальных типов операция << переопределяется. Этот производный от ios класс является базовым для constream, iostream, ofstream, ostrstream и ostream_withassing.
| Constructor | Связывает с потоком заданный streambuf. |
| flush | Сбрасывает поток. |
| opfx | Вызывается функциями вывода перед включением в поток вывода. Возвращает 0, если ostream имеет ненулевое состояния ошибки. |
| osfx | Выполняет операции, необходимые после операций вывода. |
| put | Вставляет символ. |
| seekp | Перемещает в абсолютную позицию или позицию относительно текущей позиции. |
| tellp | Возвращает текущую позицию потока. |
| write | Вставляет указанное число символов (включая нули. |
Этот класс представляет собой ostream с добавленной операцией присваивания.
| Используемый по умолчанию конструктор (вызывает конструктор ostream). |
Является производным от strstreambase и ostream и обеспечивает для strstreambuf операции вывода.
| Constructor | Создает динамический ostrstream с буфером заданного размера. |
| pcount | Возвращает число байт, сохраненный в данный момент в буфере. |
| str | Возвращает и деактивизирует буфер. Если он был динамическим, вы должны отменить его. |
Это базовый класс для всех других классов буферизации. Он обеспечивает буферный интерфейс между вашими данными и областями памяти, такими как память физических устройств. К содержимому этих областей можно обращаться по указателю.
| Constructor | Создает пустой объект буфера. |
| in_avail | Возвращает число символов, оставшихся в буфере ввода. |
| out_waiting | Возвращает число символов, оставшихся в буфере вывода. |
| sbumpc | Возвращает число символов в текущем буфере ввода, а затем продвигает позицию. |
| seekpos | Перемещает указатель на абсолютную позицию. |
| sgetc | Устанавливается на следующий символ в буфере ввода. |
| snextc | Продвигает позицию и возвращает следующий символ в буфере ввода. |
| sputbackc | Возвращает символ в поток ввода. |
| sputc | Помещает в буфер вывода один символ. |
| sputn | Помещает в буфер вывода n символов. |
| stossc | Продвигает позицию до следующего символа в буфере ввода. |
| allocate | Задает область вывода. |
| base | Возвращает начало буфера вывода. |
| blen | Возвращает длину буфера вывода. |
| eback | Возвращает начало секции обратного занесения в области получения. |
| ebuf | Возвращает из области буфера end+1. |
| epptr | Возвращает из области get или put end+1. |
| gbump | Продвигает указатель get. |
| gptr | Возвращает следующую ячейку в области get. |
| pbase | Возвращает начало области put. |
| pbump | Продвигает указатель put. |
| pptr | Возвращает следующую ячейку в области put. |
| setb | Устанавливает область буфера. |
| setg | Инициализирует указатели get. |
| setp | Инициализирует указатель put. |
| unbuffered | Устанавливает состояние буферизации или возвращает не 0 в случае отсутствия буферизации. |
Специализирует ios для строковых потоков. За исключением функции-элемента strstreambase::rdbuf, весь класс является защищенными. Этот класс является базовым для strstream, istrstream и ostrstream.
| Constructor | Создает strstreambase (пустой или с заданным буфером и начальным значением). |
| rdbuf | Возвращает указатель на связанный с данным объектом strstreambuf. |
Специализирует streambuf для форматирования в памяти.
| Constructor | Создает динамический strstreambuf. Память будет распределяться при необходимости или создает динамический буфер с заданными функциями выделения и освобождения. |
| deallocate | Выполняет выделение буфера на нижнем уровне. |
| freeze | Если параметр ввода ненулевой, то запрещает запись символов в буфер. Передача нулевого значения вновь активизирует буфер. |
| overflow | Выводит буфер по указанному назначению. Выполняемое действие должно определяться в каждом производном классе. |
| seekoff | Перемещает указатель относительно текущей позиции. |
| setbuf | Задает используемый буфер. |
| str | Возвращает указатель на буфер и активизирует его. |
| sync | Устанавливает соответствие между внутренними структурами данных и внешним представлением потоков. |
| underflow | Делает буфер ввода доступным. Вызывается, когда запрашивается символ, а strstreambuf пуст. Выполняемые действия должны определяться в производном классе. |
Обеспечивает для strstreambuf одновременный ввод и вывод. Этот класс является производным от strstreambase и iostream.
| Constructor | Создает динамический strstream. |
| str | Возвращает и деактивизирует буфер. Если он был динамическим, то пользователь должен освободить его. |
Borland поддерживает постоянные потоки, состоящие из иерархии класса и макрокоманд, помогающих вам строить потоковые объекты.
Иерархия классов постоянных потоков представляется следующей
схемой:
pstream
^ ^ ^
TStreamable
^ ^
ipstream opstream fpbase
^ ^ ^ ^
ofpstream
ifstream
Двойная стрелка указывает, что TStreamableBase - это дружественный класс.
Обеспечивает базовые операции, общие для всех потоков ввода-вывода объектного файла.
Класс fpbase (objstm.h)
Функции-элементы
| attach | Если это возможно, связывает файл с заданным дескриптором с данными потоком. |
| close | Закрывает поток и соответствующий файл. |
| open | Открывает файл с указанным именем с заданными режимом и защитой. Открытый файл подключается к данному потоку. |
| rdbuf | Возвращает указатель на текущий файловый буфер. |
| setbuf | Выделяет буфер указанного размера. |
Обеспечивает базовый класс для чтения (извлечения) потоковых объектов из потоков.
| Constructor | Создает буферизованный объект ifstream. Вы можете задать размер и начальное содержимое буфера, а также открыть файл и подключить его к потоку, задав имя, режиме и защиту или дескриптор файла. |
| open | Открывает указанный файл с заданным режимом и защитой. По умолчанию задается режим in (ввод) и защита openprot. Открытый файл связывается с потоком. |
| rdbuf | Возвращает указатель на текущий файловый буфер. |
Обеспечивает базовый класс для чтения (извлечения) альтернативных объектов.
| Constructor | Создает буферизованный ipstream c заданным буфером и устанавливает элемент данных bp. Защищенная форма конструктора не инициализирует указатель буфера. |
| find | Возвращает указатель на объект, соответствующий заданному идентификатору. |
| freadBytes | Считывает в указанный буфер заданное число байт. |
| freadString | Считывает строку из буфера. Определяет длину строки и выделяет соответствующий символьный массив far. Считывает массив в строку и возвращает указатель на массив. Освободить выделенный блок памяти должна вызывающая сторона. |
| getVersion | Возвращает номер версии объекта. |
| readByte | Возвращает символ в текущей позиции курсора. |
| readBytes | Считывает заданное число байт из текущей позиции потока и записывает их в заданный массив. |
| readString | Выделяет буфер для записи строки в текущей позиции курсора. Считывает строку из потока в буфер. Либо считывает строку в заданный аргументом буфер. |
| readWord | Возвращает 32-битовое слово в текущей позиции в потоке. |
| readWord16 | Возвращает 16-битовое слово в текущей позиции потока. |
| registerObject | Возвращает объект, на который указывает аргумент. |
| seekg | Перемещает позицию потока в абсолютную позицию, заданную аргументом или перемещает позицию относительно текущей позиции на указанное смещение (в прямом или обратном направлении). |
| tellg | Возвращает текущую позицию в потоке (абсолютную). |
| readData | Вызывает для чтения из потока соответствующую функцию read и помещает ее в заданный объект. Если объекта не существует, то сначала вызывается функция build. |
| readPrefix | Возвращает объект TStreamableClass, соответствующий заданному классу, записанному в текущей позиции. |
| readSuffix | Считывает и проверяет конечный байт поля имени объекта. |
| readVersion | Устанавливает для потока ввода номер версии. |
| Operator >> | Извлекает (считывает) данные из заданного потока ipstream и помещает его в указанный аргумент. Возвращается ссылка на поток, что позволяет обычным образом использовать цепочку операций. |
| flush | Сбрасывает поток. |
| fwriteBytes | Записывает заданное число байт из указанного буфера в поток. |
| registerObject | Регистрирует класс объекта, указываемого аргументом. |
| registerVB | Регистрирует виртуальный базовый класс. |
| seekp | Перемещает текущую позицию потока в заданную абсолютную позицию или в позицию, заданную смещением. |
| tellp | Возвращает абсолютную текущую позицию потока. |
| writeByte | Записывает заданный байт в поток. |
| writeBytes | Записывает указанное число байт из буфера в поток. |
| writeObject | Записывает объект, на который указывает аргумент, в поток вывода. |
| writeObjectPtr | Записывает заданный указатель объекта в поток вывода. |
| writeString | Записывает в поток заданную строку (с предшествующим байтом длины). |
| writeWord | Записывает в поток указанное 32-битовое слово. |
| writeWord16 | Записывает в поток указанное 16-битовое слово. |
| writeWord32 | Записывает в поток указанное 32-битовое слово. |
| writeData | Записывает данные в поток путем вызова для записываемого объекта соответствующей функции-элемента write. |
| writePrefix | Записывает в поток класс с указанным префиксом имени. Операция << использует эту функцию для записи с помощью writeData префикса и суффикса, который используется для обеспечения надежного потокового ввода-вывода. |
| writeSuffix | Записывает в поток класс с указанным суффиксом имени. Операция << использует эту функцию для записи с помощью writeData префикса и суффикса, который используется для обеспечения надежного потокового ввода-вывода. |
| operator << | Включает (записывает) заданный аргумент в указанный объект ipstream. Тип данный определяет подразумеваемую форму записи. |
Это базовый класс для управления потоковыми объектами.
| bp | Указатель на буфер потока. |
| state | Флаги состояния формата. |
| Constructor | Создает буферизованный pstream с заданным буфером и устанавливает элемент данных в bp. Состояние устанавливается в 0. |
| Destructor | Уничтожает объект pstream. |
| bad | В случае ошибки возвращает не 0. |
| clear | Устанавливает состояние потока в заданное значение (по умолчанию 0). |
| eof | В конце потока возвращает не 0. |
| fail | В случае неудачного завершения потоковой операции возвращает ненулевое значение. |
| good | Возвращает не 0, если биты состояния не установлены (то есть нет ошибок). |
| rdbuf | Возвращает указатель pb на назначенный потоку буфер. |
| rdstate | Возвращает текущее значение состояния. |
| operator void *() | Переопределяет операцию приведения типа (указателя на void). При неуспешном выполнении возвращает 0. |
| operator !() | Переопределяет операцию NOT. Возвращает значение, переданное pstream::fail. |
| init | Инициализирует поток: устанавливает состояние в 0, а bp - в переданный аргумент sbp. |
| setstate | Обновляет элемент данных state значением state |= (b & 0xFF). |
Классы, наследующие из TStreamableBase, называются потоковыми классами. Это означает, что их объекты могут записываться в потоки и считываться из них. Для построения собственных потоковых классов также нужно использовать этот базовый класс. Можно воспользоваться и множественным наследованием.
| Destructor | Уничтожает объект TStreamableBase(). |
| CastableID | Обеспечивает поддержку надежного приведения типов. Возвращает строку, содержащую имя типа. |
| FindBase | Возвращает указатель на базовый класс. |
| MostDerived | Возвращает указатель void на фактический потоковый объект. |
Используется частным классом базы данных и pstream для регистрации в потоковом классе.
| Constructor | Создает объект TStreamableClass с заданным именем и функцией построения, затем регистрирует тип. Каждый потоковый класс имеет функцию построения build типа BUILDER. Для обеспечения надежного по типу ввода и вывода объектов с использованием потоков администратору потоков требуется доступ к информации об именах и типах каждого класса. |
Базовый класс для всех потоковых объектов.
| Constructor | Строит объект TStreamer и инициализирует указатель потокового объекта. |
| GetObject | Возвращает адрес компонента TStreamable потокового объекта. |
| Read | "Чистая" виртуальная функция, которая должна переопределяться в каждом потоковом классе. Из переданного ipstream она должна считывать необходимые элементы данных для потокового класса. |
| StreaableName | "Чистая" виртуальная функция-элемент, которая должна переопределяться для каждого потокового класса. Возвращает имя потокового класса (строку с завершающим 0), которое используется администратором потока для регистрации этого класса. |
| Write | "Чистая" виртуальная функция-элемент, которая должна переопределяться для каждого потокового класса. Она должна записывать в заданный объект opstream необходимые элементы данных потокового класса. |
Вычисляет расстояние (в байтах) между базой потокового объекта и началом компонента TStreamableBase этого объекта.
Используется в определении класса для добавления элементов, необходимых для организации потока. Так как она содержит спецификаторы доступа, за ней должен следовать спецификатор доступа (или он должен использоваться в конце определения класса). Первым параметром должна быть макрокоманда, расширяющаяся по условию в __import или __export (в зависимости от того, экспортируется или импортируется класс из DLL). Второй параметр - имя потокового
класса, а третий - номер версии объекта.
Используется аналогично DECLARE_STREAMABLE. Ее не следует
использовать, если класс должен записываться и считываться с помощью функций Read и Write, определенных без изменения в своем
базовом классе. Обычно это происходит, если производный класс переопределяет виртуальные функции базового класса или предусматривает несколько конструкторов, но не добавляет элементов данных.
Используется в абстрактном классе и содержит ядро потокового
кода. Описывает функции Read и Write, определения которых вы
должны предусмотреть, и функцию Buyild, вызывающую конструктор
TStreabableClass. Описания параметров см. в DECLARE_STREAMABLE.
Используется в DECLARE_STREAMABLE_FROM_BASE и описывает вложенный класс Streamer без функций Read и Write. Описания параметров см. в DECLARE_STREAMABLE.
Используется в DECLARE_ABSTRACT_STREAMABLE и описывает вложенный класс Streamer без функции Build. Описания параметров см.
в DECLARE_STREAMABLE.
Описывает инсертеры и экстракторы. Для классов шаблонов
должна использовать в качестве макроаргумента class<...>. В других случаях используется только имя класса.
Описывает конструктор, вызываемый функцией Streamer::Build.
Макрокоманды IMPLEMENT_STREAMABLE генерируют для класса регистрационный объект через IMPLEMENT_STREAMABLE_CLASS и через
IMPLEMENT_ABSTRACT_STREABABLE генерируют различные необходимые
для потокового класса Функции-элементы.
Макрокоманда IMPLEMENT_STREAMABLE используются, когда класс
не имеет других базовых классов, кроме TStreamableBase. Ее единственным параметром является имя класса. Нумерованные версии этой
макрокоманды (IMPLEMENT_STREAMABLE1, IMPLEMENT_STREAMABLE2 и
т.д.) используются для классов, имеющих другие базовые классы.
Строит экземпляр класса TStreamableClass.
Определяют конструктор, вызываемый функцией Build. В соответствующей макрокоманде должны перечисляться все базовые классы.
Создает экземпляр операции извлечения указателя (>>).
Устанавливает надежный по типу идентификатор с приведенным
типом.
Реализуют код, поддерживающий надежный по типу механизм приведения типа.
Определяет конструктор Streamer.
Эта макрокоманда расширяется в IMPLEMENT_STREAMABLE_CLASS
(которая строит TStreamableClass), IMPLEMENT_STREAMABLE_CTOR1 и
IMPLEMENT_STREAMABLE_POINTER.
Назад | Содержание | Вперед
Макрокоманды, начинающиеся с DECLARE
Макрокоманда DECLARE_STREABABLE (objstrm.h)
Макрокоманда DECLARE_STREAMABLE_FROM_BASE (objstrm.h)
Макрокоманда DECLARE_ABSTRACT_STREAMABLE (objstrm.h)
Макрокоманда DECLARE_STREAMER_FROM_BASE (objstrm.h)
Макрокоманда DECLARE_ABSTRACT_STREAMER (objstrm.h)
Макрокоманда DECLARE_STREAMABLE_OPS (objstrm.h)
Макрокоманда DECLARE_STREAMABLE_CTOR (objstrm.h)
Макрокоманды, начинающиеся с IMPLEMENT
Макрокоманды IMPLEMENT_STREAMABLE1..4 (objstrm.h)
Макрокоманда IMPLEMENT_STREAMABLE_CLASS (objstrm.h)
Макрокоманды IMPLEMENT_STREAMABLE_CTOR1..4 (objstrm.h)
Макрокоманда IMPLEMENT_POINTER (objstrm.h)
Макрокоманда IMPLEMENT_CASTABLE (objstrm.h)
Макрокоманды IMPLEMENT_CASTABLE1..5 (objstrm.h)
Макрокоманда IMPLEMENT_STREAMER (objstrm.h)
Макрокоманды IMPLEMENT_ABSTRACT_STREAMABLE1..5 (objstrm.h)
Макрокоманда IMPLEMENT_STREAMABLE_FROM_BASE (objstrm.h)