Ignore:
Timestamp:
Jun 14, 2008, 12:16:27 PM (16 years ago)
Author:
dai_9181
Message:

静的リンクリンカの依存関係解決モジュールを製作中

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/ab_common/include/Lexical/Procedure.h

    r639 r640  
    111111    }
    112112
    113     virtual bool Resolve( const ObjectModule &resolver );
     113    virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
    114114};
    115115
     
    161161        ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( Procedure );
    162162        ar & boost::serialization::make_nvp("pParentClass", const_cast<CClass *&>(pParentClass) );
     163        ar & boost::serialization::make_nvp("pInterface", const_cast<Interface *&>(pInterface) );
    163164
    164165        if( ActiveBasic::Common::Environment::IsRemoveExternal() )
     
    173174        ar & BOOST_SERIALIZATION_NVP( _paramStr );
    174175        ar & BOOST_SERIALIZATION_NVP( importedNamespaces );
    175         ar & boost::serialization::make_nvp("pInterface", const_cast<Interface *&>(pInterface) );
    176176        ar & BOOST_SERIALIZATION_NVP( pMethod );
    177177        ar & BOOST_SERIALIZATION_NVP( isMacro );
     
    209209    virtual bool IsDuplication( const UserProc *pUserProc ) const
    210210    {
    211         if( this->GetParentClassPtr() == pUserProc->GetParentClassPtr() // 親クラスが等しい
    212             && this->pInterface == pUserProc->pInterface                // インターフェイスが等しい
    213             && pUserProc->IsEqualSymbol( *this )                        // 名前空間及び名前が等しい
    214             && this->Params().Equals( pUserProc->Params() )             // パラメータが等しい
    215             && this->returnType.Equals( pUserProc->returnType ) )       // 戻り値が等しい
     211        bool isEqualParentClass =
     212            this->HasParentClass() && pUserProc->HasParentClass()
     213            ? this->GetParentClassPtr()->Equals( pUserProc->GetParentClassPtr() )
     214            : this->GetParentClassPtr() == pUserProc->GetParentClassPtr();
     215        bool isEqualInterface =
     216            this->pInterface && pUserProc->pInterface
     217            ? this->pInterface->Equals( pUserProc->pInterface )
     218            : this->pInterface == pUserProc->pInterface;
     219
     220        if( isEqualParentClass                                      // 親クラスが等しい
     221            && isEqualInterface                                     // インターフェイスが等しい
     222            && pUserProc->IsEqualSymbol( *this )                    // 名前空間及び名前が等しい
     223            && this->Params().Equals( pUserProc->Params() )         // パラメータが等しい
     224            && this->returnType.Equals( pUserProc->returnType ) )   // 戻り値が等しい
    216225        {
    217226            return true;
     
    376385    const CMethod &GetMethod() const;
    377386
    378     virtual bool Resolve( const ObjectModule &resolver );
     387    virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
    379388
    380389    static const UserProc *pGlobalProc;
     
    484493    }
    485494
    486     virtual bool Resolve( const ObjectModule &resolver );
     495    virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
    487496};
    488497class DllProcs : public Jenga::Common::Hashmap<DllProc>
     
    525534    }
    526535
    527     virtual bool Resolve( const ObjectModule &resolver );
     536    virtual bool Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors );
    528537};
    529538
Note: See TracChangeset for help on using the changeset viewer.