00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkMultiProcessStream.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 =========================================================================*/ 00024 #ifndef __vtkMultiProcessStream_h 00025 #define __vtkMultiProcessStream_h 00026 00027 #include "vtkObject.h" 00028 #include <vtkstd/vector> // needed for vector. 00029 #include <vtkstd/string> // needed for string. 00030 00031 class VTK_PARALLEL_EXPORT vtkMultiProcessStream 00032 { 00033 public: 00034 vtkMultiProcessStream(); 00035 vtkMultiProcessStream(const vtkMultiProcessStream&); 00036 ~vtkMultiProcessStream(); 00037 vtkMultiProcessStream& operator=(const vtkMultiProcessStream&); 00038 00040 00041 vtkMultiProcessStream& operator << (double value); 00042 vtkMultiProcessStream& operator << (float value); 00043 vtkMultiProcessStream& operator << (int value); 00044 vtkMultiProcessStream& operator << (char value); 00045 vtkMultiProcessStream& operator << (unsigned int value); 00046 vtkMultiProcessStream& operator << (unsigned char value); 00047 vtkMultiProcessStream& operator << (vtkTypeInt64 value); 00048 vtkMultiProcessStream& operator << (vtkTypeUInt64 value); 00049 vtkMultiProcessStream& operator << (const vtkstd::string& value); 00051 00053 00054 vtkMultiProcessStream& operator >> (double &value); 00055 vtkMultiProcessStream& operator >> (float &value); 00056 vtkMultiProcessStream& operator >> (int &value); 00057 vtkMultiProcessStream& operator >> (char &value); 00058 vtkMultiProcessStream& operator >> (unsigned int &value); 00059 vtkMultiProcessStream& operator >> (unsigned char &value); 00060 vtkMultiProcessStream& operator >> (vtkTypeInt64 &value); 00061 vtkMultiProcessStream& operator >> (vtkTypeUInt64 &value); 00062 vtkMultiProcessStream& operator >> (vtkstd::string &value); 00064 00066 void Reset(); 00067 00069 00071 void GetRawData(vtkstd::vector<unsigned char>& data) const; 00072 void SetRawData(const vtkstd::vector<unsigned char>& data); 00074 00075 private: 00076 class vtkInternals; 00077 vtkInternals* Internals; 00078 unsigned char Endianness; 00079 enum 00080 { 00081 BigEndian, 00082 LittleEndian 00083 }; 00084 }; 00085 00086 #endif 00087 00088