WriterT Class Template Reference

List of all members.

Detailed Description

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

Форматирование вывода секций и параметров.

Базовый класс форматирования вывода секций и параметров. Определяет несколько абстрактных методов, используемых для вывода конфигураций: open_section(), close_section(), put_element(). Определяя эти методы можно реализовать свой стиль форматирования.

Для сохранения секции в поток вывода используется метод print().

Public Member Functions

Public Attributes

Protected Types

Protected Member Functions

Static Protected Member Functions


Member Typedef Documentation

typedef Str String [protected]

typedef String::traits_type Traits [protected]

typedef Traits::char_type Char [protected]

typedef std::basic_ostream<Char, Traits> OStream [protected]

typedef std::basic_istringstream<Char, Traits> ISStream [protected]

typedef std::basic_ostringstream<Char, Traits> OSStream [protected]

typedef ElementT<String> Element [protected]

typedef SectionT<String> Section [protected]


Constructor & Destructor Documentation

WriterT (  )  [inline]

Параметры по умолчанию.

Устанавливает параметры по умолчанию: 2 пробела на отступ. Двойные кавычки. Значения всегда в кавычках.


Member Function Documentation

void print ( OStream os,
const Section section 
) const [inline]

Вывести конфигурацию в поток вывода.

Метод выполняет перечисление дочерних секций и параметров и вызывает для них методы open_section(), close_section() и put_element() соответственно. Порядок секций и параметров соответствует прочитанному из файла при разборе или задаваемому при создании секции. Т.е. в общем случае дочерние секции могут чередоваться с дочерними параметрами.

Для дочерних секций метод вызывается рекурсивно.

Может генерировать исключение, например, если, параметр не имеет имени.

Parameters:
[in,out] os Поток вывода
[in] section Секция конфигурации
Exceptions:
omni::config::WritingFailureT если какие-либо секция или параметр не соответствуют требованиям форматирования

virtual void open_section ( OStream os,
const Section section 
) const [inline, protected, virtual]

Начало секции.

Метод выводит префиксный комментарий (если не пустой), имя секции и её значение (если не пустое).

  # prefix comment
  # prefix comment continue
  <section_name = section_value>

Если секция является главной и флаг rootName не установлен, то имя секции не будет выводиться, как и комментарий.

Также, если установлено выравнивание дочерних элементов, то определяется максимальная ширина поля.

Parameters:
[in,out] os Поток вывода
[in] section Секция конфигурации
Exceptions:
omni::config::WritingFailureT Если нет имени секции

virtual void close_section ( OStream os,
const Section section 
) const [inline, protected, virtual]

Окончание секции.

Метод выводит завершение секции и постфиксный комментарий (если не пустой).

  </section_name> # suffix comment
                  # suffix comment continue

Parameters:
[in,out] os Поток вывода
[in] section Секция конфигурации
Exceptions:
omni::config::WritingFailureT Если нет имени секции

virtual void put_element ( OStream os,
const Element element 
) const [inline, protected, virtual]

Параметр.

Метод выводит параметр element в поток вывода os. Выводится префиксный комментарий (если не пустой), имя параметра, знак равно и значение параметра (если не пустое), постфиксный комментарий (если не пустой).

    # prefix comment
    # prefix comment continue
    element_name = element_value # suffix comment
                                 # suffix comment continue

Parameters:
[in,out] os Поток вывода
[in] element Параметр конфигурации
Exceptions:
omni::config::WritingFailureT Если нет имени параметра

static void put_comment_block ( OStream os,
const String comment,
const String indent,
bool  skip_first_indent 
) [inline, static, protected]

Вывести блок комментариев.

Метод перед каждой строкой добавляет отступ и символ '#'. Если установлен флаг skip_first_indent, то отступ перед первой строкой не добавляется. Это позволяет выводить суффиксные комментарии.

    ....# prefix first line
    ....# prefix second line
    ....< XXX >
    ....</ XXX > # suffix first line
    .............# suffix second line

Блок комментариев comment может содержать несколько строк, разделённых символом перевода строки.

Parameters:
[in,out] os Поток вывода
[in] comment Блок комментариев
[in] indent Текущий отступ
[in] skip_first_indent Не выводит отступ для первой строки

static bool need_quote ( const String text  )  [inline, static, protected]

Получить строку в кавычках.

Метод позволяет преобразовать строку text в строку в кавычках. Если флаг alwaysQuoted не установлен, и исходная строка не содержит служебных символов, то кавычки не добавляются.

Parameters:
[in] text Исходная строка
Returns:
true if text need quote, otherwise false.

static void put_qstring ( OStream os,
const String str,
Char  quote 
) [inline, static, protected]

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

Метод пишет строку str в кавычках в поток вывода os. Если внутри строки встречаются кавычки, то они дублируются.

Parameters:
[in,out] os Поток вывода
[in] str Строка для записи
[in] quote Символ кавычки ('\"' или '\'')

static bool is_root ( const Section section  )  [inline, static, protected]

Главная секция?

Метод проверяет является ли секция section главной, т.е. у неё нет родительской секции.

Parameters:
[in] section Секция конфигурации
Returns:
true если секция является главной

static bool is_front ( const Section section  )  [inline, static, protected]

Первая секция?

Метод проверяет является ли секция section первой в списке её родительской секции.

Parameters:
[in] section Секция конфигурации
Returns:
true если секция является первой

static bool is_back ( const Section section  )  [inline, static, protected]

Последняя секция?

Метод проверяет является ли секция section последней в списке её родительской секции.

Parameters:
[in] section Секция конфигурации
Returns:
true если секция является последней


Member Data Documentation

size_t indent [mutable]

Текущий размер отступа.

size_t tabSize

Количество пробелов в одном отступе.

bool rootName

bool newLine

bool doubleQuote


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