00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef _GOOBJECTHEADER_H
00034 #define _GOOBJECTHEADER_H
00035
00036
00037 #include <vector>
00038 #include "ClassType.h"
00039 #include "Streamable.h"
00040
00041 namespace Go
00042 {
00045
00046
00054 class ObjectHeader : public Streamable
00055 {
00056 public:
00058 ObjectHeader()
00059 : class_type_(Class_Unknown),
00060 major_version_(0),
00061 minor_version_(0)
00062 {}
00063
00070 ObjectHeader(ClassType t, int major, int minor)
00071 : class_type_(t),
00072 major_version_(major),
00073 minor_version_(minor)
00074 {}
00075
00084 ObjectHeader(ClassType t, int major, int minor,
00085 const std::vector<int>& auxdata)
00086 : class_type_(t),
00087 major_version_(major),
00088 minor_version_(minor),
00089 auxillary_data_(auxdata)
00090 {}
00091
00093 virtual ~ObjectHeader();
00094
00097 virtual void read (std::istream& is);
00098
00101 virtual void write (std::ostream& os) const;
00102
00104 ClassType classType() { return class_type_; }
00105
00107 int majorVersion() { return major_version_; }
00108
00110 int minorVersion() { return minor_version_; }
00111
00114 int auxdataSize() { return auxillary_data_.size(); }
00115
00118 int auxdata(int i) { return auxillary_data_[i]; }
00119
00120 private:
00121 ClassType class_type_;
00122 int major_version_;
00123 int minor_version_;
00124 std::vector<int> auxillary_data_;
00125 };
00126
00127
00129 }
00130
00131
00132 #endif // _GOOBJECTHEADER_H
00133
00134