Example #1
0
	bool Manager::VTrigger ( IData const & inEvent ) const
	{
		if ( ! VValidateType( inEvent.GetTypeId() ) )
			return false;

		EventListenerMap::const_iterator itWC = m_registry.find( 0 );

		if ( itWC != m_registry.end() )
		{
			EventListenerTable const & table = itWC->second;

			bool processed = false;
	
			for ( EventListenerTable::const_iterator it2 = table.begin(), it2End = table.end();
					it2 != it2End;
						it2++ )
			{
				(*it2)->HandleEvent( inEvent );
			}
		}
	
		EventListenerMap::const_iterator it = m_registry.find( inEvent.GetTypeId().Value() );

		if ( it == m_registry.end() )
			return false;

		EventListenerTable const & table = it->second;

		bool processed = false;
	
		for ( EventListenerTable::const_iterator it2 = table.begin(), it2End = table.end();
				it2 != it2End;
					it2++ )
		{
			ListenerPtr listener = *it2;
			if ( listener->HandleEvent( inEvent ) )
			{
				processed = true;
			}
		}
		return processed;
	}