VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/Filters/StatisticsGnuR/vtkRCalculatorFilter.h
Go to the documentation of this file.
00001 
00002 /*=========================================================================
00003 
00004   Program:   Visualization Toolkit
00005   Module:    vtkRCalculatorFilter.h
00006 
00007   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00016 /*-------------------------------------------------------------------------
00017   Copyright 2009 Sandia Corporation.
00018   Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00019   the U.S. Government retains certain rights in this software.
00020 -------------------------------------------------------------------------*/
00021 
00043 #ifndef vtkRCalculatorFilter_h
00044 #define vtkRCalculatorFilter_h
00045 
00046 #include "vtkFiltersStatisticsGnuRModule.h" // For export macro
00047 #include "vtkDataObjectAlgorithm.h"
00048 
00049 class vtkRInterface;
00050 class vtkRCalculatorFilterInternals;
00051 class vtkDataSet;
00052 class vtkDoubleArray;
00053 class vtkGraph;
00054 class vtkTree;
00055 class vtkTable;
00056 class vtkCompositeDataSet;
00057 class vtkArrayData;
00058 class vtkStringArray;
00059 
00060 class VTKFILTERSSTATISTICSGNUR_EXPORT vtkRCalculatorFilter : public vtkDataObjectAlgorithm
00061 {
00062 
00063 public:
00064 
00065   static vtkRCalculatorFilter *New();
00066 
00067   vtkTypeMacro(vtkRCalculatorFilter, vtkDataObjectAlgorithm );
00068   void PrintSelf(ostream& os, vtkIndent indent);
00069 
00074   void PutArray(const char* NameOfVTKArray, const char* NameOfRvar);
00075 
00080   void GetArray(const char* NameOfVTKArray, const char* NameOfRvar);
00081 
00083   void RemoveAllPutVariables();
00084 
00086   void RemoveAllGetVariables();
00087 
00089 
00092   void PutTable(const char* NameOfRvar);
00093   void GetTable(const char* NameOfRvar);
00095 
00099   void PutTables(vtkStringArray* NamesOfRVars);
00100 
00104   void GetTables(vtkStringArray* NamesOfRVars);
00105 
00107 
00110   void PutTree(const char* NameOfRvar);
00111   void GetTree(const char* NameOfRvar);
00113 
00117   void PutTrees(vtkStringArray* NamesOfRvars);
00118 
00123   void GetTrees(vtkStringArray* NamesOfRvars);
00124 
00125 
00127 
00128   vtkSetStringMacro(Rscript);
00129   vtkGetStringMacro(Rscript);
00131 
00133 
00134   vtkSetStringMacro(ScriptFname);
00135   vtkGetStringMacro(ScriptFname);
00137 
00139 
00140   vtkSetMacro(Routput,int);
00141   vtkGetMacro(Routput,int);
00143 
00145 
00151   vtkSetMacro(TimeOutput,int);
00152   vtkGetMacro(TimeOutput,int);
00154 
00156 
00158   vtkSetMacro(BlockInfoOutput,int);
00159   vtkGetMacro(BlockInfoOutput,int);
00161 
00163 
00164   virtual int ProcessRequest(vtkInformation* request,
00165                              vtkInformationVector** inputVector,
00166                              vtkInformationVector* outputVector);
00168 
00169 protected:
00170 
00171   int SetRscriptFromFile(const char* fname);
00172 
00173   virtual int RequestData(vtkInformation *vtkNotUsed(request),
00174                           vtkInformationVector **inputVector,
00175                           vtkInformationVector *outputVector);
00176 
00178 
00179   virtual int RequestDataObject(vtkInformation* request,
00180                                 vtkInformationVector** inputVector,
00181                                 vtkInformationVector* outputVector);
00183 
00184   vtkRCalculatorFilter();
00185   ~vtkRCalculatorFilter();
00186 
00187 private:
00188 
00189   vtkRCalculatorFilter(const vtkRCalculatorFilter&);  // Not implemented.
00190   void operator=(const vtkRCalculatorFilter&);  // Not implemented.
00191 
00192   // Implementation details
00193   vtkRCalculatorFilterInternals* rcfi;
00194 
00195   int ProcessInputDataSet(vtkDataSet* dsIn);
00196   int ProcessOutputDataSet(vtkDataSet* dsOut);
00197 
00198   int ProcessInputGraph(vtkGraph* gIn);
00199   int ProcessOutputGraph(vtkGraph* gOut);
00200 
00201   int ProcessInputArrayData(vtkArrayData * adIn);
00202   int ProcessOutputArrayData(vtkArrayData * adOut);
00203 
00204   int ProcessInputCompositeDataSet(vtkCompositeDataSet* cdsIn);
00205   int ProcessOutputCompositeDataSet(vtkCompositeDataSet * cdsOut);
00206 
00207   int ProcessInputTable(vtkTable* tOut);
00208   int ProcessInputTable(std::string& name, vtkTable* tIn);
00209 
00210   vtkTable* GetOutputTable(std::string& name);
00211   int ProcessOutputTable(vtkTable* tOut);
00212 
00213   int ProcessInputTree(vtkTree* tIn);
00214   int ProcessInputTree(std::string& name, vtkTree* tIn);
00215 
00216   vtkTree* GetOutputTree(std::string& name);
00217   int ProcessOutputTree(vtkTree* tOut);
00218 
00219   int ProcessInputDataObject(vtkDataObject *input);
00220   int ProcessOutputDataObject(vtkDataObject *input);
00221   int HasMultipleGets();
00222   int HasMultiplePuts();
00223 
00224   vtkRInterface* ri;
00225   char* Rscript;
00226   char* RfileScript;
00227   char* ScriptFname;
00228   int Routput;
00229   int TimeOutput;
00230   int BlockInfoOutput;
00231   char* OutputBuffer;
00232   vtkDoubleArray* CurrentTime;
00233   vtkDoubleArray* TimeRange;
00234   vtkDoubleArray* TimeSteps;
00235   vtkDoubleArray* BlockId;
00236   vtkDoubleArray* NumBlocks;
00237 
00238 };
00239 
00240 #endif
00241