Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef __cmtkArrayFilter_h_included_
00034 #define __cmtkArrayFilter_h_included_
00035
00036 #include <cmtkconfig.h>
00037
00038 #include <Pipeline/cmtkSource.h>
00039 #include <Pipeline/cmtkPipelineObject.h>
00040
00041 namespace
00042 cmtk
00043 {
00044
00047
00057 template<class I, class O,int InputDim=1>
00058 class ArrayFilter :
00060 public Source<O>
00061 {
00062 public:
00064 void SetInput ( const int index, I *const input )
00065 {
00066 this->ReplaceObject( Input[index], input );
00067 }
00068
00074 virtual long Update ()
00075 {
00076 this->CheckAllInputsForUpdate();
00077 return this->PipelineObject::Update();
00078 }
00079
00081 virtual void CheckAllInputsForUpdate()
00082 {
00083 for ( int i=0; i<InputDim; ++i )
00084 if ( Input[i] )
00085 this->CheckInputForUpdate( Input[i] );
00086 }
00087
00088 protected:
00090 ArrayFilter()
00091 {
00092 memset( Input, 0, sizeof( Input ) );
00093 }
00094
00098 virtual ~ArrayFilter()
00099 {
00100 for ( int i=0; i<InputDim; ++i )
00101 if ( Input[i] ) Input[i]->Delete();
00102 }
00103
00105 I *Input[InputDim];
00106 };
00107
00109
00110 }
00111
00112 #endif // #ifndef __cmtkArrayFilter_h_included_