| typedef Str String |
| typedef String::traits_type Traits |
| typedef Traits::char_type Char |
Инициализировать парсер.
Конструктор начинает подсчёт строк с единицы. Выполняет начальную инициализацию парсера. Делает текущей секцию root.
| [in,out] | root | Текущая секция |
| virtual void parse | ( | IStream & | is | ) | [inline, virtual] |
Разобрать секцию из потока ввода.
Функция осуществляет разбор входного потока на секции и параметры конфигурации. Секция cfg должна быть пустой, иначе разбираемые секции и параметры будут добавляться к уже существующим.
| [in] | is | Поток ввода |
| omni::config::ParsingFailureT | Неверный поток вывода | |
| omni::config::SyntaxFailureT | Неверный синтаксис | |
| omni::config::MismatchFailureT | Если имя закрываемой секции не соответствует открываемой |
| void push | ( | Section & | section | ) | [inline, protected] |
Новая текущая секция.
Метод запоминает предыдущую секцию и делает секцию cfg текущей. Вызывается при открытии секции.
| [in] | section | Новая текущая секция |
| Section& top | ( | ) | const [inline, protected] |
Текущая секция.
Метод возвращает текущую секцию.
| void pop | ( | ) | [inline, protected] |
Старая текущая секция.
Метод возвращается к предыдущей текущей секции. Вызывается при закрытии секции.
| omni::config::ParsingFailureT | Если закрыты все секции. |
| void brace_open | ( | ) | [inline, protected] |
Открыть скобку.
Метод увеличивает на единицу количество открытых скобок.
| void brace_close | ( | ) | [inline, protected] |
Закрыть скобку.
Метод уменьшает на единицу количество открытых скобок. Если закрытий больше чем открытий будет сгенерировано исключение.
| omni::config::SyntaxFailureT | Если закрытие встретилось раньше открытия |
Прочитать токен из потока ввода.
Метод читает из потока ввода is строку, пока не встретится один из заданных символов разделителей из delimiters. Считанная строка сохраняется в token.
| [in,out] | is | Поток ввода |
| [out] | token | Буфер для прочитанного токена |
| static void get_quoted_token | ( | IStream & | is, | |
| String & | token, | |||
| const Char | quote | |||
| ) | [inline, static, protected] |
Прочитать строку в кавычках из потока ввода.
Метод читает строку в кавычках. Обязательно первым символом должен быть символ кавычки! Если строка должна содержать кавычки, то они дублируются. Например, строка "Ах, эти "чёрные" глаза." должна выглядеть так: "Ах, эти ""чёрные"" глаза." При чтении двойные кавычки заменяются одинарными.
| [in,out] | is | Поток ввода |
| [out] | token | Буфер для прочитанной строки |
| [in] | quote | Символ кавычки ('\"' или '\'') |
Разобрать токен.
Метод читает из потока ввода is имя секции или параметра или их значение. Имя может быть заключено в одинарные или двойные кавычки.
| [in,out] | is | Поток ввода |
| [out] | token | The string token. |
| void parse_metadata | ( | IStream & | is | ) | [inline, protected] |
Разобрать метаданные.
Метод разбирает служебную секцию. Пока секция "<? ... ?>" просто игнорируется. Вложенность не поддерживается.
| [in,out] | is | Поток ввода |
| omni::config::SyntaxFailureT | Если не найден закрывающий тэг "?>" |
| void parse_comment | ( | IStream & | is | ) | [inline, protected] |
Разобрать комментарий.
Метод читает из потока ввода блок комментариев. Блок комментариев должен быть расположен на смежных строках.
| [in,out] | is | Поток ввода |
Разобрать значение.
Метод пытается прочитать из потока ввода is значение параметра element.
| [in,out] | is | Поток ввода |
| [in,out] | element | Параметр |
| long skip_ws | ( | IStream & | is | ) | [inline, protected] |
Пропустить пробелы и служебные символы.
Метод пропускает пробелы и служебные символы из потока is. Является аналогом std::ws(). Подсчитывает строки.
| [in,out] | is | Поток ввода |
| long lineNumber | ( | ) | const [inline, protected] |
Номер текущей строки.
Метод возвращает номер текущей строки.
| void set_last_element | ( | Element * | element | ) | [inline, protected] |
Новый текущий элемент.
Метод устанавливает новый текущий элемент. Используется для постфиксных комментариев.
| [in] | element | Новый элемент |
| void assign_prefix | ( | Element & | element | ) | [inline, protected] |
Установить префиксный комментарий.
Метод устанавливает префиксный комментарий для элемента cfg.
| [in,out] | element | Элемент конфигурации |
| void assign_suffix | ( | ) | [inline, protected] |
Установить постфиксный комментарий.
Метод устанавливает суффиксный комментарий для текущего элемента.
1.5.2