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)