00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00028 #ifndef __vtkDSPFilterGroup_h
00029 #define __vtkDSPFilterGroup_h
00030 
00031 #include "vtkObject.h"
00032 
00033 class vtkDSPFilterGroupVectorIntSTLCloak;
00034 class vtkDSPFilterGroupVectorVectorIntSTLCloak;
00035 class vtkDSPFilterGroupVectorArraySTLCloak;
00036 class vtkDSPFilterGroupVectorVectorArraySTLCloak;
00037 class vtkDSPFilterGroupVectorStringSTLCloak;
00038 class vtkDSPFilterGroupVectorDefinitionSTLCloak;
00039 class vtkFloatArray;
00040 class vtkDSPFilterDefinition;
00041 
00042 class VTK_HYBRID_EXPORT vtkDSPFilterGroup : public vtkObject
00043 {
00044 public:
00045   static vtkDSPFilterGroup *New();
00046   vtkTypeMacro(vtkDSPFilterGroup,vtkObject);
00047   void PrintSelf(ostream& os, vtkIndent indent);
00048 
00049 
00050   void AddFilter(vtkDSPFilterDefinition *filter);
00051   void RemoveFilter(char *a_outputVariableName);
00052 
00053   bool IsThisInputVariableInstanceNeeded( const char *a_name, int a_timestep, int a_outputTimestep );
00054   bool IsThisInputVariableInstanceCached( const char *a_name, int a_timestep );
00055   void AddInputVariableInstance( const char *a_name, int a_timestep, vtkFloatArray *a_data );
00056 
00057   vtkFloatArray *GetOutput( int a_whichFilter, int a_whichTimestep, int &a_instancesCalculated );
00058 
00059   vtkFloatArray *GetCachedInput( int a_whichFilter, int a_whichTimestep );
00060   vtkFloatArray *GetCachedOutput( int a_whichFilter, int a_whichTimestep );
00061 
00062   const char *GetInputVariableName(int a_whichFilter);
00063 
00064   int GetNumFilters();
00065 
00066   void Copy( vtkDSPFilterGroup *other );
00067 
00068   vtkDSPFilterDefinition *GetFilter(int a_whichFilter);
00069 
00070   vtkDSPFilterGroupVectorDefinitionSTLCloak *  FilterDefinitions;
00071 
00072 protected:
00073   vtkDSPFilterGroup();
00074   ~vtkDSPFilterGroup();
00075 
00076 
00077   vtkDSPFilterGroupVectorArraySTLCloak *  CachedInputs;
00078   vtkDSPFilterGroupVectorStringSTLCloak *  CachedInputNames;
00079   vtkDSPFilterGroupVectorIntSTLCloak *  CachedInputTimesteps;
00080 
00081   vtkDSPFilterGroupVectorVectorArraySTLCloak *  CachedOutputs;
00082   vtkDSPFilterGroupVectorVectorIntSTLCloak *  CachedOutputTimesteps;
00083 
00084 private:
00085   vtkDSPFilterGroup(const vtkDSPFilterGroup&); 
00086   void operator=(const vtkDSPFilterGroup&); 
00087 };
00088 
00089 #endif