Ignore:
Timestamp:
Aug 21, 2008, 11:02:07 PM (16 years ago)
Author:
dai
Message:

#200への対応。ジェネリックインターフェイスを実装したジェネリッククラスのテンプレート展開に対応。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/ab_common/src/Lexical/Class.cpp

    r672 r728  
    110110
    111111    // 仮想関数になるメソッドに使用チェックをつける
    112     const CClass &objThis = *this;
    113     BOOST_FOREACH( const CMethod *pMethod, objThis.GetDynamicMethods() )
     112    const CClass &_class = *this;
     113    BOOST_FOREACH( const CMethod *pMethod, _class.GetDynamicMethods() )
    114114    {
    115115        if( pMethod->IsVirtual() )
     
    118118        }
    119119    }
    120 }
    121 
     120
     121    // インターフェイスメソッドに使用チェックをつける
     122    BOOST_FOREACH( const ::Interface *pInterface, _class.GetInterfaces() )
     123    {
     124        BOOST_FOREACH( const CMethod *pMethod, pInterface->GetDynamicMethods() )
     125        {
     126            pMethod->GetUserProc().Using();
     127        }
     128    }
     129}
    122130bool CClass::IsClass() const
    123131{
     
    268276
    269277    return true;
     278}
     279
     280bool CClass::InheritsInterface( const CClass &inheritsInterfaceClass, const Types &actualTypeParameters, int nowLine )
     281{
     282    if( !( this->IsInterface() || this->IsComInterface() ) )
     283    {
     284        Jenga::Throw( "非インターフェイスに対してCClass::InheritsInterfaceメソッドが呼ばれた" );
     285    }
     286
     287    // インターフェイスを継承する
     288    return this->InheritsClass( inheritsInterfaceClass, actualTypeParameters, nowLine );
    270289}
    271290
Note: See TracChangeset for help on using the changeset viewer.