25.1. Обзор

25.1. Обзор

qdbm предлагает несколько различных API-интерфейсов. Самый основной из них, Depot, является низкоуровневым API, который мы и рассмотрим в этой главе. Интерфейс Curia позволяет разбивать базу данных на несколько файлов (для повышения масштабируемости или с целью работы в файловой системе с ограничениями), а функции Villa предлагают две модели: модель B-деревьев и модель транзакций. API-интерфейс Odeon позволяет работать с инвертированными индексами[175]. Два последних API, Relic и Hovel, предлагают реализацию таких интерфейсов, как ndbm и qdbm.

Функции Depot обеспечивают выполнение основных операций по схеме "ключ-значение", при этом ключ используется для извлечения значения. Ключ и значение представляют собой произвольные бинарные потоки, размер которых передается отдельно от данных; библиотеке ничего не нужно знать об их структуре. Однако у интерфейса Depot имеется пара функциональных средств, благодаря которым применение строк в качестве ключей и элементов данных становится более удобным. Во-первых, всякий раз при передаче размера ключа или элемента данных в библиотеку вместо них может быть передано значение -1, на основании которого Depot будет использовать функцию strlen() для вычисления используемого размера. Во-вторых, большинство функций чтения ключей и элементов данных автоматически добавляют к возвращаемому значению байт 0. Этот дополнительный символ не включается в возвращаемый размер, поэтому его можно проигнорировать, если значение не является строкой. Если же это строка, то возвращаемое значение может быть обработано как строка, и приложению не нужно будет завершать ее с помощью NULL.

Depot использует глобальную целочисленную переменную dpecode для хранения кодов ошибок. Когда функции Depot возвращают сбой, dpecode сообщает о том, что произошло (это почти то же самое, что и в случае с переменной errno, которая относится к системным вызовам и библиотеке С). За текстовые сообщения об ошибках отвечает функция dperrmsg().

#include <depot.h>

const char * dperrmsg(int ecode);

Подобно strerror(), функция dperrmsg() принимает код ошибки (обычно из dpecode) и возвращает строку, в которой приводится описание возникшей ошибки.

Функции в API-интерфейсе Depot используют указатель на структуру DEPOT. Это непрозрачная структура (программы, использующие Depot, не могут самостоятельно проверять значения в структуре), однако в ней содержится вся информация, используемая библиотекой для обслуживания файла, хранящегося на диске.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

R.1.1 Обзор

Из книги Справочное руководство по C++ автора Страустрап Бьярн

R.1.1 Обзор Это руководство содержит следующее:1. Введение.2. Соглашения о лексических понятиях.3. Основные понятия.4. Стандартные преобразования.5. Выражения.6. Операторы.7. Описания.8. Описатели.9. Классы.10. Производные классы.11. Контроль доступа к членам.12. Специальные


Обзор XML

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Обзор XML Язык XML предназначен только для работы с данными. Точнее говоря, он предназначен для создания набора сведений, или метаданных, которые описывают данные. Рассмотрим приведенный ниже простой фрагмент кода на языке HTML.<form name="frmMain" action="mypage.aspx" method="POST"> </form>Этот


12.1.1. Обзор

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

12.1.1. Обзор В 2001 году Tk был, наверное, самым популярным графическим интерфейсом для Ruby. Он был первым и долгое время входил в состав стандартного дистрибутива Ruby. Сейчас он, пожалуй, не так распространен, но все еще широко применяется.Кто-то скажет, что Tk уже устарел. Те, кому


12.2.1. Обзор

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

12.2.1. Обзор Ruby/GTK2 — это библиотека, позволяющая приложениям, написанным на языке Ruby, обращаться к средствам библиотеки GTK+ 2.x. GTK+ распространяется в исходных текстах на условиях лицензии GNU LGPL, поэтому может бесплатно использоваться в коммерческих приложениях.Как и в


12.4.1. Обзор

Из книги Компьютерная обработка звука автора Загуменнов Александр Петрович

12.4.1. Обзор Привязки QtRuby — результат работы многих людей, прежде всего Ричарда Дейла (Richard Dale). Эшли Уинтерс (Ashley Winters), Жермен Гаран (Germain Garand) и Давид Форе (David Faure) написали большую часть инструмента генерации кода привязки (он называется SMOKE). Другие отправляли отчеты о


25.1. Обзор

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

25.1. Обзор qdbm предлагает несколько различных API-интерфейсов. Самый основной из них, Depot, является низкоуровневым API, который мы и рассмотрим в этой главе. Интерфейс Curia позволяет разбивать базу данных на несколько файлов (для повышения масштабируемости или с целью работы в


Обзор

Из книги Как тестируют в Google автора Уиттакер Джеймс

Обзор Модули фирмы Twelve Tone Systems, Inc.Пакет DirectX-эффектов Cakewalk Audio FX1 оперирует при обработке звука 32-разрядными числами с плавающей точкой и включает в себя четыре модуля динамической обработки сигнала: компрессор/гейт, экспандер/гейт, лимитер и отдельный процессор


11.1. Обзор

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

11.1. Обзор Демонстрационная программа является частью пакета мониторинга Linux-системы и предоставляет следующие возможности.? Программа реализует минимально необходимые функции Web-сервера. Локальные и удаленные клиенты получают доступ к системной информации, запрашивая


Обзор тем

Из книги Секреты приложений Google автора Балуев Денис

Обзор тем — Риски. В Chrome OS много областей для тестирования: браузер, интерфейс взаимодействия с пользователем, прошивка, оборудование, поддержка сети, синхронизация данных пользователя, автоматические обновления и даже специфическое оборудование, созданное внешними


31.2. Обзор

Из книги Linux Mint и его Cinnamon. Очерки применителя автора Федорчук Алексей Викторович

31.2. Обзор Потоки обеспечивают двустороннее соединение между процессом и драйвером, как показано на рис. 31.1. Хотя нижний блок на этом рисунке мы и называем драйвером, его не следует ассоциировать с каким-либо аппаратным устройством, поскольку это может быть и драйвер


Обзор

Из книги автора

Обзор Солидный набор встроенных опций совершенно не мешает Таблицам оставаться простыми и понятными, давая пользователям возможность начать работу с данными без каких-либо знаний об особенностях системы. Выбирая команду «Новый – Таблица» в основном экране Документов


Обзор

Из книги автора

Обзор Первое, что видит пользователь, зашедший по очевидному адресу http://calendar.google.com, – предложение ввести базовую информацию о себе: имя пользователя, которое будут видеть участники ваших публичных календарей (о них чуть позже), а также ваш основной часовой пояс. Ввели?


Обзор

Из книги автора

Обзор В самом деле – почему Reader? Дело в том, что адекватного перевода для этого английского слова так и не нашлось. Читатель? Чтец? Все не то! В итоге было принято решение оставить название без перевода, а русские пользователи уже привыкли к незнакомому термину «Ридер».С


Обзор

Из книги автора

Обзор Сервис под названием «Сайты» позволяет любому желающему, не обладающему даже начальными знаниями о премудростях языка разметки HTML, не говоря уже о более продвинутых технологиях и языках вроде PHP, Python или Java, самостоятельно создавать отлично выглядящие и


UCK: обзор

Из книги автора

UCK: обзор Программа UCK в виде одноимённого пакета имеется в официальном репозитории, и потому может быть установлена любым из стандартных способов. После этого в секции Администрирование главного меню Cinnamon появляется пункт, который, как ни странно, называется Ubuntu Customization