cls_2 Документация
cls_2 (расшифровывается как CURL like syntax), это библиотека классов для разбора конфигурационных файлов в формате, похожем на формат языка программирования CURL (http://www.curl.com).
При программировании постоянно приходится сталкиваться с необходимостью чтения какой-либо информации из конфигурационных файлов. При этом, в языке C++ вообще нет никаких стандартных средств для поддержки какого-либо формата. Поэтому для работы с конфигурационными файлами приходится создавать что-то свое. В результате, из-за того, что работа с конфигурационными файлами выглядит менее важной по сравнению с другими прикладными задачами, средства по извлечению/сохранению информации в конфигурационные файлы получаются очень примитивными. И представление с помощью этих средств сложной информации обходится дорого.
Начиная, приблизительно, с 2001-го года мне приходится сталкиваться с конфигурационными файлами, создаными с использованием XML. С одной стороны, формат XML имеет следующие достоинства:
- позволяет описывать сложные структуры данных за счет произвольно сложной иерархии тегов;
- для C++ существуют уже готовые библиотеки для поддержки XML.
Тем не менее, я считаю, что в использовании XML в качестве конфигурационных файлов есть несколько важных недостатков:
- большой объем кода для поддержки XML. В Java, средства работы с XML входят в состав стандартной библиотеки, поэтому Java-приложениям не нужно "таскать" за собой библиотеку поддержки XML. Но для C++ приложения, в задачи которого не входит работа с XML, включение в приложение нескольких сотен килобайт стороннего кода работы с XML только для работы с несколькими конфигурационными файлами с моей точки зрения не разумно;
- после разбора XML-файла остается задача извлечения информации из XML-представления в C++ представление. Например, если используется DOM-парсер, то необходимо после разброра пройти по DOM-дереву и выполнить преобразование данных из строкового представления во внутреннее представление приложения. При этом еще нужно реализовать хотя бы первичную проверку корректности извлеченных данных (например, на принадлежность извлеченных значений указанному диапазону). Мне доводилось видеть код по извлечению информации из XML конфигурационных файлов, который был очень большим и сложным в понимании именно из-за этой причины;
- XML является плохочитаемым представлением данных. Имеется в виду восприятие XML-представление человеком. Обязательное наличие закрывающих тегов (если тег содержит дочерние теги) и включение значений в качестве атрибутов при открытии тега уменьшают читабельность текста. Что, на мой взгляд, является серьезным недостатком, т.к. конфигурационные файлы, зачастую, приходится создавать, редактировать и проверять вручную.
Поэтому, я считаю, что для работы с конфигурационными файлами желательно иметь:
- простой и удобный формат представления сложной информации в конфигурационных файлах;
- библиотеку классов для удобного извлечения информации из конфигурационных файлов. Например, с автоматическим преобразованием строковых значений в числовые, с контролем наличия обязательных тегов, с контролем принадлежности значений указаному множеству (диапазону) значений.
Именно в качестве такой библиотеки создавалась библиотека cls_2.
В качестве формата для конфигурационных файлов используется формат, аналогичный форматы языка программирования CURL, т.к. он удачно сочетает в себе простоту и мощьность. Подробнее данный формат описан в cls_2: Синтаксис.
Документация по cls_2. Последние изменения: Wed Aug 4 15:13:00 2004. Создано системой
1.3.7