UNIVERS
15.3
UNIVERS base processing software API
|
#include <DbTable.H>
Public Member Functions | |
DbTable (const DbTTDesc &dbtt, DbIndex quant=DB_QUANT, DbIndex start_volume=DB_START_VOLUME) | |
DbTable (DbTable &dbt) | |
virtual | ~DbTable () |
const DbTTDesc & | table_format () const |
virtual DbIndex | lines_count () const |
virtual DbIndex | lines_range (DbIndex line1, DbIndex line2, DbIndex *line=NULL) const |
virtual void | get_value (const char *column, DbIndex line, void *ptr) |
virtual void | get_values (const char *column, DbIndex start_line, DbIndex lines_cnt, void *ptr) |
virtual Logic | check_empty_value (const char *column, DbIndex line) |
virtual UnitId | get_unit (const char *column) const |
virtual const DmnDescAr & | get_domains () |
virtual DbDomainDesc | get_domain (const char *column) const |
virtual Compar | compare_lines (const char *column, DbIndex line1, DbIndex line2) |
const char * | tt_name () const |
Logic | is_modified () const |
Logic | is_modifiable () const |
virtual void | clean () |
virtual void | set_value (const char *column, DbIndex line, const void *ptr) |
virtual void | set_values (const char *column, DbIndex start_line, DbIndex lines_cnt, const void *ptr) |
virtual void | set_empty_value (const char *column, DbIndex line) |
virtual void | set_unit (const char *column, UnitId unid) |
virtual void | insert_line (DbIndex line, DbIndex lines_cnt=1, Logic bInit=TRUE) |
virtual void | remove_lines (DbIndex line1, DbIndex line2) |
virtual void | exchange_lines (DbIndex line1, DbIndex line2) |
virtual void | merge (DbTable &src) |
virtual void | copy_lines (DbIndex iWhere, DbTable &src, DbIndex iFrom, DbIndex nLines) |
virtual void | modify () |
virtual void | not_modified () |
virtual void | set_modifiability (Logic bFlag) |
void | read_leader (int fd, ByteOrder &eBO, DbIndex &nLineCnt, unsigned &nDmnsCnt) |
void | append_table (int fd, ByteOrder eBO, DbIndex nLineCnt) |
void | read (int fd) |
void | write_leader (int fd, ByteOrder eBO, DbIndex nLineCnt) |
void | record_table (int fd, ByteOrder eBO, DbIndex iStartLine, DbIndex nLineCnt) |
void | write (int fd) |
void | set_preread_size (size_t nSize) |
size_t | get_preread_size () const |
void | write_changed () |
void | load_all_lines () |
MutexId * | mutex () const |
Protected Member Functions | |
virtual void | read_lines (DbIndex line1, DbIndex line2) |
virtual void | write_lines (DbIndex line1, DbIndex line2) |
virtual void | read_line_seq (DbIndex line1, DbIndex line2) |
virtual void | write_line_seq (DbIndex line1, DbIndex line2) |
virtual void | load_lines (DbIndex line1, DbIndex line2) |
virtual void | change_lines (DbIndex line1, DbIndex line2) |
unsigned | n2i (const char *column) const |
virtual unsigned | valid_n2i (const char *column) const |
void * | i2ptr (unsigned dmn_i, DbIndex line) const |
size_t | i2size (unsigned dmn_i) const |
Protected Attributes | |
DbTTDesc | fmt |
DbBufStorage | dtable |
DbFileDomainAttr * | dmn_attrs |
unsigned | nFileDmnsCnt |
Класс по работе с таблицей ЛБД на нижнем уровне. Обеспечивает отображение файла таблицы ЛБД в память.
Номер строки в таблице БД отсчитывается от 0 и должен быть положительным. Допускается использовать last из DynAr.H для доступа к последней строке таблицы.
Для массивов из N символов (типы CHAR_1, CHAR_EBCDIC) используются специальные правила доступа. При записи в таблицу по set_value() копируются до N символов включительно пока не встретится признак конца строки '\0'. В таблице БД всегда хранится N символов (концевой '\0' может не уместиться). При чтении из таблицы по get_value() приемный буфер должен иметь на один байт больше длины строки, так как признак конца строки формируется автоматически. То есть, для гарантии под приемный буфер должно быть выделено N+1 байтов памяти. Массивы остальных типов копируется байт в байт.
DbTable::DbTable | ( | const DbTTDesc & | dbtt, |
DbIndex | quant = DB_QUANT , |
||
DbIndex | start_volume = DB_START_VOLUME |
||
) |
Создать пустую таблицу указанной структуры в памяти.
DbTable::DbTable | ( | DbTable & | dbt | ) |
Создать копию указанной таблицы в памяти.
|
virtual |
Освободить память из-под таблицы и разрушить объект.
void DbTable::append_table | ( | int | fd, |
ByteOrder | eBO, | ||
DbIndex | nLineCnt | ||
) |
Прочитать собственно строки таблицы ЛБД из файла в количестве nLineCnt штук с приведением из формата eBO. Может работать с каналом.
|
protectedvirtual |
Загрузить строки [line1..line2] из файла, выделив для них место. Пометить строчки как изменившиеся. last support.
|
virtual |
Проверить, является ли указанная ячейка пустой
|
virtual |
Очистить таблицу в памяти (формат остается, содержимое пропадает).
|
virtual |
Сравнить значения в ячейках указанного домена.
|
virtual |
Добавить указанные строки таблицы в указанное место этой. Запрещено использование last в качестве индекса.
|
virtual |
Обменять местами две строки таблицы
|
virtual |
Вернуть структуру-описатель указанного домена.
|
virtual |
Вернуть ссылку на массив описателей доменов.
size_t DbTable::get_preread_size | ( | ) | const |
Получить информацию о размере буфера предчтения в байтах.
|
virtual |
Получить значение физической величины столбца
|
virtual |
Получить доступ к указанному столбцу-строке таблицы
|
virtual |
Групповая операция по чтению колонки значений из указанного столбца. Значения считываются начиная с указанной строки в указанном количестве.
|
inlineprotected |
Получить адрес ячейки, указанной индексами столбца и строки. Строка может оказаться незагруженной в память!
|
inlineprotected |
Получить размер ячейки, указанной индексом домена.
|
virtual |
Вставить в таблицу строку (строки) перед указанной line. Если указана строка last, то после последней. Если аргумент bInit TRUE, то требуется инициализация строк.
Reimplemented in DbHandle.
Logic DbTable::is_modifiable | ( | ) | const |
Вернуть TRUE если таблица может быть модифицирована в памяти и FALSE в противном случае.
Logic DbTable::is_modified | ( | ) | const |
Вернуть TRUE если таблица была модифицирована и FALSE в противном случае.
|
virtual |
Вернуть количество строк в таблице.
|
virtual |
Вернуть количество строк в диапазоне, убрать last и вернуть в line[] пару упорядоченных по возрастанию индексов строк - первой и последней.
void DbTable::load_all_lines | ( | ) |
Загрузить в память все строки файла таблицы.
|
protectedvirtual |
Загрузить строки [line1..line2] из файла, выделив для них место. Однажды загруженные строчки не трогаются. last support.
|
virtual |
Добавить строки указанной таблицы в конец этой.
|
virtual |
Выполнение операции приведет к тому, что таблица будет считаться изменившейся. Этот метод вызывается во всех модифицирующих операциях.
MutexId* DbTable::mutex | ( | ) | const |
Mutex to use in MT applications
|
protected |
Получить индекс домена по имени. Возможно, фактическая таблица БД может и не содержать столбца с таким индексом в силу того, что она создана по старому описателю.
|
virtual |
Выполнение операции приведет к тому, что таблица будет считаться не изменившейся несмотря на предыдущие операции с ней.
void DbTable::read | ( | int | fd | ) |
Прочитать в память содержимое указанного файла (в конец имеющегося содержимого). Может работать с каналом.
void DbTable::read_leader | ( | int | fd, |
ByteOrder & | eBO, | ||
DbIndex & | nLineCnt, | ||
unsigned & | nDmnsCnt | ||
) |
Прочитать преамбулу файла таблицы ЛБД (заголовок + атрибуты доменов). Диагностировать возможные проблемы. Скорректировать число доменов и размер записи до совпадающего с файлом БД. Возвратить число строк в таблице, число доменов в файле (может отличаться от ftm.dmns->count()!) и формат хранения. Может работать с каналом.
|
protectedvirtual |
Безусловно прочитать из файла на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно.
Reimplemented in DbHandle.
|
protectedvirtual |
Безусловно прочитать из файла на диске указанные строки [line1..line2]. Можно задавать произвольный диапазон строк.
void DbTable::record_table | ( | int | fd, |
ByteOrder | eBO, | ||
DbIndex | iStartLine, | ||
DbIndex | nLineCnt | ||
) |
Записать указанное количество строк начиная с указанной в файл таблицы ЛБД. Данные приводятся к формату eBO. Может работать с каналом.
|
virtual |
Удалить из таблицы указанный диапазон строк [line1..line2]
Reimplemented in DbHandle.
|
virtual |
Сделать ячейку пустой.
|
virtual |
Установить признак модифицируемости таблицы. Если установить FALSE, то любая операция изменения содержимого таблицы завершится с ошибкой. По умолчанию флаг TRUE.
void DbTable::set_preread_size | ( | size_t | nSize | ) |
Установить размер буфера предчтения в байтах при произвольном доступе к файлу.
|
virtual |
Изменить значение физической величины столбца на указанное
|
virtual |
Записать значение указанного столбца-строки таблицы
|
virtual |
Групповая операция по записи колонки значений в указанный столбец. Значения записываются начиная с указанной строки в указанном количестве.
|
inline |
Вернуть ссылку на описание таблицы.
const char* DbTable::tt_name | ( | ) | const |
Получить имя типа таблицы.
|
protectedvirtual |
Получить индекс домена по имени и проверить его на соответствие формату конкретной таблицы БД - кидает ERROR__DB_DMN_NOT_FOUND
Reimplemented in DbHandle.
void DbTable::write | ( | int | fd | ) |
Записать в указанный файл содержимое таблицы. Может работать с каналом.
void DbTable::write_changed | ( | ) |
Записать в файл содержимое изменившихся строк.
void DbTable::write_leader | ( | int | fd, |
ByteOrder | eBO, | ||
DbIndex | nLineCnt | ||
) |
Записать преамбулу файла таблицы ЛБД (заголовок + атрибуты доменов). Диагностировать возможные проблемы. В заголовке записывается указанное количество трасс, что позволяет записывать в файл произвольное их число. Задается также формат хранения в файле. Может работать с каналом.
|
protectedvirtual |
Безусловно сохранить в файл на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно.
Reimplemented in DbHandle.
|
protectedvirtual |
Безусловно сохранить в файл на диске указанные строки [line1..line2]. Можно задавать произвольный диапазон строк.
|
protected |
Массив атрибутов столбцов.
|
protected |
Буфер хранения данных таблицы.
|
protected |
Формат таблицы.
|
protected |
Количество доменов в файле (возможно, отличается от fmt.dmns->count())