Глобальные переменные
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.
Назад | Содержание | Вперед
|
|