Orfeo Toolbox  3.16
itkProcessObject.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkProcessObject.h,v $
5  Language: C++
6  Date: $Date: 2009-03-03 15:08:02 $
7  Version: $Revision: 1.78 $
8 
9  Copyright (c) Insight Software Consortium. All rights reserved.
10  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11 
12  Portions of this code are covered under the VTK copyright.
13  See VTKCopyright.txt or http://www.kitware.com/VTKCopyright.htm for details.
14 
15  This software is distributed WITHOUT ANY WARRANTY; without even
16  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
17  PURPOSE. See the above copyright notices for more information.
18 
19 =========================================================================*/
20 #ifndef __itkProcessObject_h
21 #define __itkProcessObject_h
22 
23 #include "itkObject.h"
24 #include "itkDataObject.h"
25 #include "itkMultiThreader.h"
26 #include "itkObjectFactory.h"
27 #include <vector>
28 
29 namespace itk
30 {
31 
88 {
89 public:
92  typedef Object Superclass;
95 
97  itkTypeMacro(ProcessObject,Object);
98 
101 
103  typedef std::vector<DataObjectPointer> DataObjectPointerArray;
104 
109  {return m_Inputs;}
110 
112  typedef DataObjectPointerArray::size_type DataObjectPointerArraySizeType;
113 
118  DataObjectPointerArraySizeType GetNumberOfInputs() const
119  {return m_Inputs.size();}
120 
128  virtual DataObjectPointerArraySizeType GetNumberOfValidRequiredInputs() const;
129 
134  { return m_Outputs; }
135  DataObjectPointerArraySizeType GetNumberOfOutputs() const
136  {return m_Outputs.size();}
137 
140  itkSetMacro(AbortGenerateData,bool);
141 
144  itkGetConstReferenceMacro(AbortGenerateData,bool);
145 
147  itkBooleanMacro(AbortGenerateData);
148 
153  itkSetClampMacro(Progress,float,0.0f,1.0f);
154 
158  itkGetConstReferenceMacro(Progress,float);
159 
165  void UpdateProgress(float amount);
166 
185  virtual void Update();
186 
193  virtual void UpdateLargestPossibleRegion();
194 
207  virtual void UpdateOutputInformation();
208 
211  virtual void PropagateRequestedRegion(DataObject *output);
212 
214  virtual void UpdateOutputData(DataObject *output);
215 
216 
224  virtual void EnlargeOutputRequestedRegion(DataObject *itkNotUsed(output)){};
225 
226 
230  virtual void ResetPipeline();
231 
246  virtual DataObjectPointer MakeOutput(unsigned int idx);
247 
253  virtual void SetReleaseDataFlag(bool flag);
254  virtual bool GetReleaseDataFlag() const;
255  void ReleaseDataFlagOn() {this->SetReleaseDataFlag(true);}
256  void ReleaseDataFlagOff() {this->SetReleaseDataFlag(false);}
257 
270  itkSetMacro(ReleaseDataBeforeUpdateFlag, bool);
271  itkGetConstReferenceMacro(ReleaseDataBeforeUpdateFlag, bool);
272  itkBooleanMacro(ReleaseDataBeforeUpdateFlag);
273 
274 
276  itkSetClampMacro( NumberOfThreads, int, 1, ITK_MAX_THREADS );
277  itkGetConstReferenceMacro( NumberOfThreads, int );
278 
280  MultiThreader * GetMultiThreader()
281  {return m_Threader;}
282 
289  virtual void PrepareOutputs();
290 
291 protected:
292  ProcessObject();
293  ~ProcessObject();
294  void PrintSelf(std::ostream& os, Indent indent) const;
295 
298  virtual void SetNthInput(unsigned int num, DataObject *input);
299  virtual void AddInput(DataObject *input);
300  virtual void RemoveInput(DataObject *input);
301  itkSetMacro(NumberOfRequiredInputs,unsigned int);
302  itkGetConstReferenceMacro(NumberOfRequiredInputs,unsigned int);
303 
309  virtual void PushBackInput(const DataObject *input);
310  virtual void PopBackInput();
311  virtual void PushFrontInput(const DataObject *input);
312  virtual void PopFrontInput();
313 
314 
316  void SetNumberOfInputs(unsigned int num);
317 
319  DataObject * GetInput(unsigned int idx);
320  const DataObject * GetInput(unsigned int idx) const;
321 
324  virtual void SetNthOutput(unsigned int num, DataObject *output);
325  virtual void AddOutput(DataObject *output);
326  virtual void RemoveOutput(DataObject *output);
327  itkSetMacro(NumberOfRequiredOutputs,unsigned int);
328  itkGetConstReferenceMacro(NumberOfRequiredOutputs,unsigned int);
329 
331  void SetNumberOfOutputs(unsigned int num);
332 
334  DataObject * GetOutput(unsigned int idx);
335  const DataObject * GetOutput(unsigned int idx) const;
336 
350  virtual void GenerateInputRequestedRegion();
351 
363  virtual void GenerateOutputRequestedRegion(DataObject *output);
364 
375  virtual void GenerateOutputInformation();
376 
378  virtual void GenerateData() {}
379 
383  virtual void PropagateResetPipeline();
384 
396  virtual void ReleaseInputs();
397 
406  virtual void CacheInputReleaseDataFlags();
407 
411  virtual void RestoreInputReleaseDataFlags();
412 
419 
422 
423 private:
424  ProcessObject(const Self&); //purposely not implemented
425  void operator=(const Self&); //purposely not implemented
426 
430 
432  std::vector<bool> m_CachedInputReleaseDataFlags;
433 
437 
440  float m_Progress;
441 
446 
449 
451  friend class DataObject;
452 };
453 
454 } // end namespace itk
455 
456 #endif

Generated at Sun May 19 2013 00:00:45 for Orfeo Toolbox with doxygen 1.8.3.1