VTK
|
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_ */