X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FBase%2FEvents.h;h=09f0637da4731445aff3c2304363aa18963529f4;hb=56b8bb48cc05a297a3faa264f8f2a88de21ef203;hp=ad662abdf65d90886ba730d0d3e4dee81e7c3bb3;hpb=97940c7ac873a39428e8739b2d47ca8485cff70e;p=FrontAlgorithms.git diff --git a/lib/fpa/Base/Events.h b/lib/fpa/Base/Events.h index ad662ab..09f0637 100644 --- a/lib/fpa/Base/Events.h +++ b/lib/fpa/Base/Events.h @@ -4,15 +4,46 @@ #include #include +// ------------------------------------------------------------------------- +#define fpa_Base_NewEvent( name ) \ + class name \ + : public BaseEvent \ + { \ + public: \ + name( ) : BaseEvent( ) { } \ + virtual ~name( ) { } \ + const char* GetEventName( ) const \ + { return( "fpa::Base::##name" ); } \ + bool CheckEvent( const itk::EventObject* e ) const \ + { return( dynamic_cast< const name* >( e ) != NULL ); } \ + itk::EventObject* MakeObject( ) const \ + { return( new name( ) ); } \ + }; + +// ------------------------------------------------------------------------- +#define fpa_Base_NewEventWithVertex( name, type ) \ + class name \ + : public BaseEventWithVertex< type > \ + { \ + public: \ + name( ) : BaseEventWithVertex< type >( ) { } \ + name( const type& v, long fid ) \ + : BaseEventWithVertex< type >( v, fid ) { } \ + virtual ~name( ) { } \ + const char* GetEventName( ) const \ + { return( "fpa::Base::##name" ); } \ + bool CheckEvent( const itk::EventObject* e ) const \ + { return( dynamic_cast< const name* >( e ) != NULL ); } \ + itk::EventObject* MakeObject( ) const \ + { return( new name( ) ); } \ + }; + namespace fpa { namespace Base { /** - * Evolution event. An event is generated when a vertex changes its - * state. */ - template< class N > class BaseEvent : public itk::AnyEvent { @@ -20,141 +51,47 @@ namespace fpa BaseEvent( ) : itk::AnyEvent( ) { } - BaseEvent( const N& n ) - : itk::AnyEvent( ), - Node( n ) - { } virtual ~BaseEvent( ) { } - const char* GetEventName( ) const { return( "fpa::Base::BaseEvent" ); } bool CheckEvent( const itk::EventObject* e ) const - { return( dynamic_cast< const BaseEvent< N >* >( e ) != NULL ); } - itk::EventObject* MakeObject( ) const - { return( new BaseEvent< N >( ) ); } - - public: - N Node; - }; - - /** - */ - template< class N > - class FrontEvent - : public BaseEvent< N > - { - public: - FrontEvent( ) - : BaseEvent< N >( ) - { } - FrontEvent( const N& n ) - : BaseEvent< N >( n ) - { } - virtual ~FrontEvent( ) - { } - const char* GetEventName( ) const - { return( "fpa::Base::FrontEvent" ); } - bool CheckEvent( const itk::EventObject* e ) const - { return( dynamic_cast< const FrontEvent< N >* >( e ) != NULL ); } - itk::EventObject* MakeObject( ) const - { return( new FrontEvent< N >( ) ); } - }; - - /** - */ - template< class N > - class MarkEvent - : public BaseEvent< N > - { - public: - MarkEvent( ) - : BaseEvent< N >( ) - { } - MarkEvent( const N& n ) - : BaseEvent< N >( n ) - { } - virtual ~MarkEvent( ) - { } - const char* GetEventName( ) const - { return( "fpa::Base::MarkEvent" ); } - bool CheckEvent( const itk::EventObject* e ) const - { return( dynamic_cast< const MarkEvent< N >* >( e ) != NULL ); } + { return( dynamic_cast< const BaseEvent* >( e ) != NULL ); } itk::EventObject* MakeObject( ) const - { return( new MarkEvent< N >( ) ); } + { return( new BaseEvent( ) ); } }; /** */ - template< class N > - class CollisionEvent - : public BaseEvent< N > + template< class V > + class BaseEventWithVertex + : public BaseEvent { public: - CollisionEvent( ) - : BaseEvent< N >( ) - { } - CollisionEvent( const N& n ) - : BaseEvent< N >( n ) + BaseEventWithVertex( ) + : BaseEvent( ) { } - virtual ~CollisionEvent( ) - { } - const char* GetEventName( ) const - { return( "fpa::Base::CollisionEvent" ); } - bool CheckEvent( const itk::EventObject* e ) const - { return( dynamic_cast< const CollisionEvent< N >* >( e ) != NULL ); } - itk::EventObject* MakeObject( ) const - { return( new CollisionEvent< N >( ) ); } - }; - - /** - */ - template< class N > - class EndEvent - : public BaseEvent< N > - { - public: - EndEvent( ) - : BaseEvent< N >( ) + BaseEventWithVertex( const V& v, long fid ) + : BaseEvent( ), + Vertex( v ), + FrontId( fid ) { } - virtual ~EndEvent( ) + virtual ~BaseEventWithVertex( ) { } const char* GetEventName( ) const - { return( "fpa::Base::EndEvent" ); } - bool CheckEvent( const itk::EventObject* e ) const - { return( dynamic_cast< const EndEvent< N >* >( e ) != NULL ); } - itk::EventObject* MakeObject( ) const - { return( new EndEvent< N >( ) ); } - }; - - /** - */ - template< class N > - class BacktrackingEvent - : public BaseEvent< N > - { - public: - BacktrackingEvent( ) - : BaseEvent< N >( ) - { } - BacktrackingEvent( const N& n, const unsigned long& id ) - : BaseEvent< N >( n ), - BackId( id ) - { } - virtual ~BacktrackingEvent( ) - { } - const char* GetEventName( ) const - { return( "fpa::Base::BacktrackingEvent" ); } + { return( "fpa::Base::BaseEventWithVertex" ); } bool CheckEvent( const itk::EventObject* e ) const { return( - dynamic_cast< const BacktrackingEvent< N >* >( e ) != NULL + dynamic_cast< const BaseEventWithVertex< V >* >( e ) != NULL ); } itk::EventObject* MakeObject( ) const - { return( new BacktrackingEvent< N >( ) ); } + { return( new BaseEventWithVertex< V >( ) ); } - unsigned long BackId; + public: + V Vertex; + long FrontId; }; } // ecapseman