Changeset 44693


Ignore:
Timestamp:
Apr 21, 2008, 12:21:04 PM (10 years ago)
Author:
matus.chochlik
Message:

minor changes to meta_class.hpp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/mirror/boost/mirror/meta_class.hpp

    r44690 r44693  
    117117                        typedef typename mpl::accumulate<
    118118                                list_of_regular_base_classes,
    119                                 mpl::vector<>,
     119                                mpl::vector0<>,
    120120                                mpl::push_back<
    121121                                        mpl::insert_range<
     
    166166                        typedef typename mpl::accumulate<
    167167                                typename base_classes::list,
    168                                 mpl::vector<>,
     168                                mpl::vector0<>,
    169169                                mpl::if_<
    170170                                        reflects_virtual_inheritance<
     
    218218                        struct get_base_class_attrib_type_list
    219219                        {
    220                                 typedef typename
    221                                         meta_inheritance::
    222                                         meta_class::
    223                                         attributes::
    224                                         type_list type;
    225        
     220                                typedef typename meta_inheritance::
     221                                                meta_class::
     222                                                attributes::
     223                                                type_list type;
    226224                        };
    227225
     
    235233                         *  NOTE: this implementation puts the
    236234                         *  members of the virtual bases before
    237                          *  the other members
     235                         *  the other members.
    238236                         */
    239237                        typedef typename mpl::accumulate<
     
    257255                        >::type member_attrib_type_list;
    258256
    259                         /** The count of virtually inherited attributes
     257
     258                        /** This template gets the list of the owner classes
     259                         *  for the inherited attributes.
     260                         */
     261                        template <class meta_inheritance, class current_list>
     262                        struct get_base_class_attrib_owner_and_offs
     263                        {
     264                                typedef typename meta_inheritance::
     265                                                meta_class meta_class;
     266
     267                                typedef typename meta_class::
     268                                                attributes::
     269                                                type_list type_list;
     270
     271                                typedef typename mpl::size<
     272                                                current_list
     273                                        > offset;
     274
     275                                typedef typename mpl::accumulate<
     276                                                type_list,
     277                                                mpl::vector0<>,
     278                                                mpl::pair<
     279                                                        meta_class,
     280                                                        offset         
     281                                                >
     282                                >::type type;
     283                        };
     284
     285                        /** This is a list that contains a pair of owner meta_class
     286                         *  and the index offset for every inherited attribute.
     287                         */
     288                        typedef typename mpl::accumulate<
     289                                base_class_layout,
     290                                mpl::vector0<>,
     291                                mpl::insert_range<
     292                                        mpl::_1,
     293                                        mpl::end<mpl::_1>,
     294                                        get_base_class_attrib_owner_and_offs<
     295                                                mpl::_2,
     296                                                mpl::_1
     297                                        >
     298                                >
     299                        >::type inherited_member_owners_and_offsets;
     300
     301                       
     302                        /** The count of virtually  attributes
    260303                         */
    261304                        typedef typename mpl::accumulate<
     
    283326                                virtual_attrib_count
    284327                        >::type { };
    285                
     328
     329
     330                        /** This template gets the regular_base_class_layout
     331                         *  of a base class when given a meta_inheritance
     332                         *  specialization for this base class.
     333                        template <class meta_inheritance>
     334                        struct get_base_class_inheritance_hierarchy
     335                        {
     336                                typedef typename mpl::push_back<
     337                                                meta_inheritance::
     338                                                meta_class::
     339                                                all_attributes::
     340                                                detail::
     341                                                regular_base_class_layout type;
     342                        };
     343                         */
     344                       
     345                        /** The inheritance hierarchy of non-virtual
     346                         *  base classes of the reflected class.
     347                        typedef typename mpl::accumulate<
     348                                list_of_regular_base_classes,
     349                                mpl::vector0<>,
     350                                mpl::accumulate<
     351                                                get_base_class_regular_layout<
     352                                                        mpl::_2
     353                                                >,
     354                                                mpl::vector0<>,
     355                                >
     356                         */
     357/*
     358                                        mpl::insert_range<
     359                                                mpl::_1,
     360                                                mpl::end<mpl::_1>,
     361                                        >
     362                        >::type regular_base_class_layout;
     363*/
     364                       
     365
     366
    286367                        /** This template is used to query the return value
    287368                         *  type of the getter for the I-th member attribute
Note: See TracChangeset for help on using the changeset viewer.