Changeset 640 in dev for trunk/ab5.0/abdev/ab_common/src/Lexical/Type.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/Type.cpp
r639 r640 129 129 bool Type::Equals( const Type &type ) const 130 130 { 131 if( basicType == type.basicType ){ 132 if( NATURAL_TYPE( basicType ) == DEF_OBJECT 133 || NATURAL_TYPE( basicType ) == DEF_STRUCT ){ 134 135 if( index == type.index ){ 131 if( basicType == type.basicType ) 132 { 133 if( NATURAL_TYPE( basicType ) == DEF_OBJECT || NATURAL_TYPE( basicType ) == DEF_STRUCT ) 134 { 135 // ポインタが等しいかどうかを見てみる 136 if( this->pClass == type.pClass ) 137 { 138 return true; 139 } 140 else if( this->pClass->IsNeedResolve() || type.pClass->IsNeedResolve() ) 141 { 142 // 依存関係解決前の状態であれば、パスが等しいかどうかを見てみる 143 if( this->pClass->IsDuplication( type.pClass ) ) 144 { 136 145 return true; 137 146 } 138 139 } 140 else{ 147 } 148 } 149 else 150 { 141 151 return true; 142 152 } … … 556 566 } 557 567 558 bool Type::Resolve( const ObjectModule &resolver )568 bool Type::Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors ) 559 569 { 560 570 if( this->HasMember() ) … … 562 572 if( this->pClass->IsNeedResolve() ) 563 573 { 564 this->pClass = resolver.meta.GetClasses().FindLike( this->pClass ); 574 const CClass *pTempClass = resolver.meta.GetClasses().FindLike( this->pClass ); 575 if( pTempClass ) 576 { 577 this->pClass = pTempClass; 578 } 579 else 580 { 581 resolveErrors.Add( ResolveError( this->pClass->GetRelationalObjectModuleIndex(), this->pClass->GetFullName() ) ); 582 } 565 583 } 566 584 567 585 BOOST_FOREACH( GenericType &actualGenericType, actualGenericTypes ) 568 586 { 569 actualGenericType.GetType().Resolve( resolver );587 actualGenericType.GetType().Resolve( resolver, resolveErrors ); 570 588 } 571 589 } … … 655 673 return pClass->GetNamespaceScopes().ToString() + "." + pClass->GetName() + "._Create"; 656 674 } 675 676 bool BlittableType::Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors ) 677 { 678 basicType.Resolve( resolver, resolveErrors ); 679 680 if( this->pClass->IsNeedResolve() ) 681 { 682 const CClass *pTempClass = resolver.meta.GetClasses().FindLike( this->pClass ); 683 if( pTempClass ) 684 { 685 this->pClass = pTempClass; 686 } 687 else 688 { 689 resolveErrors.Add( ResolveError( this->pClass->GetRelationalObjectModuleIndex(), this->pClass->GetFullName() ) ); 690 } 691 } 692 693 return true; 694 }
Note:
See TracChangeset
for help on using the changeset viewer.