Глобальные переменные

Borland С++ предусматривает ряд предопределенных глобальных переменных, которые могут использоваться при работе с датой, временем, аргументами командной строки и т.д.

Переменная _8087 (dos.h)

Флаг микропроцессора (для DOS, Win16, Win32). Устанавливается в ненулевое значение, если логика автообнаружение кода запуска обнаруживает наличие сопроцессора. Эту логику можно переопределить установкой переменной операционной среды 87.

Переменная _argc (dos.h)

Содержит число аргументов командной строки (для DOS, Win16, Win32 и OS/2) - значение argc, переданное main при запуске программы.

Переменная _argv (dos.h)

Массив указателей на аргументы командной строки (для DOS, Win16, Win32 и OS/2). Элементы этого массива передаются программе при ее запуске.

Переменная _ctype (ctype.h)

Информационных массив символьных атрибутов (для DOS, Win16, Win32 и OS/2), индексируемых значением ASCII +1. Каждая запись это битовый набор, описывающий символ.

Переменная _daylight (time.h)

Указывает, требуется ли сохранение настраиваемого времени суток (для DOS, Win16, Win32 или OS/2). Используется функциями даты и времени. Принимает значения 1 (сохраненное время) и 0 (стандартное).

Переменная _directvideo (cohio.h)

Флаг, управляющий видеовыводом (для DOS, Win16, Win32). Определяет вывод непосредственно в видеопамять (1) или через вызовы BIOS в ПЗУ (0). По умолчанию равна 1. Эту переменную следует использовать только в символьных приложениях.

Переменная _environ (dos.h)

Позволяет обращаться к системным переменным операционной среды и представляет собой массив указателей на строки "переменная=значение" (для DOS, Win16, Win32 и OS/2). Значение в строке может быть пустым. При выполнении значения переменных среды передаются непосредственно программе.

Обращаться к _environ можно через getenv, а добавлять, изменять или удалять записи массива _environ - с помощью getenv.

Переменные errno, _doserrno, _sys_errlist, _sys_nerr (dos.h, errno.h)

Для печати сообщений об ошибке разрешает 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 Не то же устройство.

Переменная _floatconvert (stdio.h)

Компонует форматы с плавающей точкой (для DOS, Win16, Win32 и OS/2). Вывод с плавающей точкой требует компоновки подпрограмм преобразования. Для уменьшения размера такая компоновка автоматически не выполняется. Однако, она выполняется автоматически при использовании в программе математической подпрограммы или получении числа с плавающей точкой.

Переменная _fmode (fcntl.h)

Определяет заданный по умолчанию режим трансляции - текстовый или двоичный (для DOS, Win16, Win32 и OS/2). По умолчанию задается текстовый режим: при вводе возврат каретки/перевод строки транслируется в перевод строки, а при выводе наоборот.

Переменная _new_handler

Перехватывает операции распределения (для DOS, Win16, Win32 и OS/2). Содержит указатель на функцию без аргументов, возвращающую void. При невозможности распределения памяти будет вызываться функция, на которую указывает данная переменная. В качестве альтернативы можно использовать функцию _set_new_handler.

Переменные _osmajor, _osminor_, _osversion (dos.h)

Содержит основной и дополнительный номера версии операционной системы (для DOS, Win16, Win32 и OS/2).

Переменная _psp (dos.h)

Содержит адрес сегмента PSP для текущей программы (для DOS, Win16, Win32 и OS/2). PSP - это дескриптор процесса DOS, который содержит начальную информацию о программе.

Переменная _threadid (stddef.h)

Указатель на идентификатор нити (для DOS, Win32 и OS/2). Это значение длинного целого типа, идентифицирующее текущую выполняемую нить.

Переменные __throwExceptionName, __throwFileName, __throwLineNumber (except.h)

Генерируют информацию о порожденной исключительной ситуации (для DOS, Win16, Win32 и OS/2). Эти глобальные переменные позволяют получить имя и место возникновения особой ситуации (в виде текстовой строки).

Переменная _timezone (time.h)

Содержит разницу в секундах между местным временем и временем по Гринвичу (для DOS, Win16, Win32 и OS/2). Используется функциями даты и времени.

Переменная _tzname (time.h)

Массив указателей на имена временных поясов (для DOS, Win16, Win32 и OS/2).

