ISequence<MethodSignature>* MethodsList::extractAndSyncAnyExtraMethods( Method& method ) { ISequence<MethodSignature>* method_signatures = new Sequence<MethodSignature>(); { ISequence<Method>* extra_methods = method.extractExtraMethods(); if ( extra_methods ) { ClassSignature class_signature( this->cu.getFQName() ); while ( ! extra_methods->isEmpty() ) { Method* method = extra_methods->removeLast(); if ( method->sync() ) { const char* method_key = method->getSignature().getMethodKey().getChars(); this->methods->insert( method_key, method ); method_signatures->addLast( new MethodSignature( class_signature, method_key ) ); } else { delete method_signatures; method_signatures = NULL; break; } } } delete extra_methods; } return method_signatures; }
bool MethodsList::removeMethodFromAST( Method& method ) { bool status = false; const char* method_key = method.getSignature().getMethodKey().getChars(); if ( (status = method.removeMethod( method_key )) ) { try { IEntry<IPosition<SourceToken> >* e = this->methodPositions->find( method_key ); delete this->methodPositions->remove( e ); } catch ( NoSuchElementException* ex ) { delete ex; } try { IEntry<Method>* e = this->methods->find( method_key ); delete this->methods->remove( e ); } catch ( NoSuchElementException* ex ) { delete ex; } } return status; }