
TBN.ru
|
Глобальные
переменные
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. |
|