// iomanip standard header #pragma once #ifndef _IOMANIP_ #define _IOMANIP_ #include <istream> #pragma pack(push,8) #pragma warning(push,3) _STD_BEGIN // TEMPLATE STRUCT _Fillobj template<class _Elem> struct _Fillobj { // store fill character _Fillobj(_Elem _Ch) : _Fill(_Ch) { // construct from fill character } _Elem _Fill; // the fill character }; // TEMPLATE FUNCTION setfill template<class _Elem> inline _Fillobj<_Elem> __cdecl setfill(_Elem _Ch) { // return a _Fillobj manipulator return (_Fillobj<_Elem>(_Ch)); } template<class _Elem, class _Traits> inline basic_istream<_Elem, _Traits>& __cdecl operator>>(basic_istream<_Elem, _Traits>& _Istr, const _Fillobj<_Elem>& _Manip) { // set fill character in input stream _Istr.fill(_Manip._Fill); return (_Istr); } template<class _Elem, class _Traits> inline basic_ostream<_Elem, _Traits>& __cdecl operator<<(basic_ostream<_Elem, _Traits>& _Ostr, const _Fillobj<_Elem>& _Manip) { // set fill character in output stream _Ostr.fill(_Manip._Fill); return (_Ostr); } // TEMPLATE STRUCT _Smanip template<class _Arg> struct _Smanip { // store function pointer and argument value _Smanip(void (__cdecl *_Left)(ios_base&, _Arg), _Arg _Val) : _Pfun(_Left), _Manarg(_Val) { // construct from function pointer and argument value } void (__cdecl *_Pfun)(ios_base&, _Arg); // the function pointer _Arg _Manarg; // the argument value }; template<class _Elem, class _Traits, class _Arg> inline basic_istream<_Elem, _Traits>& __cdecl operator>>( basic_istream<_Elem, _Traits>& _Istr, const _Smanip<_Arg>& _Manip) { // extract by calling function with input stream and argument (*_Manip._Pfun)(_Istr, _Manip._Manarg); return (_Istr); } template<class _Elem, class _Traits, class _Arg> inline basic_ostream<_Elem, _Traits>& __cdecl operator<<( basic_ostream<_Elem, _Traits>& _Ostr, const _Smanip<_Arg>& _Manip) { // insert by calling function with output stream and argument (*_Manip._Pfun)(_Ostr, _Manip._Manarg); return (_Ostr); } // INSTANTIATIONS _CRTIMP2 _Smanip<ios_base::fmtflags> __cdecl resetiosflags(ios_base::fmtflags); _CRTIMP2 _Smanip<ios_base::fmtflags> __cdecl setiosflags(ios_base::fmtflags); _CRTIMP2 _Smanip<int> __cdecl setbase(int); _CRTIMP2 _Smanip<streamsize> __cdecl setprecision(streamsize); _CRTIMP2 _Smanip<streamsize> __cdecl setw(streamsize); _STD_END #pragma warning(pop) #pragma pack(pop) #endif /* _IOMANIP_ */ /* * Copyright (c) 1992-2001 by P.J. Plauger. ALL RIGHTS RESERVED. * Consult your license regarding permissions and restrictions. V3.10:0009 */