ParserT Class Template Reference

List of all members.

Detailed Description

template<typename Str>
class omni::conf::io::ParserT< Str >

Парсер конфигурации.

Комментарии

Стэк секций

Скобки

Разбор потока ввода

Public Types

Public Member Functions


Member Typedef Documentation

typedef Str String

typedef String::traits_type Traits

typedef Traits::char_type Char

typedef std::basic_istream<Char, Traits> IStream

typedef std::basic_ostringstream<Char, Traits> OSStream

typedef SectionT<String> Section

typedef ElementT<String> Element


Constructor & Destructor Documentation

ParserT ( Section root  )  [inline, explicit]

Инициализировать парсер.

Конструктор начинает подсчёт строк с единицы. Выполняет начальную инициализацию парсера. Делает текущей секцию root.

Parameters:
[in,out] root Текущая секция


Member Function Documentation

virtual void parse ( IStream is  )  [inline, virtual]

Разобрать секцию из потока ввода.

Функция осуществляет разбор входного потока на секции и параметры конфигурации. Секция cfg должна быть пустой, иначе разбираемые секции и параметры будут добавляться к уже существующим.

Parameters:
[in] is Поток ввода
Exceptions:
omni::config::ParsingFailureT Неверный поток вывода
omni::config::SyntaxFailureT Неверный синтаксис
omni::config::MismatchFailureT Если имя закрываемой секции не соответствует открываемой

void push ( Section section  )  [inline, protected]

Новая текущая секция.

Метод запоминает предыдущую секцию и делает секцию cfg текущей. Вызывается при открытии секции.

Parameters:
[in] section Новая текущая секция

Section& top (  )  const [inline, protected]

Текущая секция.

Метод возвращает текущую секцию.

Returns:
Текущая секция

void pop (  )  [inline, protected]

Старая текущая секция.

Метод возвращается к предыдущей текущей секции. Вызывается при закрытии секции.

Exceptions:
omni::config::ParsingFailureT Если закрыты все секции.

void brace_open (  )  [inline, protected]

Открыть скобку.

Метод увеличивает на единицу количество открытых скобок.

void brace_close (  )  [inline, protected]

Закрыть скобку.

Метод уменьшает на единицу количество открытых скобок. Если закрытий больше чем открытий будет сгенерировано исключение.

Exceptions:
omni::config::SyntaxFailureT Если закрытие встретилось раньше открытия

static void get_pure_token ( IStream is,
String token 
) [inline, static, protected]

Прочитать токен из потока ввода.

Метод читает из потока ввода is строку, пока не встретится один из заданных символов разделителей из delimiters. Считанная строка сохраняется в token.

Parameters:
[in,out] is Поток ввода
[out] token Буфер для прочитанного токена

static void get_quoted_token ( IStream is,
String token,
const Char  quote 
) [inline, static, protected]

Прочитать строку в кавычках из потока ввода.

Метод читает строку в кавычках. Обязательно первым символом должен быть символ кавычки! Если строка должна содержать кавычки, то они дублируются. Например, строка "Ах, эти "чёрные" глаза." должна выглядеть так: "Ах, эти ""чёрные"" глаза." При чтении двойные кавычки заменяются одинарными.

Parameters:
[in,out] is Поток ввода
[out] token Буфер для прочитанной строки
[in] quote Символ кавычки ('\"' или '\'')

void get_token ( IStream is,
String token 
) [inline, protected]

Разобрать токен.

Метод читает из потока ввода is имя секции или параметра или их значение. Имя может быть заключено в одинарные или двойные кавычки.

Parameters:
[in,out] is Поток ввода
[out] token The string token.
Returns:
Имя или значение

void parse_metadata ( IStream is  )  [inline, protected]

Разобрать метаданные.

Метод разбирает служебную секцию. Пока секция "<? ... ?>" просто игнорируется. Вложенность не поддерживается.

Parameters:
[in,out] is Поток ввода
Exceptions:
omni::config::SyntaxFailureT Если не найден закрывающий тэг "?>"

void parse_comment ( IStream is  )  [inline, protected]

Разобрать комментарий.

Метод читает из потока ввода блок комментариев. Блок комментариев должен быть расположен на смежных строках.

Parameters:
[in,out] is Поток ввода

bool parse_value ( IStream is,
Element element 
) [inline, protected]

Разобрать значение.

Метод пытается прочитать из потока ввода is значение параметра element.

Parameters:
[in,out] is Поток ввода
[in,out] element Параметр
Returns:
true Если присвоено значение, иначе false

long skip_ws ( IStream is  )  [inline, protected]

Пропустить пробелы и служебные символы.

Метод пропускает пробелы и служебные символы из потока is. Является аналогом std::ws(). Подсчитывает строки.

Parameters:
[in,out] is Поток ввода
Returns:
Количество пропущенных строк

long lineNumber (  )  const [inline, protected]

Номер текущей строки.

Метод возвращает номер текущей строки.

Returns:
Номер строки

void set_last_element ( Element element  )  [inline, protected]

Новый текущий элемент.

Метод устанавливает новый текущий элемент. Используется для постфиксных комментариев.

Parameters:
[in] element Новый элемент

void assign_prefix ( Element element  )  [inline, protected]

Установить префиксный комментарий.

Метод устанавливает префиксный комментарий для элемента cfg.

Parameters:
[in,out] element Элемент конфигурации

void assign_suffix (  )  [inline, protected]

Установить постфиксный комментарий.

Метод устанавливает суффиксный комментарий для текущего элемента.


Generated on Wed Jun 6 17:27:47 2007 for OMNI by  doxygen 1.5.2