Changeset 351 in dev for trunk/abdev/BasicCompiler_Common/src/Method.cpp
- Timestamp:
- Oct 17, 2007, 3:31:20 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/src/Method.cpp
r347 r351 4 4 5 5 6 bool DynamicMethod::Override( const UserProc *pUserProc, Prototype::Accessibility accessibility, bool isOverrideModifier ) 7 { 8 if( this->IsVirtual() 9 && !this->IsAbstract() 10 && isOverrideModifier == false ) 11 { 12 // Override修飾子が無い状況で基底クラスの実体メソッドをオーバーライドしようとした 13 SetError(127,NULL,cp); 14 } 15 16 //メンバ関数を上書き 17 this->SetUserProcPtr( pUserProc ); 18 this->SetAbstractMark( false ); 19 20 if( !this->IsVirtual() ) 21 { 22 // オーバーライドミス 23 SetError(136,NULL,cp); 24 } 25 if(this->GetAccessibility() != accessibility ) 26 { 27 SetError(128,NULL,cp); 28 } 29 30 return true; 31 } 32 33 34 StaticMethod::StaticMethod( const StaticMethod &staticMethod ) 35 { 36 // 静的メソッドがコピーコンストラトされることは想定しない 37 SetError(); 38 } 39 6 40 Methods::Methods() 7 41 { 8 42 } 43 44 // コピーコンストラクタ 45 Methods::Methods( const Methods &methods ) 46 { 47 BOOST_FOREACH( CMethod *pMethod, methods ) 48 { 49 this->push_back( new DynamicMethod( dynamic_cast<DynamicMethod &>(*pMethod) ) ); 50 } 51 } 52 9 53 Methods::~Methods() 10 54 { 11 55 Methods &methods = *this; 12 BOOST_FOREACH( CMethod *pMethod, methods ){ 56 BOOST_FOREACH( CMethod *pMethod, methods ) 57 { 13 58 delete pMethod; 14 59 } … … 26 71 } 27 72 28 bool Methods::Override( UserProc *pUserProc, Prototype::Accessibility accessibility)73 CMethod *Methods::FindForOverride( const UserProc *pUserProc ) 29 74 { 30 75 //メソッドのオーバーライド … … 32 77 BOOST_FOREACH( CMethod *pMethod, methods ) 33 78 { 34 if( pMethod->GetUserProc(). GetName() == pUserProc->GetName() )79 if( pMethod->GetUserProc().IsEqualForOverride( pUserProc ) ) 35 80 { 36 if( pMethod->GetUserProc().Params().Equals( pUserProc->Params() ) 37 && pMethod->GetUserProc().ReturnType().Equals( pUserProc->ReturnType() ) ) 38 { 39 //メンバ関数を上書き 40 pMethod->SetUserProcPtr( pUserProc ); 41 pMethod->Override(); 42 43 if( !pMethod->IsVirtual() ) 44 { 45 // オーバーライドミス 46 SetError(136,NULL,cp); 47 } 48 if(pMethod->GetAccessibility() != accessibility ) 49 { 50 SetError(128,NULL,cp); 51 } 52 53 pUserProc->SetMethod( pMethod ); 54 return true; 55 } 81 return pMethod; 56 82 } 57 83 } 58 return false;84 return NULL; 59 85 } 60 86
Note:
See TracChangeset
for help on using the changeset viewer.