Changeset 640 in dev for trunk/ab5.0/abdev/ab_common/src/Lexical/Interface.cpp
- Timestamp:
- Jun 14, 2008, 12:16:27 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/ab_common/src/Lexical/Interface.cpp
r639 r640 33 33 } 34 34 35 bool Interface::Equals( const Interface *pInterface ) const 36 { 37 // ポインタが等しいかどうかを見てみる 38 if( this == pInterface ) 39 { 40 return true; 41 } 42 else if( this->pInterfaceClass->IsNeedResolve() || pInterface->pInterfaceClass->IsNeedResolve() ) 43 { 44 // 依存関係解決前の状態であれば、パスが等しいかどうかを見てみる 45 if( this-pInterfaceClass->IsDuplication( pInterface->pInterfaceClass ) ) 46 { 47 return true; 48 } 49 } 50 return false; 51 } 52 35 53 std::string Interface::GetFullNameWithActualGenericTypeParameters() const 36 54 { … … 53 71 } 54 72 55 bool Interface::Resolve( const ObjectModule &resolver )73 bool Interface::Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors ) 56 74 { 57 75 // 動的メソッド 58 76 BOOST_FOREACH( CMethod *pMethod, GetDynamicMethods() ) 59 77 { 60 pMethod->Resolve( resolver );78 pMethod->Resolve( resolver, resolveErrors ); 61 79 } 62 80 … … 66 84 if( this->pInterfaceClass->IsNeedResolve() ) 67 85 { 68 this->pInterfaceClass = resolver.meta.GetClasses().FindLike( pInterfaceClass ); 86 const CClass *pTempClass = resolver.meta.GetClasses().FindLike( this->pInterfaceClass ); 87 if( pTempClass ) 88 { 89 this->pInterfaceClass = pTempClass; 90 } 91 else 92 { 93 resolveErrors.Add( ResolveError( this->pInterfaceClass->GetRelationalObjectModuleIndex(), this->pInterfaceClass->GetFullName() ) ); 94 } 69 95 } 70 96 } … … 72 98 BOOST_FOREACH( Type &actualTypeParameter, actualTypeParameters ) 73 99 { 74 actualTypeParameter.Resolve( resolver );100 actualTypeParameter.Resolve( resolver, resolveErrors ); 75 101 } 76 102
Note:
See TracChangeset
for help on using the changeset viewer.