void
my_t::oess_serializer_t::unpack_self(
	oess_1::stdsn::ient_t & s,
	my_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
}
void
my_t::oess_serializer_t::unpack(
	oess_1::stdsn::ient_t & s,
	my_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::isubclass_extension_t * our_subclass_ptr = 0;
		unpack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
my_t::oess_serializer_t::unpack_complete(
	oess_1::stdsn::ient_t & s,
	my_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void
my_t::oess_serializer_t::pack_self(
	oess_1::stdsn::oent_t & s,
	const my_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
}
void
my_t::oess_serializer_t::pack(
	oess_1::stdsn::oent_t & s,
	const my_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::osubclass_extension_t * our_subclass_ptr = 0;
		pack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
my_t::oess_serializer_t::pack_complete(
	oess_1::stdsn::oent_t & s,
	const my_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void *
my_t::oess_serializer_t::cast(
	const std::string & cast_to,
	my_t * o )
{
	if( cast_to == type_name() )
		return o;
	void * p = 0;
	if( cast_to == oess_1::stdsn::serializable_t::oess_serializable_t_name() )
		return (oess_1::stdsn::serializable_t *)o;
	return p;
}
const std::string &	my_t::oess_serializer_t::type_name() {
	static std::string name( "my_t" );
	return name;
}
oess_1::stdsn::serializable_t *	my_t::oess_serializer_t::factory() {
	return new my_t();
}
const std::string &
my_t::oess_serializer_t::scheme()
{
	static std::string s(
			"{type my_t } "
		);
	return s;
}
oess_1::stdsn::factory_registrator_t
my_t::oess_serializer_t::m_factory_reg( "my_t", &my_t::oess_serializer_t::factory );
bool
my_t::oess_present_if( const std::string & a ) const
{
	return false;
}
void
my_t::oess_set_default( const std::string & a )
{
}
void
my_t::oess_unpack( oess_1::stdsn::ient_t & s )
{
	oess_pre_unpack();
	oess_serializer_t::unpack( s, *this, 0 );
	oess_serializer_t::unpack_complete( s, *this );
	oess_post_unpack();
}
void
my_t::oess_pack( oess_1::stdsn::oent_t & s ) const
{
	oess_pre_pack();
	oess_serializer_t::pack( s, *this, 0 );
	oess_serializer_t::pack_complete( s, *this );
	oess_post_pack();
}
void *
my_t::oess_cast( const std::string & cast_to )
{
	return oess_serializer_t::cast( cast_to, this );
}
const std::string &
my_t::oess_type_name() const
{
	return oess_serializer_t::type_name();
}
const std::string &
my_t::oess_scheme() const
{
	return oess_serializer_t::scheme();
}
void
my_t::oess_get_subclass_extension_path(
	oess_1::stdsn::subclass_extension_path_t & path, 
	const std::string & terminator ) const
{
	OESS_THROW_PHYSIC(
		oess_1::stdsn::err::c_not_in_subclass_extension_chain,
		oess_type_name() << ", terminator: "<< terminator )
}

void
my_ptr_t::oess_serializer_t::unpack_self(
	oess_1::stdsn::ient_t & s,
	my_ptr_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::iptr_t< my_t > io_ptr( o.m_ptr );
		oess_1::stdsn::iobj_t< oess_1::stdsn::iptr_t< my_t > > io_obj( io_ptr );
		s >> io_obj;
	}
}
void
my_ptr_t::oess_serializer_t::unpack(
	oess_1::stdsn::ient_t & s,
	my_ptr_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::isubclass_extension_t * our_subclass_ptr = 0;
		unpack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
my_ptr_t::oess_serializer_t::unpack_complete(
	oess_1::stdsn::ient_t & s,
	my_ptr_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void
my_ptr_t::oess_serializer_t::pack_self(
	oess_1::stdsn::oent_t & s,
	const my_ptr_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::optr_t< my_t > io_ptr( o.m_ptr );
		oess_1::stdsn::oobj_t< oess_1::stdsn::optr_t< my_t > > io_obj( io_ptr );
		s << io_obj;
	}
}
void
my_ptr_t::oess_serializer_t::pack(
	oess_1::stdsn::oent_t & s,
	const my_ptr_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::osubclass_extension_t * our_subclass_ptr = 0;
		pack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
my_ptr_t::oess_serializer_t::pack_complete(
	oess_1::stdsn::oent_t & s,
	const my_ptr_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void *
my_ptr_t::oess_serializer_t::cast(
	const std::string & cast_to,
	my_ptr_t * o )
{
	if( cast_to == type_name() )
		return o;
	void * p = 0;
	if( cast_to == oess_1::stdsn::serializable_t::oess_serializable_t_name() )
		return (oess_1::stdsn::serializable_t *)o;
	return p;
}
const std::string &	my_ptr_t::oess_serializer_t::type_name() {
	static std::string name( "my_ptr_t" );
	return name;
}
oess_1::stdsn::serializable_t *	my_ptr_t::oess_serializer_t::factory() {
	return new my_ptr_t();
}
const std::string &
my_ptr_t::oess_serializer_t::scheme()
{
	static std::string s(
			"{type my_ptr_t {attr m_ptr {of my_t {ptr } } } }"
			" "
		);
	return s;
}
oess_1::stdsn::factory_registrator_t
my_ptr_t::oess_serializer_t::m_factory_reg( "my_ptr_t", &my_ptr_t::oess_serializer_t::factory );
bool
my_ptr_t::oess_present_if( const std::string & a ) const
{
	return false;
}
void
my_ptr_t::oess_set_default( const std::string & a )
{
}
void
my_ptr_t::oess_unpack( oess_1::stdsn::ient_t & s )
{
	oess_pre_unpack();
	oess_serializer_t::unpack( s, *this, 0 );
	oess_serializer_t::unpack_complete( s, *this );
	oess_post_unpack();
}
void
my_ptr_t::oess_pack( oess_1::stdsn::oent_t & s ) const
{
	oess_pre_pack();
	oess_serializer_t::pack( s, *this, 0 );
	oess_serializer_t::pack_complete( s, *this );
	oess_post_pack();
}
void *
my_ptr_t::oess_cast( const std::string & cast_to )
{
	return oess_serializer_t::cast( cast_to, this );
}
const std::string &
my_ptr_t::oess_type_name() const
{
	return oess_serializer_t::type_name();
}
const std::string &
my_ptr_t::oess_scheme() const
{
	return oess_serializer_t::scheme();
}
void
my_ptr_t::oess_get_subclass_extension_path(
	oess_1::stdsn::subclass_extension_path_t & path, 
	const std::string & terminator ) const
{
	OESS_THROW_PHYSIC(
		oess_1::stdsn::err::c_not_in_subclass_extension_chain,
		oess_type_name() << ", terminator: "<< terminator )
}

void
my_cont_t::oess_serializer_t::unpack_self(
	oess_1::stdsn::ient_t & s,
	my_cont_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::imap_t< std::multimap< my_ptr_t, oess_1::int_t >, oess_1::int_t, oess_1::stdsn::iobj_t< oess_1::int_t > > io_cont( o.m_cont );
		oess_1::stdsn::iobj_t< oess_1::stdsn::imap_t< std::multimap< my_ptr_t, oess_1::int_t >, oess_1::int_t, oess_1::stdsn::iobj_t< oess_1::int_t > > > io_obj( io_cont );
		s >> io_obj;
	}
}
void
my_cont_t::oess_serializer_t::unpack(
	oess_1::stdsn::ient_t & s,
	my_cont_t & o,
	oess_1::stdsn::isubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::isubclass_extension_t * our_subclass_ptr = 0;
		unpack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
my_cont_t::oess_serializer_t::unpack_complete(
	oess_1::stdsn::ient_t & s,
	my_cont_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void
my_cont_t::oess_serializer_t::pack_self(
	oess_1::stdsn::oent_t & s,
	const my_cont_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	{
		oess_1::stdsn::omap_t< std::multimap< my_ptr_t, oess_1::int_t >, oess_1::int_t, oess_1::stdsn::oobj_t< oess_1::int_t > > io_cont( o.m_cont );
		oess_1::stdsn::oobj_t< oess_1::stdsn::omap_t< std::multimap< my_ptr_t, oess_1::int_t >, oess_1::int_t, oess_1::stdsn::oobj_t< oess_1::int_t > > > io_obj( io_cont );
		s << io_obj;
	}
}
void
my_cont_t::oess_serializer_t::pack(
	oess_1::stdsn::oent_t & s,
	const my_cont_t & o,
	oess_1::stdsn::osubclass_extension_t * subclass )
{
	if( s.obj_start( &o, &type_name(), scheme() ) )
	{
		oess_1::stdsn::osubclass_extension_t * our_subclass_ptr = 0;
		pack_self( s, o, subclass );
		s.obj_finish( &o, &type_name() );
	}
}
void
my_cont_t::oess_serializer_t::pack_complete(
	oess_1::stdsn::oent_t & s,
	const my_cont_t & o )
{
	s.obj_complete( &o, &type_name() );
}
void *
my_cont_t::oess_serializer_t::cast(
	const std::string & cast_to,
	my_cont_t * o )
{
	if( cast_to == type_name() )
		return o;
	void * p = 0;
	if( cast_to == oess_1::stdsn::serializable_t::oess_serializable_t_name() )
		return (oess_1::stdsn::serializable_t *)o;
	return p;
}
const std::string &	my_cont_t::oess_serializer_t::type_name() {
	static std::string name( "my_cont_t" );
	return name;
}
oess_1::stdsn::serializable_t *	my_cont_t::oess_serializer_t::factory() {
	return new my_cont_t();
}
const std::string &
my_cont_t::oess_serializer_t::scheme()
{
	static std::string s(
			"{type my_cont_t {attr m_cont {of oess_1::int_t }"
			" {stl-map {multi } {key my_ptr_t } } } } "
		);
	return s;
}
oess_1::stdsn::factory_registrator_t
my_cont_t::oess_serializer_t::m_factory_reg( "my_cont_t", &my_cont_t::oess_serializer_t::factory );
bool
my_cont_t::oess_present_if( const std::string & a ) const
{
	return false;
}
void
my_cont_t::oess_set_default( const std::string & a )
{
}
void
my_cont_t::oess_unpack( oess_1::stdsn::ient_t & s )
{
	oess_pre_unpack();
	oess_serializer_t::unpack( s, *this, 0 );
	oess_serializer_t::unpack_complete( s, *this );
	oess_post_unpack();
}
void
my_cont_t::oess_pack( oess_1::stdsn::oent_t & s ) const
{
	oess_pre_pack();
	oess_serializer_t::pack( s, *this, 0 );
	oess_serializer_t::pack_complete( s, *this );
	oess_post_pack();
}
void *
my_cont_t::oess_cast( const std::string & cast_to )
{
	return oess_serializer_t::cast( cast_to, this );
}
const std::string &
my_cont_t::oess_type_name() const
{
	return oess_serializer_t::type_name();
}
const std::string &
my_cont_t::oess_scheme() const
{
	return oess_serializer_t::scheme();
}
void
my_cont_t::oess_get_subclass_extension_path(
	oess_1::stdsn::subclass_extension_path_t & path, 
	const std::string & terminator ) const
{
	OESS_THROW_PHYSIC(
		oess_1::stdsn::err::c_not_in_subclass_extension_chain,
		oess_type_name() << ", terminator: "<< terminator )
}

