Пространство имен oess_1::scheme


Подробное описание

Компонент scheme.

Данный компонент содержит основные классы и определения для работы со схемой данных, применяемой в стандарном способе сериализации и хранении сущностей (см. oess_1::stdsn).

Под схемой данных понимается совокупность сериализуемых типов. Получить описание схемы данных можно двумя способами: в результате разбора описания (см. функцию parse_text()), сделанного на языке DDL, и в результате ручного заполнения объектов-описателей схемы данных в программе (см. классы scheme_t, attr_editor_t, type_editor_t, cpp_mapping_editor_t). Функция parse_text() используется утилитой oess_cpp_serializer для разбора указанных ей ddl-файлов. В свою очередь, функция parse_text() использует классы-редакторы для того, чтобы сформировать описание схемы данных в виде объекта типа scheme_t. Например, в таком виде:

try
  {
    scheme_auto_ptr_t scheme_ptr;
   
    {
      type_editor_auto_ptr_t type_editor_ptr(
        *scheme_ptr, "my_type_t" );
   
      type_editor_ptr->cpp_mapping().set_name(
        "my_prj::my_type_t" );
   
      {
        attr_editor_auto_ptr_t attr_editor_ptr(
          *type_editor_ptr, "m_names", "std::string" );
        attr_editor_ptr->make_stl_set_kind();
        attr_editor_ptr.commit();
      }
   
      type_editor_ptr.commit();
    }
  }
catch( oess_1::impl::ex_t & x )
  {
    // Oops!?
    std::cerr << x.query_err_code() << std::endl;
  }

В этом примере создается схема, которая соответствует следующему DDL-описанию:

{type	my_type_t
	{cpp-mapping {name my_prj::my_type_t}}

	{attr	m_names {stl-set} {of std::string}}
}

Представленную в виде объекта scheme_t схему данных можно сохранить в виде текстового DDL-представления (oess_1::scheme::impl::make_type_representation()). А так же по объекту scheme_t компонент oess_1::scheme генерирует вспомогательный код (oess_1::scheme::impl::generate_cpp_serializer()). Обе эти функции определены в частном пространстве имен, т.к. они предназначены для использования внутри ObjESSty и их интерфейс, и поведение могут изменяться от версии к версии.

Описание языка DDL дано в oess_1: Язык ObjESSty DDL.


Классы

class  attr_editor_t
 Интерфейс редактора атрибута. Подробнее...
class  cpp_mapping_editor_t
 Интерфейс редактора отображения типа в C++. Подробнее...
class  type_editor_t
 Интерфейс редактора типа. Подробнее...
class  scheme_t
 Интерфейс хранилища схемы данных. Подробнее...
class  pseudo_type_list_t
class  scheme_auto_ptr_t
class  attr_editor_auto_ptr_t
class  type_editor_auto_ptr_t
class  base_t
 Интерфейс описания базового типа. Подробнее...
class  cpp_mapping_t
 Интерфейс описания отображения типа в C++. Подробнее...
class  attr_cont_kind_t
 Интерфейс описания детализации атрибута. Подробнее...
class  attr_type_t
 Интерфейс описания типа атрибута. Подробнее...
class  attr_present_if_t
 Интерфейс описания предиката сериализации опционального атрибута. Подробнее...
class  attr_default_t
 Интерфейс значения атрибута по-умолчанию. Подробнее...
class  attr_t
 Интейфейс описания атрибута. Подробнее...
class  type_t
 Интерфейс описания типа. Подробнее...
class  pseudo_base_list_t
class  pseudo_attr_list_t
class  pseudo_extension_attr_list_t
 Псевдо-список для предоставления доступа к списку атрибутов расширения типа в стиле STL итераторов. Подробнее...
class  single_obj_kind_t
 Детализация описания атрибута, который является простым одиночным объектом. Подробнее...
class  stl_vector_kind_t
 Детализация описания атрибута, который является std::vector. Подробнее...
class  stl_list_kind_t
 Детализация описания атрибута, который является std::list. Подробнее...
class  stl_deque_kind_t
 Детализация описания атрибута, который является std::deque. Подробнее...
class  stl_set_kind_t
 Детализация описания атрибута, который является std::set. Подробнее...
class  stl_multiset_kind_t
 Детализация описания атрибута, который является std::multiset. Подробнее...
class  stl_map_base_kind_t
 Базовый интерфейс для описания атрибутов, которые являются либо std::map, либо std::map. Подробнее...
class  stl_map_kind_t
 Детализация описания атрибута, который является std::map. Подробнее...
class  stl_multimap_kind_t
 Детализация описания атрибута, который является std::multimap. Подробнее...
