------------- Listing 1: The file iomanip ------------------

// iomanip standard header<R>
#ifndef _IOMANIP_<R>
#define _IOMANIP_<R>
#include <<istream>><R>
#include <<ostream>><R>
                // template class smanip<R>
template<<class _T>> class smanip {<R>
public:<R>
        smanip(ios& (*_F)(ios&, _T), _T _A)<R>
                : _Pf(_F), _Manarg(_A) {}<R>
        ios& (*_Pf)(ios&, _T);<R>
        _T _Manarg;<R>
        };<R>
template<<class _T>> inline<R>
        istream& operator>>>>(istream& _I, const smanip<<_T>>& _M)<R>
        {       // apply manipulator to input stream<R>
        _TRY_BEGIN<R>
                (*_M._Pf)(_I, _M._Manarg);<R>
        _CATCH_ALL<R>
                _I.setstate(ios::failbit);<R>
        _CATCH_END<R>
        return (_I);<R>
        }<R>
template<<class _T>> inline<R>
        ostream& operator<<<<(ostream& _O, const smanip<<_T>>& _M)<R>
        {       // apply manipulator to output stream<R>
        _TRY_BEGIN<R>
                (*_M._Pf)(_O, _M._Manarg);<R>
        _CATCH_ALL<R>
                _O.setstate(ios::failbit);<R>
        _CATCH_END<R>
        return (_O);<R>
        }<R>
                // template class imanip<R>
template<<class _T>> class imanip {<R>
public:<R>
        imanip(istream& (*_F)(istream&, _T), _T _A)<R>
                : _Pf(_F), _Manarg(_A) {}<R>
        istream& (*_Pf)(istream&, _T);<R>
        _T _Manarg;<R>
        };<R>
template<<class _T>> inline<R>
        istream& operator>>>>(istream& _I, const imanip<<_T>>& _M)<R>
        {       // apply input manipulator to input stream<R>
        _TRY_BEGIN<R>
                (*_M._Pf)(_I, _M._Manarg);<R>
        _CATCH_ALL<R>
                _I.setstate(ios::failbit);<R>
        _CATCH_END<R>
        return (_I);<R>
        }<R>
                // template class omanip<R>
template<<class _T>> class omanip {<R>
public:<R>
        omanip(ostream& (*_F)(ostream&, _T), _T _A)<R>
                : _Pf(_F), _Manarg(_A) {}<R>
        ostream& (*_Pf)(ostream&, _T);<R>
        _T _Manarg;<R>
        };<R>
template<<class _T>> inline<R>
        ostream& operator<<<<(ostream& _O, const omanip<<_T>>& _M)<R>
        {       // apply manipulator to output stream<R>
        _TRY_BEGIN<R>
                (*_M._Pf)(_O, _M._Manarg);<R>
        _CATCH_ALL<R>
                _O.setstate(ios::failbit);<R>
        _CATCH_END<R>
        return (_O);<R>
        }<R>
                // instantiations<R>
smanip<<ios::fmtflags>> resetiosflags(ios::fmtflags);<R>
smanip<<ios::fmtflags>> setiosflags(ios::fmtflags);<R>
smanip<<int>> setbase(int);<R>
smanip<<int>> setfill(int);<R>
smanip<<int>> setprecision(int);<R>
smanip<<int>> setw(int);<R>
#endif

