namespace oess_1
{

/*!
	\brief Компонент %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. Например, в таком виде:
\code
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;
	}
\endcode

	В этом примере создается схема, которая соответствует следующему
DDL-описанию:
\verbatim
{type	my_type_t
	{cpp-mapping {name my_prj::my_type_t}}

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

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

Описание языка DDL дано в \ref oess_1__ddl_format.
*/
namespace scheme {

	/*!
		\brief Коды ошибок компонента %scheme.
	*/
	namespace err {}

	/*!
		\brief Детали реализации.
	*/
	namespace	impl {}

} /* namespace scheme */

} /* namespace oess_1 */