class  fixed_vector_kind_t
 Детализация описания атрибута, который является вектором фиксированного размера. Подробнее...
class  type_kind_processor_t
 Базовый класс для обработчиков разновидностей типа. Подробнее...
class  cont_kind_processor_t
 Базовый класс для обработчиков разновидностей контейнеров. Подробнее...

Пространства имен

namespace  err
 Коды ошибок компонента scheme.
namespace  impl
 Детали реализации.

Функции

 builtin_char ()
 builtin_schar ()
 builtin_uchar ()
 builtin_short ()
 builtin_ushort ()
 builtin_int ()
 builtin_uint ()
 builtin_single ()
 builtin_double ()
 builtin_std_string ()
 builtin_ent_id ()
 builtin_stdsn_serializable ()
 parse_text (std::istream &in, scheme_t &sch, std::string &error_desc, const char *stream_name=0)
void make_bases (type_editor_t &editor, const cls_2::tag_vector_of_tags_t< impl::tag_base_t > &tags)
void process_extension_of_superclass (type_editor_t &editor, const impl::tag_type_t &type)
 Обработка наследования в режиме subclassing_by_extension.
static void process_attr_default (attr_editor_auto_ptr_t &editor_ptr, const impl::tag_attr_default_t &attr_default)
 Обработка значения атрибута по-умолчанию.
void make_attrs (type_editor_t &type_editor, const cls_2::tag_vector_of_tags_t< impl::tag_attr_t > &tags)
void make_extension (type_editor_t &type_editor, const impl::tag_extension_t *extension)
 Обработка расширений.
void make_cpp_mapping (type_editor_t &type_editor, const impl::tag_cpp_mapping_t &tag)
void make_scheme (scheme_t &sch, const cls_2::tag_vector_of_tags_t< impl::tag_type_t > &tags)


Функции

builtin_char (  ) 

Возвращает:
Имя типа oess_1::char_t.

builtin_schar (  ) 

Возвращает:
Имя типа oess_1::schar_t.

builtin_uchar (  ) 

Возвращает:
Имя типа oess_1::uchar_t.

builtin_short (  ) 

Возвращает:
Имя типа oess_1::short_t.

builtin_ushort (  ) 

Возвращает:
Имя типа oess_1::ushort_t.

builtin_int (  ) 

Возвращает:
Имя типа oess_1::int_t.

builtin_uint (  ) 

Возвращает:
Имя типа oess_1::uint_t.

builtin_single (  ) 

Возвращает:
Имя типа oess_1::single_t.

builtin_double (  ) 

Возвращает:
Имя типа oess_1::double_t.

builtin_std_string (  ) 

Возвращает:
Имя типа std::string.

builtin_ent_id (  ) 

Возвращает:
Имя типа oess_1::ent_id_t.

builtin_stdsn_serializable (  ) 

Возвращает:
Имя типа oess_1::stdsn::serializable_t.

parse_text ( std::istream &  in,
scheme_t &  sch,
std::string &  error_desc,
const char *  stream_name = 0 
)

Извлечение описания схемы из указанного входного потока. При возникновении ошибок возвращается не нулевое значение, а в error_desc помещается описание ошибки.

Аргументы:
in  Входной поток, который нужно разобрать.
sch  Схема, куда необходимо помещать описания типов.
error_desc  Буфер для приема описания ошибки.
stream_name  Необязательное имя потока. При возникновении ошибок это имя, вместе с номером строки будет отображаться в описании ошибки.

void oess_1::scheme::process_extension_of_superclass ( type_editor_t &  editor,
const impl::tag_type_t &  type 
)

Обработка наследования в режиме subclassing_by_extension.

Начиная с:
v.1.2.0
Если для типа определен тег {extension_of}, то указывается, что используется наследование от данного типа в режиме subclassing_by_extension.

static void oess_1::scheme::process_attr_default ( attr_editor_auto_ptr_t &  editor_ptr,
const impl::tag_attr_default_t &  attr_default 
) [static]

Обработка значения атрибута по-умолчанию.

Начиная с:
v.1.2.0
Заметки:
Функция вызывается всегда, вне зависимости от наличия описания значения по-умолчанию в теге {default}.
Аргументы:
editor_ptr  Атрибут, которому нужно назначать значение по-умолчанию.
attr_default  Тег, в котором может содержаться описание значения по-умолчанию.

void oess_1::scheme::make_extension ( type_editor_t &  type_editor,
const impl::tag_extension_t *  extension 
)

Обработка расширений.

Начиная с:
v.1.2.0
Аргументы:
extension  Может быть 0, если расширения нет.


Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:39 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz