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 00106 static void DeSerializeToSubExtent( 00107 int subext[6], int gridExtent[6], vtkFieldData *fieldData, 00108 vtkMultiProcessStream& bytestream); 00110 00112 00113 static void Deserialize( 00114 vtkMultiProcessStream& bytestream, vtkFieldData *fieldData ); 00116 00117 protected: 00118 vtkFieldDataSerializer(); 00119 virtual ~vtkFieldDataSerializer(); 00120 00122 00124 static vtkDataArray* ExtractSelectedTuples( 00125 vtkIdList *tupleIds, vtkDataArray *inputDataArray ); 00127 00129 00131 static vtkDataArray* ExtractSubExtentData( 00132 int subext[6], int gridExtent[6], vtkDataArray *inputDataArray); 00134 00136 00137 static void SerializeDataArray( 00138 vtkDataArray *dataArray, vtkMultiProcessStream& bytestream ); 00140 00142 00143 static void DeserializeDataArray( 00144 vtkMultiProcessStream& bytestream, vtkDataArray *&dataArray ); 00146 00147 00148 private: 00149 vtkFieldDataSerializer(const vtkFieldDataSerializer&); // Not implemented 00150 void operator=(const vtkFieldDataSerializer&); // Not implemented 00151 }; 00152 00153 #endif /* VTKFIELDDATASERIALIZER_H_ */