Переменная _version (dos.h)

Содержит номер версии операционной системы (для DOS, Win16, Win32 и OS/2). Основной номер версии находится в старшем байте (или слове для 32-разрядного приложения).

Переменная _wscroll (conio.h)

Разрешает или запрещает прокрутку в консольных функциях ввода-вывода (для 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.

Класс conbuf (constrea.h)

Специализирует streambuf для обработки консольного вывода.

Функции-элементы

Constructor Создает подключенный conbuf.
clreol Очищает экран до конца текстового окна.
clrscr Очищает заданный экран.
delline Удаляет строку в окне.
gotoxy Позиционирует курсор в заданной позиции окна.
highvideo Выделяет символы повышенной яркостью.
insline Вставляет пустую строку.
lowvideo Выделяет символы пониженной яркостью.
normvideo Задает нормальную интенсивность символов.
overflow Выводит содержимое conbuf.
setcursotype Задает вид курсора.
textattr Задает атрибут текста.
textbackground Задает текстовый фоновый курсор.
textmode Переводит курсор в текстовый режим.
wherex Получает горизонтальную позицию курсора.
wherey Получает вертикальную позицию курсора.
window Определяет активное окно.

Класс constream (constrea.h)

Обеспечивает потоки вывода на консоль. Этот класс является производным от ostream и доступен только для приложений консольного режима.

Функции-элементы

Constructor Определяет для консоли неподсоединенный поток вывода.
clrscr Очищает экран.
rdbuf Возвращает указатель на назначенный для потока conbuf.
textmode Переводит экран в текстовый режим.
window Определяет активное окно.

Класс filebuf (fstream.h)

Специализирует 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 Делает ввод доступным. Вызывается при отсутствии данных во входном буфере.

Класс fstream (fstream.h)

Этот потоковый класс является производным от fstreambase и iostream и выполняет с помощью filebuf одновременный ввод и вывод.

Функции-элементы

Constructor Создает fstream, не подключенный или подключенный к файлу с заданным дескриптором.
open Открывает для fstream файл, заданный именем и режимом открытия.
rdbuf Возвращает используемый filebuf.

Класс fstreamable (fstream.h)

Этот производный от ios класс обеспечивает общие для файловых потоков операции. Он используется в качестве базового для fstream, ifstream и ofstream.

Функции-элементы

Constructor Создает fstreambase, не подключенный или подключенный к файлу с заданным дескриптором.
attach Связывает с дескриптором открытого файла.
open Закрывает соответствующий filebuf и файл.
rdbuf возвращает используемый filebuf.
setbuf Резервирует указанную область памяти, способную вместить указанное число байт.

Класс ifstream (fstream.h)

Этот производный от fsreambase потоковый класс обеспечивает операции ввода через filebuf.

Функции-элементы

Constructor Создает ifstrem, не подключенный к файла или подключенный к заданному или открытому файлу.
open Открывает файл для ifstream.
rdbuf Возвращает используемый filebuf.

Класс ios (iostream.h)

Обеспечивает общие операции для ввода и вывода. Производные от него классы (istream, ostream, iostream) специализируют ввод-вывод с помощью операций форматирования высокого уровня. Класс ios является базовым для istream, ostream, fstreambase и strstreambase.

Флаги формата

Флаг Описание
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 Устанавливает все биты состояния.

Класс iostream (iostream.h)

Данный производный от istream и ostream класс представляет собой смесь своих базовых классов для ввода и вывода в поток. Он является базовым для fstream и strstream.

Функции-элементы

Constructor Связывает с потоком заданный streambuf.

Класс iostream_withassign (iostream.h)

Этот класс представляет собой iostream c добавленными оператором присваивания.

Функции-элементы

Constructor Заданный по умолчанию конструктор (вызывает конструктор iostream).

Класс istream (iostream.h)

Обеспечивает форматированный и неформатированный ввод из streambuf. Для фундаментальных типов операция >> переопределяется. Базовым для данного класса является класс ios.

Функции-элементы

Constructor Связывает с потоком данный streambuf.
gcount Возвращает число последний раз выделенных символов.
get Получает следующий символ либо EOF, сохраняя их в буфере.
getline То же, что и get, но ограничитель также считывается.
ignore Пропускает n символов в потоке. При обнаружении delim останавливается.
ipfx Вызывается функциями ввода перед выборкой из входного потока.
peek Возвращает следующий символ без извлечения.
putback Помещает символ обратно в поток.
read Извлекает из потока и помещает в массив указанное число символов.
seekg Перемещает заданное число байт относительно текущей позиции для потока ввода. Можно задавать направление.
tellg Возвращает текущую позицию курсора. В случае неуспешного выполнения возвращает отрицательное число.
eatwrite Извлекает последовательные пробелы.

Класс istream_withassign (iostream.h)

Этот класс представляет собой istream с добавленной операцией присваивания.

Функции-элементы

Constructor Используемый по умолчанию конструктор (вызывает конструктор istream).

Класс istream (strstrea.h)

Обеспечивает для strstreambuf операции ввода. Этот класс является производным от strstreambase и istream.

Функции-элементы

Constructor Создает istream с заданной строкой (нулевой символ не извлекается).

Класс ofstream (fstream.h)

Является производным от fstreamable и ostream и обеспечивает для filebuf операции ввода.

Функции-элементы

Constructor Создает osftream, не подключенный к файлу или подключает его к предварительно открытому файлу.
open Открывает файл для заданного ofstream.
rdbuf Возвращает используемый filebuf.

Класс ostream (iostream.h)

Обеспечивает для streambuf форматированный или неформатированный вывод. Для всех фундаментальных типов операция << переопределяется. Этот производный от ios класс является базовым для constream, iostream, ofstream, ostrstream и ostream_withassing.

Функции-элементы

Constructor Связывает с потоком заданный streambuf.
flush Сбрасывает поток.
opfx Вызывается функциями вывода перед включением в поток вывода. Возвращает 0, если ostream имеет ненулевое состояния ошибки.
osfx Выполняет операции, необходимые после операций вывода.
put Вставляет символ.
seekp Перемещает в абсолютную позицию или позицию относительно текущей позиции.
tellp Возвращает текущую позицию потока.
write Вставляет указанное число символов (включая нули.

Класс ostream_withassign (iostream.h)

Этот класс представляет собой ostream с добавленной операцией присваивания.

Функции-элементы

Constructor

Используемый по умолчанию конструктор (вызывает конструктор ostream).

Класс oststream (strstrea.h)

Является производным от strstreambase и ostream и обеспечивает для strstreambuf операции вывода.

Функции-элементы

Constructor Создает динамический ostrstream с буфером заданного размера.
pcount Возвращает число байт, сохраненный в данный момент в буфере.
str Возвращает и деактивизирует буфер. Если он был динамическим, вы должны отменить его.

Класс streambuf (iostream.h)

Это базовый класс для всех других классов буферизации. Он обеспечивает буферный интерфейс между вашими данными и областями памяти, такими как память физических устройств. К содержимому этих областей можно обращаться по указателю.

Функции-элементы

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 в случае отсутствия буферизации.

Класс strstreambase (strstrea.h)

Специализирует ios для строковых потоков. За исключением функции-элемента strstreambase::rdbuf, весь класс является защищенными. Этот класс является базовым для strstream, istrstream и ostrstream.

Функции-элементы

Constructor Создает strstreambase (пустой или с заданным буфером и начальным значением).
rdbuf Возвращает указатель на связанный с данным объектом strstreambuf.

Класс strstreambuf (strstrea.h)

Специализирует streambuf для форматирования в памяти.

Функции-элементы

Constructor Создает динамический strstreambuf. Память будет распределяться при необходимости или создает динамический буфер с заданными функциями выделения и освобождения.
deallocate Выполняет выделение буфера на нижнем уровне.
freeze Если параметр ввода ненулевой, то запрещает запись символов в буфер. Передача нулевого значения вновь активизирует буфер.
overflow Выводит буфер по указанному назначению. Выполняемое действие должно определяться в каждом производном классе.
seekoff Перемещает указатель относительно текущей позиции.
setbuf Задает используемый буфер.
str Возвращает указатель на буфер и активизирует его.
sync Устанавливает соответствие между внутренними структурами данных и внешним представлением потоков.
underflow Делает буфер ввода доступным. Вызывается, когда запрашивается символ, а strstreambuf пуст. Выполняемые действия должны определяться в производном классе.

Класс strstream (strstrea.h)

Обеспечивает для strstreambuf одновременный ввод и вывод. Этот класс является производным от strstreambase и iostream.

Функции-элементы

Constructor Создает динамический strstream.
str Возвращает и деактивизирует буфер. Если он был динамическим, то пользователь должен освободить его.
Постоянные потоковые классы и макрокоманды

Borland поддерживает постоянные потоки, состоящие из иерархии класса и макрокоманд, помогающих вам строить потоковые объекты.

Иерархия классов постоянных потоков

Иерархия классов постоянных потоков представляется следующей схемой: pstream ^ ^ ^ TStreamable ^ ^ ipstream opstream fpbase ^ ^ ^ ^ ofpstream ifstream

Двойная стрелка указывает, что TStreamableBase - это дружественный класс.

Класс fpbase (objstm.h)

Обеспечивает базовые операции, общие для всех потоков ввода-вывода объектного файла.

Функции-элементы

attach Если это возможно, связывает файл с заданным дескриптором с данными потоком.
close Закрывает поток и соответствующий файл.
open Открывает файл с указанным именем с заданными режимом и защитой. Открытый файл подключается к данному потоку.
rdbuf Возвращает указатель на текущий файловый буфер.
setbuf Выделяет буфер указанного размера.

Класс ifpstream (objstrm.h)

Обеспечивает базовый класс для чтения (извлечения) потоковых объектов из потоков.

Функции-элементы

Constructor Создает буферизованный объект ifstream. Вы можете задать размер и начальное содержимое буфера, а также открыть файл и подключить его к потоку, задав имя, режиме и защиту или дескриптор файла.
open Открывает указанный файл с заданным режимом и защитой. По умолчанию задается режим in (ввод) и защита openprot. Открытый файл связывается с потоком.
rdbuf Возвращает указатель на текущий файловый буфер.

Класс ipstream (objstrm.h)

Обеспечивает базовый класс для чтения (извлечения) альтернативных объектов.

Функции-элементы

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. Тип данный определяет подразумеваемую форму записи.

Класс pstream (objstrm.h)

Это базовый класс для управления потоковыми объектами.

Элементы данных

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 (objstrn.h)

Классы, наследующие из TStreamableBase, называются потоковыми классами. Это означает, что их объекты могут записываться в потоки и считываться из них. Для построения собственных потоковых классов также нужно использовать этот базовый класс. Можно воспользоваться и множественным наследованием.

Функции-элементы

Destructor Уничтожает объект TStreamableBase().
CastableID Обеспечивает поддержку надежного приведения типов. Возвращает строку, содержащую имя типа.
FindBase Возвращает указатель на базовый класс.
MostDerived Возвращает указатель void на фактический потоковый объект.

Класс TStreamable (streambl.h)

Используется частным классом базы данных и pstream для регистрации в потоковом классе.

Функции-элементы

Constructor Создает объект TStreamableClass с заданным именем и функцией построения, затем регистрирует тип. Каждый потоковый класс имеет функцию построения build типа BUILDER. Для обеспечения надежного по типу ввода и вывода объектов с использованием потоков администратору потоков требуется доступ к информации об именах и типах каждого класса.

Класс TStreamer (objstrm.h)

Базовый класс для всех потоковых объектов.

Функции-элементы

Constructor Строит объект TStreamer и инициализирует указатель потокового объекта.
GetObject Возвращает адрес компонента TStreamable потокового объекта.
Read "Чистая" виртуальная функция, которая должна переопределяться в каждом потоковом классе. Из переданного ipstream она должна считывать необходимые элементы данных для потокового класса.
StreaableName "Чистая" виртуальная функция-элемент, которая должна переопределяться для каждого потокового класса. Возвращает имя потокового класса (строку с завершающим 0), которое используется администратором потока для регистрации этого класса.
Write "Чистая" виртуальная функция-элемент, которая должна переопределяться для каждого потокового класса. Она должна записывать в заданный объект opstream необходимые элементы данных потокового класса.

Макрокоманда __DELTA (streambl.h)

Вычисляет расстояние (в байтах) между базой потокового объекта и началом компонента TStreamableBase этого объекта.

Макрокоманды, начинающиеся с DECLARE

Макрокоманда DECLARE_STREABABLE (objstrm.h)

Используется в определении класса для добавления элементов, необходимых для организации потока. Так как она содержит спецификаторы доступа, за ней должен следовать спецификатор доступа (или он должен использоваться в конце определения класса). Первым параметром должна быть макрокоманда, расширяющаяся по условию в __import или __export (в зависимости от того, экспортируется или импортируется класс из DLL). Второй параметр - имя потокового класса, а третий - номер версии объекта.

Макрокоманда DECLARE_STREAMABLE_FROM_BASE (objstrm.h)

Используется аналогично DECLARE_STREAMABLE. Ее не следует использовать, если класс должен записываться и считываться с помощью функций Read и Write, определенных без изменения в своем базовом классе. Обычно это происходит, если производный класс переопределяет виртуальные функции базового класса или предусматривает несколько конструкторов, но не добавляет элементов данных.

Макрокоманда DECLARE_ABSTRACT_STREAMABLE (objstrm.h)

Используется в абстрактном классе и содержит ядро потокового кода. Описывает функции Read и Write, определения которых вы должны предусмотреть, и функцию Buyild, вызывающую конструктор TStreabableClass. Описания параметров см. в DECLARE_STREAMABLE.

Макрокоманда DECLARE_STREAMER_FROM_BASE (objstrm.h)

Используется в DECLARE_STREAMABLE_FROM_BASE и описывает вложенный класс Streamer без функций Read и Write. Описания параметров см. в DECLARE_STREAMABLE.

Макрокоманда DECLARE_ABSTRACT_STREAMER (objstrm.h)

Используется в DECLARE_ABSTRACT_STREAMABLE и описывает вложенный класс Streamer без функции Build. Описания параметров см. в DECLARE_STREAMABLE.

Макрокоманда DECLARE_STREAMABLE_OPS (objstrm.h)

Описывает инсертеры и экстракторы. Для классов шаблонов должна использовать в качестве макроаргумента class<...>. В других случаях используется только имя класса.

Макрокоманда DECLARE_STREAMABLE_CTOR (objstrm.h)

Описывает конструктор, вызываемый функцией Streamer::Build.

Макрокоманды, начинающиеся с IMPLEMENT

Макрокоманды IMPLEMENT_STREAMABLE1..4 (objstrm.h)

Макрокоманды IMPLEMENT_STREAMABLE генерируют для класса регистрационный объект через IMPLEMENT_STREAMABLE_CLASS и через IMPLEMENT_ABSTRACT_STREABABLE генерируют различные необходимые для потокового класса Функции-элементы.

Макрокоманда IMPLEMENT_STREAMABLE используются, когда класс не имеет других базовых классов, кроме TStreamableBase. Ее единственным параметром является имя класса. Нумерованные версии этой макрокоманды (IMPLEMENT_STREAMABLE1, IMPLEMENT_STREAMABLE2 и т.д.) используются для классов, имеющих другие базовые классы.

Макрокоманда IMPLEMENT_STREAMABLE_CLASS (objstrm.h)

Строит экземпляр класса TStreamableClass.

Макрокоманды IMPLEMENT_STREAMABLE_CTOR1..4 (objstrm.h)

Определяют конструктор, вызываемый функцией Build. В соответствующей макрокоманде должны перечисляться все базовые классы.

Макрокоманда IMPLEMENT_POINTER (objstrm.h)

Создает экземпляр операции извлечения указателя (>>).

Макрокоманда IMPLEMENT_CASTABLE (objstrm.h)

Устанавливает надежный по типу идентификатор с приведенным типом.

Макрокоманды IMPLEMENT_CASTABLE1..5 (objstrm.h)

Реализуют код, поддерживающий надежный по типу механизм приведения типа.

Макрокоманда IMPLEMENT_STREAMER (objstrm.h)

Определяет конструктор Streamer.

Макрокоманды IMPLEMENT_ABSTRACT_STREAMABLE1..5 (objstrm.h)

Макрокоманда IMPLEMENT_STREAMABLE_FROM_BASE (objstrm.h)

Эта макрокоманда расширяется в IMPLEMENT_STREAMABLE_CLASS (которая строит TStreamableClass), IMPLEMENT_STREAMABLE_CTOR1 и IMPLEMENT_STREAMABLE_POINTER.

Назад | Содержание | Вперед

Copyright © CIT