Annotation of mstools/h/iomanip.h, revision 1.1.1.1

1.1       root        1: /***
                      2: *iomanip.h - definitions/declarations for iostream's parameterized manipulators
                      3: *
                      4: *      Copyright (c) 1991-1992, Microsoft Corporation.  All rights reserved.
                      5: *
                      6: *Purpose:
                      7: *      This file defines the classes, values, macros, and functions
                      8: *      used by the iostream classes' paramterized manipulators.
                      9: *      [AT&T C++]
                     10: *
                     11: ****/
                     12: 
                     13: #ifndef _INC_IOMANIP
                     14: #define _INC_IOMANIP
                     15: #include <iostream.h>
                     16: 
                     17: // Force word packing to avoid possible -Zp override
                     18: #pragma pack(4)
                     19: 
                     20: #pragma warning(disable:4505)          // disable unwanted /W4 warning
                     21: // #pragma warning(default:4505)       // use this to reenable, if necessary
                     22: 
                     23: // CONSIDER: use macro to define these
                     24: // #define __MKMANIP(X) \#define X##(T) __##X##_ \#\# T
                     25: // __MKMANIP(SMANIP);
                     26: // __MKMANIP(SAPP);
                     27: // __MKMANIP(IMANIP);
                     28: // __MKMANIP(IAPP);
                     29: // __MKMANIP(OMANIP);
                     30: // __MKMANIP(OAPP);
                     31: // __MKMANIP(IOMANIP);
                     32: // __MKMANIP(IOAPP);
                     33: 
                     34: #define SMANIP(T) __SMANIP_##T
                     35: #define SAPP(T) __SAPP_##T
                     36: #define IMANIP(T) __IMANIP_##T
                     37: #define IAPP(T) __IAPP_##T
                     38: #define OMANIP(T) __OMANIP_##T
                     39: #define OAPP(T) __OAPP_##T
                     40: #define IOMANIP(T) __IOMANIP_##T
                     41: #define IOAPP(T) __IOAPP_##T
                     42: 
                     43: #define IOMANIPdeclare(T)  \
                     44: class SMANIP(T) { \
                     45: public:        \
                     46:        SMANIP(T)(ios& (*f)(ios&,T), T t) { _fp = f; _tp = t; } \
                     47:        friend istream& operator>>(istream& s, SMANIP(T) & sm) { (*(sm._fp))(s,sm._tp); return s; } \
                     48:        friend ostream& operator<<(ostream& s, SMANIP(T) & sm) { (*(sm._fp))(s,sm._tp); return s; } \
                     49: private:       \
                     50:        ios& (* _fp)(ios&,T); \
                     51:        T _tp; \
                     52: };     \
                     53: class SAPP(T) {        \
                     54: public:        \
                     55:        SAPP(T)( ios& (*f)(ios&,T)) { _fp = f; }        \
                     56:        SMANIP(T) operator()(T t) { return SMANIP(T)(_fp,t); }  \
                     57: private:       \
                     58:        ios& (* _fp)(ios&,T); \
                     59: };     \
                     60: class IMANIP(T) { \
                     61: public:        \
                     62:        IMANIP(T)(istream& (*f)(istream&,T), T t) { _fp = f; _tp = t; } \
                     63:        friend istream& operator>>(istream& s, IMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \
                     64: private:       \
                     65:        istream& (* _fp)(istream&,T); \
                     66:        T _tp;  \
                     67: };     \
                     68: class IAPP(T) {        \
                     69: public:        \
                     70:        IAPP(T)( istream& (*f)(istream&,T)) { _fp = f; }        \
                     71:        IMANIP(T) operator()(T t) { return IMANIP(T)(_fp,t); }  \
                     72: private:       \
                     73:        istream& (* _fp)(istream&,T); \
                     74: };     \
                     75: class OMANIP(T) { \
                     76: public:        \
                     77:        OMANIP(T)(ostream& (*f)(ostream&,T), T t) { _fp = f; _tp = t; } \
                     78:        friend ostream& operator<<(ostream& s, OMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \
                     79: private:       \
                     80:        ostream& (* _fp)(ostream&,T); \
                     81:        T _tp; \
                     82: };     \
                     83: class OAPP(T) {        \
                     84: public:        \
                     85:        OAPP(T)(ostream& (*f)(ostream&,T)) { _fp = f; } \
                     86:        OMANIP(T) operator()(T t) { return OMANIP(T)(_fp,t); } \
                     87: private:       \
                     88:        ostream& (* _fp)(ostream&,T); \
                     89: };     \
                     90: \
                     91: class IOMANIP(T) { \
                     92: public:        \
                     93:        IOMANIP(T)(iostream& (*f)(iostream&,T), T t) { _fp = f; _tp = t; } \
                     94:        friend istream& operator>>(iostream& s, IOMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \
                     95:        friend ostream& operator<<(iostream& s, IOMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \
                     96: private:       \
                     97:        iostream& (* _fp)(iostream&,T); \
                     98:        T _tp; \
                     99: };     \
                    100: class IOAPP(T) {       \
                    101: public:        \
                    102:        IOAPP(T)( iostream& (*f)(iostream&,T)) { _fp = f; }     \
                    103:        IOMANIP(T) operator()(T t) { return IOMANIP(T)(_fp,t); }        \
                    104: private:       \
                    105:        iostream& (* _fp)(iostream&,T); \
                    106: }; \
                    107: 
                    108:        
                    109: IOMANIPdeclare(int)
                    110: 
                    111: IOMANIPdeclare(long)
                    112: 
                    113: inline ios& __resetiosflags(ios& s, long _flg) { s.setf(0,_flg); return s; }
                    114: inline ios& __setfill(ios& s, int _fc) { s.fill((char)_fc); return s; }
                    115: inline ios& __setiosflags(ios& s, long _flg) { s.setf(_flg); return s; }
                    116: inline ios& __setprecision(ios& s, int _pre) { s.precision(_pre); return s; }
                    117: inline ios& __setw(ios& s, int _wid) { s.width(_wid); return s; }
                    118: 
                    119: inline SMANIP(long)    resetiosflags(long _l) { return SMANIP(long)(__resetiosflags, _l); }
                    120: inline SMANIP(int)     setfill(int _m) {return SMANIP(int)(__setfill, _m); }
                    121: inline SMANIP(long)    setiosflags(long _l) {return SMANIP(long)(__setiosflags, _l); }
                    122: inline SMANIP(int)     setprecision(int _p) {return SMANIP(int)(__setprecision, _p); }
                    123: inline SMANIP(int)     setw(int _w) { return SMANIP(int)(__setw, _w); }
                    124: 
                    125: // Restore default packing
                    126: #pragma pack()
                    127: 
                    128: #endif         // !_INC_IOMANIP

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.