00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 INLINE StreamReader::
00022 StreamReader(istream &in) :
00023 _in(&in),
00024 _owns_stream(false)
00025 {
00026 }
00027
00028
00029
00030
00031
00032
00033
00034 INLINE StreamReader::
00035 StreamReader(istream *in, bool owns_stream) :
00036 _in(in),
00037 _owns_stream(owns_stream)
00038 {
00039 }
00040
00041
00042
00043
00044
00045
00046
00047 INLINE StreamReader::
00048 StreamReader(const StreamReader ©) :
00049 _in(copy._in),
00050 _owns_stream(false)
00051 {
00052 }
00053
00054
00055
00056
00057
00058
00059
00060 INLINE void StreamReader::
00061 operator = (const StreamReader ©) {
00062 if (_owns_stream) {
00063 delete _in;
00064 }
00065 _in = copy._in;
00066 _owns_stream = false;
00067 }
00068
00069
00070
00071
00072
00073
00074 INLINE StreamReader::
00075 ~StreamReader() {
00076 if (_owns_stream) {
00077 delete _in;
00078 }
00079 }
00080
00081
00082
00083
00084
00085
00086 INLINE istream *StreamReader::
00087 get_istream() const {
00088 return _in;
00089 }
00090
00091
00092
00093
00094
00095
00096 INLINE bool StreamReader::
00097 get_bool() {
00098 return (get_uint8() != 0);
00099 }
00100
00101
00102
00103
00104
00105
00106 INLINE PN_int8 StreamReader::
00107 get_int8() {
00108 return (PN_int8)_in->get();
00109 }
00110
00111
00112
00113
00114
00115
00116 INLINE PN_uint8 StreamReader::
00117 get_uint8() {
00118 return (PN_uint8)_in->get();
00119 }
00120
00121
00122
00123
00124
00125
00126 INLINE PN_int16 StreamReader::
00127 get_int16() {
00128 PN_int16 readval, retval;
00129 _in->read((char *)&readval, sizeof(readval));
00130 LittleEndian s(&readval, 0, sizeof(readval));
00131 s.store_value(&retval, sizeof(retval));
00132 return retval;
00133 }
00134
00135
00136
00137
00138
00139
00140 INLINE PN_int32 StreamReader::
00141 get_int32() {
00142 PN_int32 readval, retval;
00143 _in->read((char *)&readval, sizeof(readval));
00144 LittleEndian s(&readval, 0, sizeof(readval));
00145 s.store_value(&retval, sizeof(retval));
00146 return retval;
00147 }
00148
00149
00150
00151
00152
00153
00154 INLINE PN_int64 StreamReader::
00155 get_int64() {
00156 PN_int64 readval, retval;
00157 _in->read((char *)&readval, sizeof(readval));
00158 LittleEndian s(&readval, 0, sizeof(readval));
00159 s.store_value(&retval, sizeof(retval));
00160 return retval;
00161 }
00162
00163
00164
00165
00166
00167
00168 INLINE PN_uint16 StreamReader::
00169 get_uint16() {
00170 PN_uint16 readval, retval;
00171 _in->read((char *)&readval, sizeof(readval));
00172 LittleEndian s(&readval, 0, sizeof(readval));
00173 s.store_value(&retval, sizeof(retval));
00174 return retval;
00175 }
00176
00177
00178
00179
00180
00181
00182 INLINE PN_uint32 StreamReader::
00183 get_uint32() {
00184 PN_uint32 readval, retval;
00185 _in->read((char *)&readval, sizeof(readval));
00186 LittleEndian s(&readval, 0, sizeof(readval));
00187 s.store_value(&retval, sizeof(retval));
00188 return retval;
00189 }
00190
00191
00192
00193
00194
00195
00196 INLINE PN_uint64 StreamReader::
00197 get_uint64() {
00198 PN_uint64 readval, retval;
00199 _in->read((char *)&readval, sizeof(readval));
00200 LittleEndian s(&readval, 0, sizeof(readval));
00201 s.store_value(&retval, sizeof(retval));
00202 return retval;
00203 }
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213 INLINE float StreamReader::
00214 get_float32() {
00215
00216
00217
00218 nassertr(sizeof(float) == 4, 0.0f);
00219
00220 float readval, retval;
00221 _in->read((char *)&readval, sizeof(readval));
00222 LittleEndian s(&readval, 0, sizeof(readval));
00223 s.store_value(&retval, sizeof(retval));
00224 return retval;
00225 }
00226
00227
00228
00229
00230
00231
00232 INLINE PN_float64 StreamReader::
00233 get_float64() {
00234 PN_float64 readval, retval;
00235 _in->read((char *)&readval, sizeof(readval));
00236 LittleEndian s(&readval, 0, sizeof(readval));
00237 s.store_value(&retval, sizeof(retval));
00238 return retval;
00239 }
00240
00241
00242
00243
00244
00245
00246 INLINE PN_int16 StreamReader::
00247 get_be_int16() {
00248 PN_int16 readval, retval;
00249 _in->read((char *)&readval, sizeof(readval));
00250 BigEndian s(&readval, 0, sizeof(readval));
00251 s.store_value(&retval, sizeof(retval));
00252 return retval;
00253 }
00254
00255
00256
00257
00258
00259
00260 INLINE PN_int32 StreamReader::
00261 get_be_int32() {
00262 PN_int32 readval, retval;
00263 _in->read((char *)&readval, sizeof(readval));
00264 BigEndian s(&readval, 0, sizeof(readval));
00265 s.store_value(&retval, sizeof(retval));
00266 return retval;
00267 }
00268
00269
00270
00271
00272
00273
00274 INLINE PN_int64 StreamReader::
00275 get_be_int64() {
00276 PN_int64 readval, retval;
00277 _in->read((char *)&readval, sizeof(readval));
00278 BigEndian s(&readval, 0, sizeof(readval));
00279 s.store_value(&retval, sizeof(retval));
00280 return retval;
00281 }
00282
00283
00284
00285
00286
00287
00288 INLINE PN_uint16 StreamReader::
00289 get_be_uint16() {
00290 PN_uint16 readval, retval;
00291 _in->read((char *)&readval, sizeof(readval));
00292 BigEndian s(&readval, 0, sizeof(readval));
00293 s.store_value(&retval, sizeof(retval));
00294 return retval;
00295 }
00296
00297
00298
00299
00300
00301
00302 INLINE PN_uint32 StreamReader::
00303 get_be_uint32() {
00304 PN_uint32 readval, retval;
00305 _in->read((char *)&readval, sizeof(readval));
00306 BigEndian s(&readval, 0, sizeof(readval));
00307 s.store_value(&retval, sizeof(retval));
00308 return retval;
00309 }
00310
00311
00312
00313
00314
00315
00316 INLINE PN_uint64 StreamReader::
00317 get_be_uint64() {
00318 PN_uint64 readval, retval;
00319 _in->read((char *)&readval, sizeof(readval));
00320 BigEndian s(&readval, 0, sizeof(readval));
00321 s.store_value(&retval, sizeof(retval));
00322 return retval;
00323 }
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333 INLINE float StreamReader::
00334 get_be_float32() {
00335
00336
00337
00338 nassertr(sizeof(float) == 4, 0.0f);
00339
00340 float readval, retval;
00341 _in->read((char *)&readval, sizeof(readval));
00342 BigEndian s(&readval, 0, sizeof(readval));
00343 s.store_value(&retval, sizeof(retval));
00344 return retval;
00345 }
00346
00347
00348
00349
00350
00351
00352 INLINE PN_float64 StreamReader::
00353 get_be_float64() {
00354 PN_float64 readval, retval;
00355 _in->read((char *)&readval, sizeof(readval));
00356 BigEndian s(&readval, 0, sizeof(readval));
00357 s.store_value(&retval, sizeof(retval));
00358 return retval;
00359 }