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 #ifndef _STLP_STDIO_FILE_H
00026 #define _STLP_STDIO_FILE_H
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068 #ifndef _STLP_CSTDIO
00069 # include <cstdio>
00070 #endif
00071 #ifndef _STLP_CSTDDEF
00072 # include <cstddef>
00073 #endif
00074
00075 #if defined(__MSL__)
00076 # include <unix.h>
00077 #endif
00078
00079 _STLP_BEGIN_NAMESPACE
00080
00081
00082
00083
00084 #if !defined(_STLP_USE_GLIBC) && \
00085 ( defined(__sgi) || \
00086 ( defined(__sun) && ! defined (_LP64) ) || \
00087 defined (__osf__) || defined(__DECCXX) || \
00088 defined (_STLP_MSVC) || defined (__ICL) || defined (__MINGW32__) || defined(__DJGPP) || defined (_AIX))
00089
00090 #if (defined ( _MSC_VER )&& !defined (__SYMBIAN32__)) || defined (__ICL) || defined (__MINGW32__) || defined(__DJGPP)
00091 typedef char* _File_ptr_type;
00092 #else
00093 typedef unsigned char* _File_ptr_type;
00094 #endif
00095
00096 inline int _FILE_fd(const FILE& __f) { return __f._file; }
00097 inline char* _FILE_I_begin(const FILE& __f) { return (char*) __f._base; }
00098 inline char* _FILE_I_next(const FILE& __f) { return (char*) __f._ptr; }
00099 inline char* _FILE_I_end(const FILE& __f)
00100 { return (char*) __f._ptr + __f._cnt; }
00101
00102 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f._cnt; }
00103
00104 inline char& _FILE_I_preincr(FILE& __f)
00105 { --__f._cnt; return *(char*) (++__f._ptr); }
00106 inline char& _FILE_I_postincr(FILE& __f)
00107 { --__f._cnt; return *(char*) (__f._ptr++); }
00108 inline char& _FILE_I_predecr(FILE& __f)
00109 { ++__f._cnt; return *(char*) (--__f._ptr); }
00110 inline char& _FILE_I_postdecr(FILE& __f)
00111 { ++__f._cnt; return *(char*) (__f._ptr--); }
00112 inline void _FILE_I_bump(FILE& __f, int __n)
00113 { __f._ptr += __n; __f._cnt -= __n; }
00114
00115 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char* __end) {
00116 __f._base = (_File_ptr_type) __begin;
00117 __f._ptr = (_File_ptr_type) __next;
00118 __f._cnt = __end - __next;
00119 }
00120
00121 # define _STLP_FILE_I_O_IDENTICAL 1
00122
00123 # elif defined(_STLP_SCO_OPENSERVER)
00124
00125 typedef unsigned char* _File_ptr_type;
00126
00127 inline int _FILE_fd(const FILE& __f) { return __f.__file; }
00128 inline char* _FILE_I_begin(const FILE& __f) { return (char*) __f.__base; }
00129 inline char* _FILE_I_next(const FILE& __f) { return (char*) __f.__ptr; }
00130 inline char* _FILE_I_end(const FILE& __f)
00131 { return (char*) __f.__ptr + __f.__cnt; }
00132
00133 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f.__cnt; }
00134
00135 inline char& _FILE_I_preincr(FILE& __f)
00136 { --__f.__cnt; return *(char*) (++__f.__ptr); }
00137 inline char& _FILE_I_postincr(FILE& __f)
00138 { --__f.__cnt; return *(char*) (__f.__ptr++); }
00139 inline char& _FILE_I_predecr(FILE& __f)
00140 { ++__f.__cnt; return *(char*) (--__f.__ptr); }
00141 inline char& _FILE_I_postdecr(FILE& __f)
00142 { ++__f.__cnt; return *(char*) (__f.__ptr--); }
00143 inline void _FILE_I_bump(FILE& __f, int __n)
00144 { __f.__ptr += __n; __f.__cnt -= __n; }
00145
00146 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char* __end) {
00147 __f.__base = (_File_ptr_type) __begin;
00148 __f.__ptr = (_File_ptr_type) __next;
00149 __f.__cnt = __end - __next;
00150 }
00151
00152 # define _STLP_FILE_I_O_IDENTICAL 1
00153
00154 # elif defined(__sun) && defined( _LP64)
00155
00156 typedef long _File_ptr_type;
00157
00158 inline int _FILE_fd(const FILE& __f) { return (int) __f.__pad[2]; }
00159 inline char* _FILE_I_begin(const FILE& __f) { return (char*)
00160 __f.__pad[1]; }
00161 inline char* _FILE_I_next(const FILE& __f) { return (char*)
00162 __f.__pad[0]; }
00163 inline char* _FILE_I_end(const FILE& __f)
00164 { return (char*) __f.__pad[0] + __f.__pad[3]; }
00165
00166 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f.__pad[3]; }
00167
00168 inline char& _FILE_I_preincr(FILE& __f)
00169 { --__f.__pad[3]; return *(char*) (++__f.__pad[0]); }
00170 inline char& _FILE_I_postincr(FILE& __f)
00171 { --__f.__pad[3]; return *(char*) (__f.__pad[0]++); }
00172 inline char& _FILE_I_predecr(FILE& __f)
00173 { ++__f.__pad[3]; return *(char*) (--__f.__pad[0]); }
00174 inline char& _FILE_I_postdecr(FILE& __f)
00175 { ++__f.__pad[3]; return *(char*) (__f.__pad[0]--); }
00176 inline void _FILE_I_bump(FILE& __f, long __n)
00177 { __f.__pad[0] += __n; __f.__pad[3] -= __n; }
00178
00179 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char*
00180 __end) {
00181 __f.__pad[1] = (_File_ptr_type) __begin;
00182 __f.__pad[0] = (_File_ptr_type) __next;
00183 __f.__pad[3] = __end - __next;
00184 }
00185
00186 # define _STLP_FILE_I_O_IDENTICAL
00187
00188 #elif defined (__CYGWIN__) || defined(__FreeBSD__) || defined(__NetBSD__) || ( defined(__GNUC__) && defined(__APPLE__) && !defined (__SYMBIAN32__)) || defined (__SYMBIAN32__)
00189
00190 inline int _FILE_fd(const FILE& __f) { return __f._file; }
00191 inline char* _FILE_I_begin(const FILE& __f) { return (char*)
00192 __f._bf._base; }
00193 inline char* _FILE_I_next(const FILE& __f) { return (char*) __f._p; }
00194 inline char* _FILE_I_end(const FILE& __f)
00195 { return (char*) __f._p + __f._r; }
00196
00197 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f._r; }
00198
00199 inline char& _FILE_I_preincr(FILE& __f)
00200 { --__f._r; --__f._bf._size; return *(char*) (++__f._p); }
00201 inline char& _FILE_I_postincr(FILE& __f)
00202 { --__f._r; --__f._bf._size; return *(char*) (__f._p++); }
00203 inline char& _FILE_I_predecr(FILE& __f)
00204 { ++__f._r; ++ __f._bf._size; return *(char*) (--__f._p); }
00205 inline char& _FILE_I_postdecr(FILE& __f)
00206 { ++__f._r; ++__f._bf._size; return *(char*) (__f._p--); }
00207 inline void _FILE_I_bump(FILE& __f, int __n)
00208 { __f._p += __n; __f._bf._size+=__n; __f._r -= __n; }
00209
00210 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char*
00211 __end) {
00212 __f._bf._base = (unsigned char*) __begin;
00213 __f._p = (unsigned char*) __next;
00214 __f._r = __f._bf._size = __end - __next;
00215 }
00216 inline char* _FILE_O_begin(const FILE& __f) { return (char*)
00217 __f._bf._base; }
00218 inline char* _FILE_O_next(const FILE& __f) { return (char*) __f._p; }
00219 inline char* _FILE_O_end(const FILE& __f)
00220 { return (char*) __f._p + __f._w; }
00221
00222 inline ptrdiff_t _FILE_O_avail(const FILE& __f) { return __f._w; }
00223
00224 inline char& _FILE_O_preincr(FILE& __f)
00225 { --__f._w; --__f._bf._size; return *(char*) (++__f._p); }
00226 inline char& _FILE_O_postincr(FILE& __f)
00227 { --__f._w; --__f._bf._size; return *(char*) (__f._p++); }
00228 inline char& _FILE_O_predecr(FILE& __f)
00229 { ++__f._w; ++__f._bf._size; return *(char*) (--__f._p); }
00230 inline char& _FILE_O_postdecr(FILE& __f)
00231 { ++__f._w; ++__f._bf._size; return *(char*) (__f._p--); }
00232 inline void _FILE_O_bump(FILE& __f, int __n)
00233 { __f._p += __n; __f._bf._size+=__n; __f._w -= __n; }
00234
00235 inline void _FILE_O_set(FILE& __f, char* __begin, char* __next, char*
00236 __end) {
00237 __f._bf._base = (unsigned char*) __begin;
00238 __f._p = (unsigned char*) __next;
00239 __f._w = __f._bf._size = __end - __next;
00240 }
00241
00242 # undef _STLP_FILE_I_O_IDENTICAL
00243
00244 #elif defined(_STLP_USE_GLIBC)
00245
00246 inline int _FILE_fd(const FILE& __f) { return __f._fileno; }
00247 inline char* _FILE_I_begin(const FILE& __f) { return __f._IO_read_base; }
00248 inline char* _FILE_I_next(const FILE& __f) { return __f._IO_read_ptr; }
00249 inline char* _FILE_I_end(const FILE& __f) { return __f._IO_read_end; }
00250
00251 inline ptrdiff_t _FILE_I_avail(const FILE& __f)
00252 { return __f._IO_read_end - __f._IO_read_ptr; }
00253
00254 inline char& _FILE_I_preincr(FILE& __f) { return *++__f._IO_read_ptr; }
00255 inline char& _FILE_I_postincr(FILE& __f) { return *__f._IO_read_ptr++; }
00256 inline char& _FILE_I_predecr(FILE& __f) { return *--__f._IO_read_ptr; }
00257 inline char& _FILE_I_postdecr(FILE& __f) { return *__f._IO_read_ptr--; }
00258 inline void _FILE_I_bump(FILE& __f, int __n) { __f._IO_read_ptr += __n; }
00259
00260 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char* __end) {
00261 __f._IO_read_base = __begin;
00262 __f._IO_read_ptr = __next;
00263 __f._IO_read_end = __end;
00264 }
00265
00266 inline char* _FILE_O_begin(const FILE& __f) { return __f._IO_write_base; }
00267 inline char* _FILE_O_next(const FILE& __f) { return __f._IO_write_ptr; }
00268 inline char* _FILE_O_end(const FILE& __f) { return __f._IO_write_end; }
00269
00270 inline ptrdiff_t _FILE_O_avail(const FILE& __f)
00271 { return __f._IO_write_end - __f._IO_write_ptr; }
00272
00273 inline char& _FILE_O_preincr(FILE& __f) { return *++__f._IO_write_ptr; }
00274 inline char& _FILE_O_postincr(FILE& __f) { return *__f._IO_write_ptr++; }
00275 inline char& _FILE_O_predecr(FILE& __f) { return *--__f._IO_write_ptr; }
00276 inline char& _FILE_O_postdecr(FILE& __f) { return *__f._IO_write_ptr--; }
00277 inline void _FILE_O_bump(FILE& __f, int __n) { __f._IO_write_ptr += __n; }
00278
00279 inline void _FILE_O_set(FILE& __f, char* __begin, char* __next, char* __end) {
00280 __f._IO_write_base = __begin;
00281 __f._IO_write_ptr = __next;
00282 __f._IO_write_end = __end;
00283
00284 }
00285
00286 #elif defined(__hpux)
00287
00288 #ifndef _INCLUDE_HPUX_SOURCE
00289 extern "C" unsigned char *__bufendtab[];
00290 # undef _bufend
00291 # define _bufend(__p) \
00292 (*(((__p)->__flag & _IOEXT) ? &(((_FILEX *)(__p))->__bufendp) \
00293 : &(__bufendtab[(__p) - __iob])))
00294
00295 # define _bufsiz(__p) (_bufend(__p) - (__p)->__base)
00296 #endif
00297
00298 #if defined(_STLP_HPACC_BROKEN_BUFEND)
00299 # undef _bufend
00300 # define _bufend(__p) \
00301 (*(((__p)->__flag & _IOEXT) ? &((__REINTERPRET_CAST(_FILEX*,(__p)))->__bufendp) \
00302 : &(__bufendtab[__REINTERPRET_CAST(FILE*,(__p)) - __iob])))
00303 #endif
00304
00305 inline int _FILE_fd(const FILE& __f) { return fileno(__CONST_CAST(FILE *,&__f)); }
00306 inline char* _FILE_I_begin(const FILE& __f) { return (__REINTERPRET_CAST(char*, __f.__base)); }
00307 inline char* _FILE_I_next(const FILE& __f) { return (__REINTERPRET_CAST(char*, __f.__ptr)); }
00308 inline char* _FILE_I_end(const FILE& __f) { return (__REINTERPRET_CAST(char*, __f.__ptr +__f.__cnt)); }
00309
00310 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f.__cnt; }
00311
00312 inline char& _FILE_I_preincr(FILE& __f) { --__f.__cnt; return *__REINTERPRET_CAST(char*, ++__f.__ptr); }
00313 inline char& _FILE_I_postincr(FILE& __f) { --__f.__cnt; return *__REINTERPRET_CAST(char*, __f.__ptr++); }
00314 inline char& _FILE_I_predecr(FILE& __f) { ++__f.__cnt; return *__REINTERPRET_CAST(char*,--__f.__ptr); }
00315 inline char& _FILE_I_postdecr(FILE& __f) { ++__f.__cnt; return *__REINTERPRET_CAST(char*,__f.__ptr--); }
00316 inline void _FILE_I_bump(FILE& __f, int __n) { __f.__cnt -= __n; __f.__ptr += __n; }
00317
00318 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char* __end) {
00319 # if defined(__hpux)
00320 if( (unsigned long) (&__f - &__iob[0]) > _NFILE)
00321 __f.__flag |= _IOEXT;
00322 # endif
00323 __f.__cnt = __end - __next;
00324 __f.__base = __REINTERPRET_CAST(unsigned char*, __begin);
00325 __f.__ptr = __REINTERPRET_CAST(unsigned char*, __next);
00326 _bufend(&__f) = __REINTERPRET_CAST(unsigned char*, __end);
00327 }
00328
00329
00330
00331 # define _STLP_FILE_I_O_IDENTICAL
00332
00333 #elif defined (__BORLANDC__)
00334
00335 typedef unsigned char* _File_ptr_type;
00336
00337 inline int _FILE_fd(const FILE& __f) { return __f.fd; }
00338 inline char* _FILE_I_begin(const FILE& __f) { return (char*) __f.buffer;
00339 }
00340 inline char* _FILE_I_next(const FILE& __f)
00341 { return (char*)__f.curp; }
00342 inline char* _FILE_I_end(const FILE& __f)
00343 { return (char*) __f.curp + __f.level; }
00344
00345 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f.level; }
00346
00347 inline char& _FILE_I_preincr(FILE& __f)
00348 { --__f.level; return *(char*) (++__f.curp); }
00349 inline char& _FILE_I_postincr(FILE& __f)
00350 { --__f.level; return *(char*) (__f.curp++); }
00351 inline char& _FILE_I_predecr(FILE& __f)
00352 { ++__f.level; return *(char*) (--__f.curp); }
00353 inline char& _FILE_I_postdecr(FILE& __f)
00354 { ++__f.level; return *(char*) (__f.curp--); }
00355 inline void _FILE_I_bump(FILE& __f, int __n)
00356 { __f.curp += __n; __f.level -= __n; }
00357
00358 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char*
00359 __end) {
00360 __f.buffer = (_File_ptr_type) __begin;
00361 __f.curp = (_File_ptr_type) __next;
00362 __f.level = __end - __next;
00363 }
00364
00365 # define _STLP_FILE_I_O_IDENTICAL
00366
00367 #elif defined( __MWERKS__ )
00368
00369
00370
00371
00372 # if __dest_os == __mac_os
00373 inline int _FILE_fd(const FILE& __f) { return ::fileno(__CONST_CAST(FILE*, &__f)); }
00374 # else
00375 inline int _FILE_fd(const FILE& __f) { return ::_fileno(__CONST_CAST(FILE*, &__f)); }
00376 # endif
00377
00378
00379 inline char* _FILE_I_begin(const FILE& __f) { return __REINTERPRET_CAST(char*, __f.buffer); }
00380
00381 inline char* _FILE_I_next(const FILE& __f) { return __REINTERPRET_CAST(char*, __f.buffer_ptr); }
00382
00383
00384 inline char* _FILE_I_end(const FILE& __f) { return __REINTERPRET_CAST(char*, __f.buffer_ptr + __f.buffer_len); }
00385
00386
00387
00388 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f.buffer_len; }
00389
00390
00391
00392 inline char& _FILE_I_preincr(FILE& __f)
00393 { --__f.buffer_len; return *(char*) (++__f.buffer_ptr); }
00394 inline char& _FILE_I_postincr(FILE& __f)
00395 { --__f.buffer_len; return *(char*) (__f.buffer_ptr++); }
00396 inline char& _FILE_I_predecr(FILE& __f)
00397 { ++__f.buffer_len; return *(char*) (--__f.buffer_ptr); }
00398 inline char& _FILE_I_postdecr(FILE& __f)
00399 { ++__f.buffer_len; return *(char*) (__f.buffer_ptr--); }
00400 inline void _FILE_I_bump(FILE& __f, int __n)
00401 { __f.buffer_ptr += __n; __f.buffer_len -= __n; }
00402
00403 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char* __end) {
00404 __f.buffer = __REINTERPRET_CAST(unsigned char*, __begin);
00405 __f.buffer_ptr = __REINTERPRET_CAST(unsigned char*, __next);
00406 __f.buffer_len = __end - __next;
00407 __f.buffer_size = __end - __begin;
00408 }
00409
00410 # define _STLP_FILE_I_O_IDENTICAL
00411
00412 #elif defined(__MRC__) || defined(__SC__) //*TY 02/24/2000 - added support for MPW
00413
00414 inline int _FILE_fd(const FILE& __f) { return __f._file; }
00415
00416
00417 inline char* _FILE_I_begin(const FILE& __f) { return (char*) __f._base; }
00418
00419
00420 inline char* _FILE_I_next(const FILE& __f) { return (char*) __f._ptr; }
00421
00422
00423 inline char* _FILE_I_end(const FILE& __f) { return (char*)__f._end; }
00424
00425
00426
00427 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f._cnt; }
00428
00429
00430
00431 inline char& _FILE_I_preincr(FILE& __f) { --__f._cnt; return*(char*) (++__f._ptr); }
00432
00433
00434
00435
00436 inline char& _FILE_I_postincr(FILE& __f) { --__f._cnt; return*(char*) (__f._ptr++); }
00437
00438
00439
00440 inline char& _FILE_I_predecr(FILE& __f) { ++__f._cnt; return*(char*) (--__f._ptr); }
00441
00442
00443
00444 inline char& _FILE_I_postdecr(FILE& __f) { ++__f._cnt; return*(char*) (__f._ptr--); }
00445
00446
00447 inline void _FILE_I_bump(FILE& __f, int __n) { __f._cnt -= __n; __f._ptr += __n; }
00448
00449
00450
00451
00452 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char* __end)
00453 {
00454 __f._base = (unsigned char*)__begin;
00455 __f._ptr = (unsigned char*)__next;
00456 __f._end = (unsigned char*)__end;
00457 __f._cnt = __end - __next;
00458 __f._size = __end - __begin;
00459 }
00460
00461 # define _STLP_FILE_I_O_IDENTICAL
00462
00463 #elif defined (__MVS__)
00464
00465 typedef unsigned char* _File_ptr_type;
00466
00467 inline int _FILE_fd(const FILE& __f) { return fileno(__CONST_CAST(FILE
00468 *,&__f)); }
00469 inline char* _FILE_I_begin(const FILE& __f) { return (char*)
00470 __f.__fp->__bufPtr; }
00471 inline char* _FILE_I_next(const FILE& __f) { return (char*)
00472 __f.__fp->__bufPtr; }
00473 inline char* _FILE_I_end(const FILE& __f)
00474 { return (char*) __f.__fp->__bufPtr + __f.__fp->__countIn; }
00475
00476 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return
00477 __f.__fp->__countIn; }
00478
00479 inline char& _FILE_I_preincr(FILE& __f)
00480 { --__f.__fp->__countIn; return *(char*) (++__f.__fp->__bufPtr); }
00481 inline char& _FILE_I_postincr(FILE& __f)
00482 { --__f.__fp->__countIn; return *(char*) (__f.__fp->__bufPtr++); }
00483 inline char& _FILE_I_predecr(FILE& __f)
00484 { ++__f.__fp->__countIn; return *(char*) (--__f.__fp->__bufPtr); }
00485 inline char& _FILE_I_postdecr(FILE& __f)
00486 { ++__f.__fp->__countIn; return *(char*) (__f.__fp->__bufPtr--); }
00487 inline void _FILE_I_bump(FILE& __f, int __n)
00488 { __f.__fp->__bufPtr += __n; __f.__fp->__countIn -= __n; }
00489
00490 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char*
00491 __end) {
00492
00493 if(__f.__fp) {
00494 __f.__fp->__bufPtr = (_File_ptr_type) __next;
00495 __f.__fp->__countIn = __end - __next;
00496 }
00497 }
00498
00499 inline char* _FILE_O_begin(const FILE& __f) { return (char*)__f.__fp->__bufPtr;}
00500 inline char* _FILE_O_next(const FILE& __f) { return (char*) __f.__fp->__bufPtr;}
00501 inline char* _FILE_O_end(const FILE& __f) { return (char*) __f.__fp->__bufPtr + __f.__fp->__countOut; }
00502 inline ptrdiff_t _FILE_O_avail(const FILE& __f) { return __f.__fp->__countOut; }
00503
00504 inline char& _FILE_O_preincr(FILE& __f)
00505 { --__f.__fp->__countOut; return *(char*) (++__f.__fp->__bufPtr); }
00506 inline char& _FILE_O_postincr(FILE& __f)
00507 { --__f.__fp->__countOut; return *(char*) (__f.__fp->__bufPtr++); }
00508 inline char& _FILE_O_predecr(FILE& __f)
00509 { ++__f.__fp->__countOut; return *(char*) (--__f.__fp->__bufPtr); }
00510 inline char& _FILE_O_postdecr(FILE& __f)
00511 { ++__f.__fp->__countOut; return *(char*) (__f.__fp->__bufPtr--); }
00512 inline void _FILE_O_bump(FILE& __f, int __n)
00513 { __f.__fp->__bufPtr += __n; __f.__fp->__countOut -= __n; }
00514
00515 inline void _FILE_O_set(FILE& __f, char* __begin, char* __next, char*
00516 __end) {
00517
00518 if(__f.__fp) {
00519 __f.__fp->__bufPtr = (_File_ptr_type) __next;
00520 __f.__fp->__countOut = __end - __next;
00521 }
00522 }
00523
00524 #elif defined(__QNXNTO__)
00525
00526 inline int _FILE_fd(const FILE& __f) { return __f._handle;
00527 }
00528 inline char* _FILE_I_begin(const FILE& __f) { return
00529 (char*) __f._base; }
00530 inline char* _FILE_I_next(const FILE& __f) { return
00531 (char*) __f._ptr; }
00532 inline char* _FILE_I_end(const FILE& __f)
00533 { return (char*) __f._ptr + __f._cnt; }
00534
00535 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return
00536 __f._cnt; }
00537
00538 inline char& _FILE_I_preincr(FILE& __f)
00539 { --__f._cnt; return *(char*) (++__f._ptr); }
00540 inline char& _FILE_I_postincr(FILE& __f)
00541 { --__f._cnt; return *(char*) (__f._ptr++); }
00542 inline char& _FILE_I_predecr(FILE& __f)
00543 { ++__f._cnt; return *(char*) (--__f._ptr); }
00544 inline char& _FILE_I_postdecr(FILE& __f)
00545 { ++__f._cnt; return *(char*) (__f._ptr--); }
00546 inline void _FILE_I_bump(FILE& __f, int __n)
00547 { __f._ptr += __n; __f._cnt -= __n; }
00548
00549 inline void _FILE_I_set(FILE& __f, char* __begin, char*
00550 __next, char*
00551 __end) {
00552 __f._base = (unsigned char*) __begin;
00553 __f._ptr = (unsigned char*) __next;
00554 __f._cnt = __end - __next;
00555 }
00556
00557 # define _STLP_FILE_I_O_IDENTICAL
00558
00559 #elif defined(__WATCOMC__) // Nikolaev
00560
00561 inline int _FILE_fd (const FILE& __f) { return __f._handle;}
00562 inline char* _FILE_I_begin (const FILE& __f) { return __REINTERPRET_CAST(char*, __f._link); }
00563 inline char* _FILE_I_next (const FILE& __f) { return __REINTERPRET_CAST(char*, __f._ptr); }
00564 inline char* _FILE_I_end (const FILE& __f) { return __REINTERPRET_CAST(char*, __f._ptr + __f._cnt); }
00565 inline ptrdiff_t _FILE_I_avail (const FILE& __f) { return __f._cnt; }
00566
00567 inline char& _FILE_I_preincr(FILE& __f)
00568 {
00569 --__f._cnt;
00570 return *__REINTERPRET_CAST(char*, ++__f._ptr);
00571 }
00572
00573 inline char& _FILE_I_postincr(FILE& __f)
00574 {
00575 --__f._cnt;
00576 return *__REINTERPRET_CAST(char*, __f._ptr++);
00577 }
00578
00579 inline char& _FILE_I_predecr(FILE& __f)
00580 {
00581 ++__f._cnt;
00582 return *__REINTERPRET_CAST(char*, --__f._ptr);
00583 }
00584
00585 inline char& _FILE_I_postdecr(FILE& __f)
00586 {
00587 ++__f._cnt;
00588 return *__REINTERPRET_CAST(char*, __f._ptr--);
00589 }
00590
00591 inline void _FILE_I_bump(FILE& __f, int __n)
00592 {
00593 __f._ptr += __n;
00594 __f._cnt -= __n;
00595 }
00596
00597 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char* __end)
00598 {
00599 __f._link = __REINTERPRET_CAST(__stream_link*, __begin);
00600 __f._ptr = __REINTERPRET_CAST(unsigned char*, __next);
00601 __f._cnt = __end - __next;
00602 }
00603
00604 # define _STLP_FILE_I_O_IDENTICAL
00605
00606 #elif defined (__Lynx__)
00607
00608
00609 inline int _FILE_fd(const FILE& __f) { return __f._fd; }
00610 inline char* _FILE_I_begin(const FILE& __f) { return (char*) __f._base; }
00611 inline char* _FILE_I_next(const FILE& __f) { return (char*) __f._ptr; }
00612 inline char* _FILE_I_end(const FILE& __f)
00613 { return (char*) __f._ptr + __f._cnt; }
00614
00615 inline ptrdiff_t _FILE_I_avail(const FILE& __f) { return __f._cnt; }
00616
00617 inline char& _FILE_I_preincr(FILE& __f)
00618 { --__f._cnt; return *(char*) (++__f._ptr); }
00619 inline char& _FILE_I_postincr(FILE& __f)
00620 { --__f._cnt; return *(char*) (__f._ptr++); }
00621 inline char& _FILE_I_predecr(FILE& __f)
00622 { ++__f._cnt; return *(char*) (--__f._ptr); }
00623 inline char& _FILE_I_postdecr(FILE& __f)
00624 { ++__f._cnt; return *(char*) (__f._ptr--); }
00625 inline void _FILE_I_bump(FILE& __f, int __n)
00626 { __f._ptr += __n; __f._cnt -= __n; }
00627
00628 inline void _FILE_I_set(FILE& __f, char* __begin, char* __next, char* __end) {
00629 __f._base = __begin;
00630 __f._ptr = __next;
00631 __f._cnt = __end - __next;
00632 }
00633 # define _STLP_FILE_I_O_IDENTICAL
00634
00635 #elif defined (__SYMBIAN32__)
00636
00637
00638
00639 #else
00640
00641 # error The C++ I/O library is not configured for this compiler
00642
00643 #endif
00644
00645
00646
00647 # ifdef _STLP_FILE_I_O_IDENTICAL
00648 inline char* _FILE_O_begin(const FILE& __f) { return _FILE_I_begin(__f); }
00649 inline char* _FILE_O_next(const FILE& __f) { return _FILE_I_next(__f); }
00650 inline char* _FILE_O_end(const FILE& __f) { return _FILE_I_end(__f); }
00651
00652 inline ptrdiff_t _FILE_O_avail(const FILE& __f) { return _FILE_I_avail(__f); }
00653
00654 inline char& _FILE_O_preincr(FILE& __f) { return _FILE_I_preincr(__f); }
00655 inline char& _FILE_O_postincr(FILE& __f) { return _FILE_I_postincr(__f); }
00656 inline char& _FILE_O_predecr(FILE& __f) { return _FILE_I_predecr(__f); }
00657 inline char& _FILE_O_postdecr(FILE& __f) { return _FILE_I_postdecr(__f); }
00658
00659 inline void _FILE_O_bump(FILE& __f, int __n) { _FILE_I_bump(__f, __n); }
00660 inline void _FILE_O_set(FILE& __f, char* __begin, char* __next, char* __end)
00661 { _FILE_I_set(__f, __begin, __next, __end); }
00662 # endif
00663
00664 _STLP_END_NAMESPACE
00665
00666 #endif
00667
00668
00669
00670