Go to the documentation of this file.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 #ifndef STLBindingsHPP
00033 #define STLBindingsHPP
00034
00035 #ifdef _MSC_VER
00036 #pragma warning(push, 1)
00037 #endif
00038
00039 #include <istream>
00040
00041 #ifdef _MSC_VER
00042 #pragma warning(pop)
00043 #endif
00044
00045 #include <zeusbase/System/String.h>
00046
00047 BEGIN_NAMESPACE_Zeus
00048
00049
00053
00054 class TSTLBindings
00055 {
00056 public:
00057
00062
00063 static Float64 readFloat64(std::istream& rStream)
00064 {
00065 Float64 dRetval = 0.0;
00066 Int iSize = sizeof(Float64);
00067 char* pBuffer = new char[iSize];
00068 ::memset(pBuffer, 0, sizeof(char)*iSize);
00069
00070 rStream.read(pBuffer, iSize);
00071 dRetval = *((Float64*)pBuffer);
00072
00073 delete [] pBuffer;
00074 return dRetval;
00075 }
00076
00077
00082
00083 static Int32 readInt32(std::istream& rStream)
00084 {
00085 Int32 lRetval = 0;
00086 Int iSize = sizeof(Int32);
00087 char* pBuffer = new char[iSize];
00088 ::memset(pBuffer, 0, sizeof(char)*iSize);
00089
00090 rStream.read(pBuffer, iSize);
00091 lRetval = *((Int32*)pBuffer);
00092
00093 delete [] pBuffer;
00094 return lRetval;
00095 }
00096
00097
00104
00105 static Retval readArray(std::istream& rStream, IByteArray& rData)
00106 {
00107 Int iSize = TSTLBindings::readInt32(rStream);
00108 if (iSize > 0)
00109 {
00110 char* pBuffer = new char[iSize];
00111 ::memset(pBuffer, 0, sizeof(char)*iSize);
00112
00113 rStream.read(pBuffer, iSize);
00114
00115 rData.setArray(pBuffer, iSize);
00116 delete [] pBuffer;
00117 }
00118 return RET_NOERROR;
00119 }
00120
00121
00128
00129 static Retval readString(std::istream& rStream, IString& rData)
00130 {
00131 TString strRetval;
00132 Int iStringSize = TSTLBindings::readInt32(rStream);
00133 if (iStringSize > 0)
00134 {
00135 char* pBuffer = new char[iStringSize];
00136 ::memset(pBuffer, 0, sizeof(char)*iStringSize);
00137
00138 rStream.read(pBuffer, iStringSize);
00139
00140 strRetval = pBuffer;
00141 delete [] pBuffer;
00142 }
00143 rData.assignStr(&strRetval);
00144 return RET_NOERROR;
00145 }
00146 };
00147
00148 END_NAMESPACE_Zeus
00149
00150 #endif