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] |
Установить постфиксный комментарий.
Метод устанавливает суффиксный комментарий для текущего элемента.