diff options
Diffstat (limited to 'public/sdk/inc/crt/ostream.h')
-rw-r--r-- | public/sdk/inc/crt/ostream.h | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/public/sdk/inc/crt/ostream.h b/public/sdk/inc/crt/ostream.h new file mode 100644 index 000000000..b32329013 --- /dev/null +++ b/public/sdk/inc/crt/ostream.h @@ -0,0 +1,161 @@ +/*** +*ostream.h - definitions/declarations for the ostream class +* +* Copyright (c) 1991-1995, Microsoft Corporation. All rights reserved. +* +*Purpose: +* This file defines the classes, values, macros, and functions +* used by the ostream class. +* [AT&T C++] +* +* [Public] +* +****/ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#ifdef __cplusplus + +#ifndef _INC_OSTREAM +#define _INC_OSTREAM + +#if !defined(_WIN32) && !defined(_MAC) +#error ERROR: Only Mac or Win32 targets supported! +#endif + + +#ifdef _MSC_VER +// Currently, all MS C compilers for Win32 platforms default to 8 byte +// alignment. +#pragma pack(push,8) +#endif // _MSC_VER + +/* Define _CRTIMP */ + +#ifndef _CRTIMP +#ifdef _NTSDK +/* definition compatible with NT SDK */ +#define _CRTIMP +#else /* ndef _NTSDK */ +/* current definition */ +#ifdef _DLL +#define _CRTIMP __declspec(dllimport) +#else /* ndef _DLL */ +#define _CRTIMP +#endif /* _DLL */ +#endif /* _NTSDK */ +#endif /* _CRTIMP */ + + +#include <ios.h> + +#ifdef _MSC_VER +// C4514: "unreferenced inline function has been removed" +#pragma warning(disable:4514) // disable C4514 warning +// #pragma warning(default:4514) // use this to reenable, if desired +#endif // _MSC_VER + +typedef long streamoff, streampos; + +class _CRTIMP ostream : virtual public ios { + +public: + ostream(streambuf*); + virtual ~ostream(); + + ostream& flush(); + int opfx(); + void osfx(); + +inline ostream& operator<<(ostream& (__cdecl * _f)(ostream&)); +inline ostream& operator<<(ios& (__cdecl * _f)(ios&)); + ostream& operator<<(const char *); +inline ostream& operator<<(const unsigned char *); +inline ostream& operator<<(const signed char *); +inline ostream& operator<<(char); + ostream& operator<<(unsigned char); +inline ostream& operator<<(signed char); + ostream& operator<<(short); + ostream& operator<<(unsigned short); + ostream& operator<<(int); + ostream& operator<<(unsigned int); + ostream& operator<<(long); + ostream& operator<<(unsigned long); +inline ostream& operator<<(float); + ostream& operator<<(double); + ostream& operator<<(long double); + ostream& operator<<(const void *); + ostream& operator<<(streambuf*); +inline ostream& put(char); + ostream& put(unsigned char); +inline ostream& put(signed char); + ostream& write(const char *,int); +inline ostream& write(const unsigned char *,int); +inline ostream& write(const signed char *,int); + ostream& seekp(streampos); + ostream& seekp(streamoff,ios::seek_dir); + streampos tellp(); + +protected: + ostream(); + ostream(const ostream&); // treat as private + ostream& operator=(streambuf*); // treat as private + ostream& operator=(const ostream& _os) {return operator=(_os.rdbuf()); } + int do_opfx(int); // not used + void do_osfx(); // not used + +private: + ostream(ios&); + ostream& writepad(const char *, const char *); + int x_floatused; +}; + +inline ostream& ostream::operator<<(ostream& (__cdecl * _f)(ostream&)) { (*_f)(*this); return *this; } +inline ostream& ostream::operator<<(ios& (__cdecl * _f)(ios& )) { (*_f)(*this); return *this; } + +inline ostream& ostream::operator<<(char _c) { return operator<<((unsigned char) _c); } +inline ostream& ostream::operator<<(signed char _c) { return operator<<((unsigned char) _c); } + +inline ostream& ostream::operator<<(const unsigned char * _s) { return operator<<((const char *) _s); } +inline ostream& ostream::operator<<(const signed char * _s) { return operator<<((const char *) _s); } + +inline ostream& ostream::operator<<(float _f) { x_floatused = 1; return operator<<((double) _f); } + +inline ostream& ostream::put(char _c) { return put((unsigned char) _c); } +inline ostream& ostream::put(signed char _c) { return put((unsigned char) _c); } + +inline ostream& ostream::write(const unsigned char * _s, int _n) { return write((char *) _s, _n); } +inline ostream& ostream::write(const signed char * _s, int _n) { return write((char *) _s, _n); } + + +class _CRTIMP ostream_withassign : public ostream { + public: + ostream_withassign(); + ostream_withassign(streambuf* _is); + ~ostream_withassign(); + ostream& operator=(const ostream& _os) { return ostream::operator=(_os.rdbuf()); } + ostream& operator=(streambuf* _sb) { return ostream::operator=(_sb); } +}; + +extern ostream_withassign _CRTIMP cout; +extern ostream_withassign _CRTIMP cerr; +extern ostream_withassign _CRTIMP clog; + +inline _CRTIMP ostream& __cdecl flush(ostream& _outs) { return _outs.flush(); } +inline _CRTIMP ostream& __cdecl endl(ostream& _outs) { return _outs << '\n' << flush; } +inline _CRTIMP ostream& __cdecl ends(ostream& _outs) { return _outs << char('\0'); } + +_CRTIMP ios& __cdecl dec(ios&); +_CRTIMP ios& __cdecl hex(ios&); +_CRTIMP ios& __cdecl oct(ios&); + +#ifdef _MSC_VER +// Restore default packing +#pragma pack(pop) +#endif // _MSC_VER + +#endif // _INC_OSTREAM + +#endif /* __cplusplus */ |