Пример #1
0
        void execute ()
        {
            namespace bmpl = boost::mpl;
            typedef StaticTypeInfo<Base> StaticBaseInfo;

            TypeManager& f = TypeManager::GetInst();

            TypeInfo const& baseInfo =  f.GetInfoFromId( StaticBaseInfo::GetTypeId() );

            info->AddInterface( baseInfo );
            f.AddTypeImplementation( baseInfo.GetId(), info->GetId() );

            // "from" info	 to type id	,	anyStaticCast<ToType, FromType>
            info->AddCast( baseInfo.GetId(), &AnyStaticCast<Base, D> );

            baseInfo.AddCast( info->GetId(), &AnyStaticCast<D, Base> );

            for_each_type< typename StaticBaseInfo::BaseTypes >( AddBase<D>(*info) );
        }