VTK
dox/Common/ExecutionModel/vtkExecutiveCollection.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkExecutiveCollection.h
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 =========================================================================*/
00015 /*-------------------------------------------------------------------------
00016   Copyright (c) 2008, 2009 by SCI Institute, University of Utah.
00017 
00018   This is part of the Parallel Dataflow System originally developed by
00019   Huy T. Vo and Claudio T. Silva. For more information, see:
00020 
00021   "Parallel Dataflow Scheme for Streaming (Un)Structured Data" by Huy
00022   T. Vo, Daniel K. Osmari, Brian Summa, Joao L.D. Comba, Valerio
00023   Pascucci and Claudio T. Silva, SCI Institute, University of Utah,
00024   Technical Report #UUSCI-2009-004, 2009.
00025 
00026   "Multi-Threaded Streaming Pipeline For VTK" by Huy T. Vo and Claudio
00027   T. Silva, SCI Institute, University of Utah, Technical Report
00028   #UUSCI-2009-005, 2009.
00029 -------------------------------------------------------------------------*/
00040 #ifndef __vtkExecutiveCollection_h
00041 #define __vtkExecutiveCollection_h
00042 
00043 #include "vtkCommonExecutionModelModule.h" // For export macro
00044 #include "vtkCollection.h"
00045 
00046 #include "vtkExecutive.h" // Needed for static cast
00047 
00048 class VTKCOMMONEXECUTIONMODEL_EXPORT vtkExecutiveCollection : public vtkCollection
00049 {
00050 public:
00051   static vtkExecutiveCollection *New();
00052   vtkTypeMacro(vtkExecutiveCollection,vtkCollection);
00053   void PrintSelf(ostream& os, vtkIndent indent);
00054 
00056 
00057   void AddItem(vtkExecutive *exec)
00058   {
00059     this->vtkCollection::AddItem(exec);
00060   }
00062 
00064 
00065   vtkExecutive *GetNextItem()
00066   {
00067     return static_cast<vtkExecutive *>(this->GetNextItemAsObject());
00068   }
00070 
00071   //BTX
00073 
00075   vtkExecutive *GetNextExecutive(vtkCollectionSimpleIterator &cookie)
00076   {
00077     return static_cast<vtkExecutive *>(this->GetNextItemAsObject(cookie));
00078   }
00079   //ETX
00081 
00082 protected:
00083   vtkExecutiveCollection() {}
00084   ~vtkExecutiveCollection() {}
00085 
00086 private:
00087   // hide the standard AddItem from the user and the compiler.
00088   void AddItem(vtkObject *o)
00089   {
00090     this->vtkCollection::AddItem(o);
00091   }
00092 
00093 private:
00094   vtkExecutiveCollection(const vtkExecutiveCollection&);  // Not implemented.
00095   void operator=(const vtkExecutiveCollection&);  // Not implemented.
00096 };
00097 
00098 
00099 #endif