Пример #1
0
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;
}
Пример #2
0
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;
}