Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

Common/vtkProcessObject.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkProcessObject.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00047 #ifndef __vtkProcessObject_h
00048 #define __vtkProcessObject_h
00049 
00050 #include "vtkObject.h"
00051 
00052 class vtkDataObject;
00053 
00054 class VTK_COMMON_EXPORT vtkProcessObject : public vtkObject
00055 {
00056 public:
00057   vtkTypeRevisionMacro(vtkProcessObject,vtkObject);
00058   void PrintSelf(ostream& os, vtkIndent indent);
00059 
00061 
00063   vtkSetMacro(AbortExecute,int);
00064   vtkGetMacro(AbortExecute,int);
00065   vtkBooleanMacro(AbortExecute,int);
00067 
00069 
00070   vtkSetClampMacro(Progress,double,0.0,1.0);
00071   vtkGetMacro(Progress,double);
00073 
00077   void UpdateProgress(double amount);
00078 
00080 
00082   vtkSetStringMacro(ProgressText);
00083   vtkGetStringMacro(ProgressText);
00085 
00086   // left public for performance since it is used in inner loops
00087   int AbortExecute;
00088 
00090 
00092   vtkDataObject **GetInputs() {return this->Inputs;}
00093   vtkGetMacro(NumberOfInputs,int);
00095 
00098   void SqueezeInputArray();
00099   
00101   void RemoveAllInputs();
00102 
00104 
00106   vtkGetMacro( ErrorCode, unsigned long );
00108 
00109 protected:
00110   vtkProcessObject();
00111   ~vtkProcessObject();
00112 
00113   // Progress/Update handling
00114   double Progress;
00115   char  *ProgressText;
00116 
00117   int NumberOfInputs;
00118   int NumberOfRequiredInputs;
00119   vtkDataObject **Inputs;     //An array of the inputs to the filter
00120   // Temporary arrays used internally.  
00121   // It is only valid after SortInputsByLocality is called.
00122   vtkDataObject **SortedInputs;   // Inputs sorted by locality
00123   // We need a second array for an effficeint search.  
00124   // This array is never valid.
00125   vtkDataObject **SortedInputs2;   
00126   void SortInputsByLocality();
00127   // A helper method for quicksort.
00128   void SortMerge(vtkDataObject **a1, int l1,
00129                  vtkDataObject **a2, int l2,
00130                  vtkDataObject **results);
00131 
00132   // Called to allocate the input array.  Copies old inputs.
00133   void SetNumberOfInputs(int num);
00134 
00135   // protected methods for setting inputs.
00136   virtual void SetNthInput(int num, vtkDataObject *input);
00137   virtual void AddInput(vtkDataObject *input);
00138   virtual void RemoveInput(vtkDataObject *input);
00139   
00141 
00143   vtkSetMacro( ErrorCode, unsigned long );
00144   unsigned long ErrorCode;
00146   
00147 private:
00148   vtkProcessObject(const vtkProcessObject&);  // Not implemented.
00149   void operator=(const vtkProcessObject&);  // Not implemented.
00150 };
00151 
00152 #endif
00153