00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "classwriterbase.hpp"
00011
00012 namespace ClassEncoder
00013 {
00014 using namespace std;
00015
00017
00020 ClassWriterBase::ClassWriterBase()
00021 {
00022 }
00023
00025
00028 ClassWriterBase::~ClassWriterBase()
00029 {
00030 }
00031
00033
00039 void ClassWriterBase::writeu1Array( ofstream &stream, const char* data, unsigned int length ) const
00040 {
00041 stream.write( data, length );
00042 }
00043
00045
00050 void ClassWriterBase::writeu1( ofstream &stream, const u1 &num ) const
00051 {
00052 stream.write( (const char *) &num, 1 );
00053 }
00054
00056
00061 void ClassWriterBase::writeu2( ofstream &stream, const u2 &num ) const
00062 {
00063 u2 bigNum = u2ToBigEndian( num );
00064 stream.write( (const char*)&bigNum, 2 );
00065 }
00066
00068
00073 void ClassWriterBase::writeu4( ofstream &stream, const u4 &num ) const
00074 {
00075 u4 bigNum = u4ToBigEndian( num );
00076 stream.write( (const char*)&bigNum, 4 );
00077 }
00078
00079
00081
00084 u2 ClassWriterBase::u2ToBigEndian( u2 num ) const
00085 {
00086 return ( num >> 8 ) + (( num & 0xFF ) <<8 );
00087 }
00088
00090
00093 u4 ClassWriterBase::u4ToBigEndian( u4 num ) const
00094 {
00095 return (( num & 0xFF ) << 24 ) +
00096 (( num >> 8 & 0xFF ) << 16 ) +
00097 (( num >> 16 & 0xFF ) << 8 ) +
00098 ( num >> 24 );
00099 }
00100
00101 }