示例#1
0
void GObject::registerProperty ( GObject* obj )
{
    assert ( obj );
    obj->registerAll();

    const CategoryPropertyMap& otherPropMap = obj->getPropertyMap();

    CategoryPropertyMap::const_iterator ibegin = otherPropMap.begin();
    CategoryPropertyMap::const_iterator iend = otherPropMap.end();

    for ( ; ibegin != iend; ++ibegin )
    {
        PropertyMap* myPropMap = 0;
        if ( mOption.Get ( ibegin->first, myPropMap ) )
        {
            assert ( 0 );
        }
        else
        {
            myPropMap = new PropertyMap;
            mOption.Insert ( ibegin->first, myPropMap );
        }
        const PropertyMap* propMap = ibegin->second;
        for ( PropertyMap::const_iterator walk = propMap->begin();
                walk != propMap->end(); ++walk )
        {
            EPropertyVar* evar = new EPropertyVar;
            evar->mPtr = walk->second->mPtr;
            evar->mCategoryName = walk->second->mCategoryName;
            evar->mProp = walk->second->mProp;
            evar->mRefOther = true;
            myPropMap->Insert ( walk->first, evar );
        }
    }
    //mOption.insert ( ibegin, iend );
}