first commit
This commit is contained in:
393
extern/stdcxx/4.2.1/include/rw/_iosbase.h
vendored
Normal file
393
extern/stdcxx/4.2.1/include/rw/_iosbase.h
vendored
Normal file
@@ -0,0 +1,393 @@
|
||||
/***************************************************************************
|
||||
*
|
||||
* _iosbase.h - Declarations for the Standard Library basic stream I/O
|
||||
*
|
||||
* This is an internal header file used to implement the C++ Standard
|
||||
* Library. It should never be #included directly by a program.
|
||||
*
|
||||
* $Id: _iosbase.h 550991 2007-06-26 23:58:07Z sebor $
|
||||
*
|
||||
***************************************************************************
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* permissions and limitations under the License.
|
||||
*
|
||||
* Copyright 1994-2006 Rogue Wave Software.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef _RWSTD_RW_IOSBASE_H_INCLUDED
|
||||
#define _RWSTD_RW_IOSBASE_H_INCLUDED
|
||||
|
||||
|
||||
#include <loc/_locale.h>
|
||||
|
||||
#ifndef _RWSTD_RW_IOSFAILURE_H_INCLUDED
|
||||
# include <rw/_iosfailure.h>
|
||||
#endif // _RWSTD_RW_IOSFAILURE_H_INCLUDED
|
||||
|
||||
#ifndef _RWSTD_RW_IOSFWD_H_INCLUDED
|
||||
# include <rw/_iosfwd.h>
|
||||
#endif // _RWSTD_RW_IOSFWD_H_INCLUDED
|
||||
|
||||
#ifndef _RWSTD_RW_TRAITS_H_INCLUDED
|
||||
# include <rw/_traits.h>
|
||||
#endif // _RWSTD_RW_TRAITS_H_INCLUDED
|
||||
|
||||
|
||||
_RWSTD_NAMESPACE (std) {
|
||||
|
||||
|
||||
struct _RWSTD_EXPORT ios_base: _RW::__rw_synchronized
|
||||
{
|
||||
// 27.4.2.1.1
|
||||
typedef _RW::__rw_failure failure;
|
||||
|
||||
#ifndef _RWSTD_NO_EXT_FAILURE
|
||||
|
||||
// extensions
|
||||
typedef _RW::__rw_badbit_set badbit_set;
|
||||
typedef _RW::__rw_eofbit_set eofbit_set;
|
||||
typedef _RW::__rw_failbit_set failbit_set;
|
||||
|
||||
#endif // _RWSTD_NO_EXT_FAILURE
|
||||
|
||||
// 27.4.2.1.2
|
||||
typedef _RWSTD_BITMASK_ENUM (_RW::__rw_fmtflags) fmtflags;
|
||||
|
||||
// insert and extract bool type in alphabetic format
|
||||
_RWSTD_STATIC_CONST (fmtflags, boolalpha = _RW::__rw_boolalpha);
|
||||
|
||||
// converts integer input or generates integer output in decimal base
|
||||
_RWSTD_STATIC_CONST (fmtflags, dec = _RW::__rw_dec);
|
||||
|
||||
// generate floating-point output in fixed-point notation
|
||||
_RWSTD_STATIC_CONST (fmtflags, fixed = _RW::__rw_fixed);
|
||||
|
||||
// converts integer input or generates integer output in hexadecimal base
|
||||
_RWSTD_STATIC_CONST (fmtflags, hex = _RW::__rw_hex);
|
||||
|
||||
// adds fill characters at a designated internal point in certain generated
|
||||
// output, or identical to right if no such point is designated
|
||||
_RWSTD_STATIC_CONST (fmtflags, internal = _RW::__rw_internal);
|
||||
|
||||
// adds fill characters on the right of certain generated output
|
||||
_RWSTD_STATIC_CONST (fmtflags, left = _RW::__rw_left);
|
||||
|
||||
// converts integer input or generates integer output in octal base
|
||||
_RWSTD_STATIC_CONST (fmtflags, oct = _RW::__rw_oct);
|
||||
|
||||
// adds fill characters on the left of certain generated output
|
||||
_RWSTD_STATIC_CONST (fmtflags, right = _RW::__rw_right);
|
||||
|
||||
// generates floating-point output in scientific notation
|
||||
_RWSTD_STATIC_CONST (fmtflags, scientific = _RW::__rw_scientific);
|
||||
|
||||
// generates a prefix indicating the numeric base of generated integer
|
||||
// output (bin - none, oct - "0", dec - none, hex - "0x")
|
||||
_RWSTD_STATIC_CONST (fmtflags, showbase = _RW::__rw_showbase);
|
||||
|
||||
// generates a decimal-point character unconditionally in generated
|
||||
// floating-point output
|
||||
_RWSTD_STATIC_CONST (fmtflags, showpoint = _RW::__rw_showpoint);
|
||||
|
||||
// generates a + sign in non-negative generated numeric output
|
||||
_RWSTD_STATIC_CONST (fmtflags, showpos = _RW::__rw_showpos);
|
||||
|
||||
// skips leading white space before certain input operations
|
||||
_RWSTD_STATIC_CONST (fmtflags, skipws = _RW::__rw_skipws);
|
||||
|
||||
// flushes output after each output operation
|
||||
_RWSTD_STATIC_CONST (fmtflags, unitbuf = _RW::__rw_unitbuf);
|
||||
|
||||
// replaces certain lowercase letters with their uppercase equivalents
|
||||
// in generated output
|
||||
_RWSTD_STATIC_CONST (fmtflags, uppercase = _RW::__rw_uppercase);
|
||||
|
||||
#ifndef _RWSTD_NO_EXT_BIN_IO
|
||||
|
||||
// extension - converts integer input or generates integer output
|
||||
// in binary base
|
||||
_RWSTD_STATIC_CONST (fmtflags, bin = _RW::__rw_bin);
|
||||
|
||||
#endif // _RWSTD_NO_EXT_BIN_IO
|
||||
|
||||
_RWSTD_STATIC_CONST (fmtflags, basefield = _RW::__rw_basefield);
|
||||
_RWSTD_STATIC_CONST (fmtflags, adjustfield = _RW::__rw_adjustfield);
|
||||
_RWSTD_STATIC_CONST (fmtflags, floatfield = _RW::__rw_floatfield);
|
||||
|
||||
#ifndef _RWSTD_NO_EXT_REENTRANT_IO
|
||||
|
||||
// extension: never locks the object in MT environments
|
||||
_RWSTD_STATIC_CONST (fmtflags, nolock = _RW::__rw_nolock);
|
||||
|
||||
// extension: never locks stream buffer in MT environments
|
||||
_RWSTD_STATIC_CONST (fmtflags, nolockbuf = _RW::__rw_nolockbuf);
|
||||
|
||||
#endif // _RWSTD_NO_EXT_REENTRANT_IO
|
||||
|
||||
// 27.4.2.1.3
|
||||
typedef _RWSTD_BITMASK_ENUM (_RW::__rw_iostate) iostate;
|
||||
|
||||
_RWSTD_STATIC_CONST (iostate, goodbit = _RW::__rw_goodbit);
|
||||
|
||||
// indicates a loss of integrity in an input or output sequence
|
||||
// (such as an irrecoverable read error from a file);
|
||||
_RWSTD_STATIC_CONST (iostate, badbit = _RW::__rw_badbit);
|
||||
|
||||
// indicates that an input operation reached the end of an input sequence
|
||||
_RWSTD_STATIC_CONST (iostate, eofbit = _RW::__rw_eofbit);
|
||||
|
||||
// indicates that an input operation failed to read the expected
|
||||
// characters, or that an output operation failed to generate the
|
||||
// desired characters
|
||||
_RWSTD_STATIC_CONST (iostate, failbit = _RW::__rw_failbit);
|
||||
|
||||
// 27.4.2.1.4
|
||||
typedef _RWSTD_BITMASK_ENUM (_RW::__rw_openmode) openmode;
|
||||
|
||||
// seek to end before each write
|
||||
_RWSTD_STATIC_CONST (openmode, app = _RW::__rw_app);
|
||||
|
||||
// perform input and output in binary mode (as opposed to text mode)
|
||||
_RWSTD_STATIC_CONST (openmode, binary = _RW::__rw_binary);
|
||||
|
||||
// open for input
|
||||
_RWSTD_STATIC_CONST (openmode, in = _RW::__rw_in);
|
||||
|
||||
// open for output
|
||||
_RWSTD_STATIC_CONST (openmode, out = _RW::__rw_out);
|
||||
|
||||
// truncate an existing stream when opening
|
||||
_RWSTD_STATIC_CONST (openmode, trunc = _RW::__rw_trunc);
|
||||
|
||||
// open and seek to end immediately after opening
|
||||
_RWSTD_STATIC_CONST (openmode, ate = _RW::__rw_ate);
|
||||
|
||||
#ifndef _RWSTD_STRICT_ANSI
|
||||
|
||||
// extensions for compatibility with Classic Iostreams
|
||||
|
||||
// do not create a file if it doesn't exist
|
||||
_RWSTD_STATIC_CONST (openmode, nocreate = _RW::__rw_nocreate);
|
||||
|
||||
// do not replace an existing file
|
||||
_RWSTD_STATIC_CONST (openmode, noreplace = _RW::__rw_noreplace);
|
||||
|
||||
#endif // _RWSTD_STRICT_ANSI
|
||||
|
||||
#ifndef _RWSTD_NO_EXT_STDIO
|
||||
|
||||
// use the C stdio library for all file I/O
|
||||
_RWSTD_STATIC_CONST (openmode, stdio = _RW::__rw_stdio);
|
||||
|
||||
// use the native OS calls for all file I/O
|
||||
_RWSTD_STATIC_CONST (openmode, native = _RW::__rw_native);
|
||||
|
||||
#endif // _RWSTD_NO_EXT_STDIO
|
||||
|
||||
typedef _RWSTD_BITMASK_ENUM (_RW::__rw_seekdir) seekdir;
|
||||
|
||||
// 27.4.2.1.5, p1
|
||||
_RWSTD_STATIC_CONST (seekdir, beg = _RW::__rw_beg);
|
||||
_RWSTD_STATIC_CONST (seekdir, cur = _RW::__rw_cur);
|
||||
_RWSTD_STATIC_CONST (seekdir, end = _RW::__rw_end);
|
||||
|
||||
#ifndef _RWSTD_NO_DEPRECATED
|
||||
|
||||
// D.6, p1 (must be integer types and not enums)
|
||||
typedef int seek_dir;
|
||||
typedef int open_mode;
|
||||
typedef int io_state;
|
||||
typedef _RWSTD_STREAMOFF streamoff;
|
||||
typedef _RWSTD_STREAMOFF streampos;
|
||||
|
||||
#endif // _RWSTD_NO_DEPRECATED
|
||||
|
||||
// 27.4.2.1.6
|
||||
struct _RWSTD_EXPORT Init {
|
||||
Init ();
|
||||
|
||||
~Init ();
|
||||
};
|
||||
|
||||
// 27.4.2.2, p1
|
||||
fmtflags flags () const {
|
||||
return fmtflags (_C_fmtfl);
|
||||
}
|
||||
|
||||
// 27.4.2.2, p2
|
||||
fmtflags flags (fmtflags);
|
||||
|
||||
// 27.4.2.2, p4
|
||||
fmtflags setf (fmtflags __f) {
|
||||
return flags (flags () | __f);
|
||||
}
|
||||
|
||||
// 27.4.2.2, p6
|
||||
fmtflags setf (fmtflags __f, fmtflags __mask) {
|
||||
return flags (flags () & ~__mask | __f & __mask);
|
||||
}
|
||||
|
||||
// 27.4.2.2, p8
|
||||
void unsetf (fmtflags __f) {
|
||||
flags (flags () & ~__f);
|
||||
}
|
||||
|
||||
// 27.4.2.2, p9
|
||||
_RWSTD_STREAMSIZE precision () const {
|
||||
return _C_prec;
|
||||
}
|
||||
|
||||
// 27.4.2.2, p10
|
||||
_RWSTD_STREAMSIZE precision (_RWSTD_STREAMSIZE);
|
||||
|
||||
// 27.4.2.2, p12
|
||||
_RWSTD_STREAMSIZE width () const {
|
||||
return _C_wide;
|
||||
}
|
||||
|
||||
// 27.4.2.2, p13
|
||||
_RWSTD_STREAMSIZE width (_RWSTD_STREAMSIZE);
|
||||
|
||||
// 27.4.2.3, p1
|
||||
locale imbue (const locale&);
|
||||
|
||||
// extension: avoids reference counting in MT builds (may result in
|
||||
// a speedup of up to 50%); this is an alternative to caching a reference
|
||||
// (pointer) to a facet in each stream and stream buffer object
|
||||
locale& getloc () {
|
||||
return _C_loc;
|
||||
}
|
||||
|
||||
// 27.4.2.3, p4
|
||||
locale getloc () const {
|
||||
return _C_loc;
|
||||
}
|
||||
|
||||
// 27.4.2.5, p1
|
||||
static int xalloc ();
|
||||
|
||||
// 27.4.2.5, p2
|
||||
long& iword (int);
|
||||
|
||||
// 27.4.2.5, p4
|
||||
void*& pword (int);
|
||||
|
||||
enum event { erase_event, imbue_event, copyfmt_event };
|
||||
|
||||
typedef void (*event_callback)(event, ios_base&, int);
|
||||
|
||||
// 27.4.2.6, p1
|
||||
void register_callback (event_callback, int);
|
||||
|
||||
// 27.4.2.4, p1
|
||||
static bool sync_with_stdio (bool = true);
|
||||
|
||||
// 27.4.2.7, p2
|
||||
virtual ~ios_base ();
|
||||
|
||||
// returns a numeric base as per 22.2.2.1.2, p4
|
||||
int _C_base () const {
|
||||
return _RWSTD_STATIC_CAST (unsigned, flags ()) >> _RWSTD_IOS_BASEOFF;
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
// 27.4.2.7, p1
|
||||
ios_base ();
|
||||
|
||||
// implements basic_ios<T>::init()
|
||||
void _C_init (void*);
|
||||
|
||||
// will be reentrant only if `reentrant' is true
|
||||
void _C_fire_event (event, bool __reentrant);
|
||||
|
||||
// implements basic_ios<T>::copyfmt()
|
||||
void _C_copyfmt (const ios_base&, void*, const void*, _RWSTD_SIZE_T);
|
||||
|
||||
// sets state, exceptions, and rdbuf to the function arguments
|
||||
// in that order (except state & ~_RWSTD_IOS_NOTHROW)
|
||||
// may throw except when _RWSTD_IOS_NOTHROW is set in the first
|
||||
// argument; returns the previous value of rdbuf
|
||||
void* _C_set (unsigned, unsigned, void*);
|
||||
|
||||
// retrieves and sets the tied stream pointer
|
||||
void* _C_tie () const;
|
||||
void* _C_tie (void*);
|
||||
|
||||
// called from basic_ios<>::imbue (), not thread safe
|
||||
locale _C_unsafe_imbue (const locale&);
|
||||
|
||||
void *_C_rdbuf; // pointer to the associated stream buffer
|
||||
_RWSTD_STREAMSIZE _C_prec; // current precision
|
||||
_RWSTD_STREAMSIZE _C_wide; // current width
|
||||
unsigned _C_fmtfl; // formatting flags
|
||||
unsigned char _C_state; // stream state
|
||||
unsigned char _C_except; // active exceptions
|
||||
|
||||
static bool _C_sync_with_stdio;
|
||||
|
||||
private:
|
||||
|
||||
ios_base (const ios_base&); // not defined
|
||||
ios_base& operator= (const ios_base&); // not defined
|
||||
|
||||
#if __EDG_VERSION__ < 245
|
||||
|
||||
// working around an EDG eccp 2.3x bug (also derivatives,
|
||||
// such as MIPSpro, see PR #28631)
|
||||
public:
|
||||
struct _C_usr_data;
|
||||
|
||||
#else
|
||||
|
||||
protected:
|
||||
struct _C_usr_data;
|
||||
|
||||
#endif // EDG < 2.45
|
||||
|
||||
protected:
|
||||
_C_usr_data *_C_usr; // user data (iword, pword, callbacks)
|
||||
locale _C_loc; // locale associated with stream
|
||||
|
||||
friend struct _RWSTD_EXPORT Init;
|
||||
|
||||
// working around an EDG eccp 3.2 and prior bug (see PR #29526)
|
||||
friend struct _C_usr_data;
|
||||
};
|
||||
|
||||
|
||||
inline _RWSTD_STREAMSIZE ios_base::
|
||||
width (_RWSTD_STREAMSIZE __width)
|
||||
{
|
||||
_RWSTD_ASSERT (0 != this);
|
||||
|
||||
const _RWSTD_STREAMSIZE __tmp = _C_wide;
|
||||
|
||||
// not thread-safe for efficiency since width(0) is called
|
||||
// (directly or through a facet) by each formatted output
|
||||
// function and the return value is not used
|
||||
_C_wide = __width;
|
||||
|
||||
return __tmp;
|
||||
}
|
||||
|
||||
|
||||
} // namespace std
|
||||
|
||||
|
||||
#endif // _RWSTD_RW_IOSBASE_H_INCLUDED
|
||||
Reference in New Issue
Block a user