VTK
dox/Parallel/Core/vtkFieldDataSerializer.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003  Program:   Visualization Toolkit
00004  Module:    vtkFieldDataSerializer.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  =========================================================================*/
00030 #ifndef VTKFIELDDATASERIALIZER_H_
00031 #define VTKFIELDDATASERIALIZER_H_
00032 
00033 #include "vtkParallelCoreModule.h" // For export macro
00034 #include "vtkObject.h"
00035 
00036 // Forward declarations
00037 class vtkIdList;
00038 class vtkFieldData;
00039 class vtkDataArray;
00040 class vtkStringArray;
00041 class vtkIntArray;
00042 class vtkMultiProcessStream;
00043 
00044 class VTKPARALLELCORE_EXPORT vtkFieldDataSerializer : public vtkObject
00045 {
00046   public:
00047     static vtkFieldDataSerializer* New();
00048     vtkTypeMacro(vtkFieldDataSerializer,vtkObject);
00049     void PrintSelf(ostream& os, vtkIndent indent);
00050 
00052 
00054     static void SerializeMetaData(
00055         vtkFieldData *fieldData, vtkMultiProcessStream& bytestream);
00057 
00059 
00069     static void DeserializeMetaData(
00070         vtkMultiProcessStream& bytestream,
00071         vtkStringArray *names,
00072         vtkIntArray *datatypes,
00073         vtkIntArray *dimensions);
00075 
00077 
00079     static void Serialize(
00080         vtkFieldData *fieldData, vtkMultiProcessStream& bytestream);
00082 
00084 
00086     static void SerializeTuples(
00087         vtkIdList *tupleIds, vtkFieldData *fieldData,
00088         vtkMultiProcessStream& bytestream);
00090 
00092 
00096     static void SerializeSubExtent(
00097         int subext[6], int gridExtent[6], vtkFieldData *fieldData,
00098         vtkMultiProcessStream& bytestream);
00100 
00102 
00103     static void Deserialize(
00104         vtkMultiProcessStream& bytestream, vtkFieldData *fieldData );
00106 
00107   protected:
00108     vtkFieldDataSerializer();
00109     virtual ~vtkFieldDataSerializer();
00110 
00112 
00114     static vtkDataArray* ExtractSelectedTuples(
00115         vtkIdList *tupleIds, vtkDataArray *inputDataArray );
00117 
00119 
00121     static vtkDataArray* ExtractSubExtentData(
00122         int subext[6], int gridExtent[6], vtkDataArray *inputDataArray);
00124 
00126 
00127     static void SerializeDataArray(
00128         vtkDataArray *dataArray, vtkMultiProcessStream& bytestream );
00130 
00132 
00133     static void DeserializeDataArray(
00134         vtkMultiProcessStream& bytestream, vtkDataArray *&dataArray );
00136 
00137 
00138   private:
00139     vtkFieldDataSerializer(const vtkFieldDataSerializer&); // Not implemented
00140     void operator=(const vtkFieldDataSerializer&); // Not implemented
00141 };
00142 
00143 #endif /* VTKFIELDDATASERIALIZER_H_ */