///////////////////////////////////////////////////////////////////////////
// FILE: iomanip/iomanip.h (manipulators with parameters)
//
// =========================================================================
//
//                          Open Watcom Project
//
//    Copyright (c) 2002-2010 Open Watcom Contributors. All Rights Reserved.
//    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
//
//    This file is automatically generated. Do not edit directly.
//
// =========================================================================
//
// Description: This header is part of the C++ standard library. It
//              defines the standard manipulators with parameters.
///////////////////////////////////////////////////////////////////////////
#ifndef _IOMANIP_INCLUDED
#define _IOMANIP_INCLUDED

#ifndef _ENABLE_AUTODEPEND
 #pragma read_only_file;
#endif

#ifndef __cplusplus
 #error This header file requires C++
#endif

#ifndef _COMDEF_H_INCLUDED
 #include <_comdef.h>
#endif

#ifndef _IOSTREAM_INCLUDED
 #include <iostream>
#endif

#pragma pack( __push, 8 )

template<class T>
    class _WPRTLINK smanip;
template<class T>
    class _WPRTLINK sapp {
    public:
        sapp( std::ios &(*__f)( std::ios &, T ) ) :
            __fn( __f ) {};
        smanip<T> operator()( T __p ) { return smanip<T>( __fn, __p ); };
    private:
        std::ios &(*__fn)( std::ios &, T );
    };
template<class T>
    class _WPRTLINK smanip {
    public:
        smanip( std::ios &(*__f)( std::ios &, T ), T __p ) :
            __fn( __f ), __parm( __p ) {};
        template< class T >
        friend _WPRTLINK std::istream &operator>>( std::istream &, const smanip<T> & );
        template< class T >
        friend _WPRTLINK std::ostream &operator<<( std::ostream &, const smanip<T> & );
    private:
        std::ios &(*__fn)( std::ios &, T );
        T __parm;
    };
template<class T>
    _WPRTLINK std::istream &operator>>( std::istream &__is, const smanip<T> &__sm ) {
        __sm.__fn( __is, __sm.__parm );
        return( __is );
    }
template<class T>
    _WPRTLINK std::ostream &operator<<( std::ostream &__os, const smanip<T> &__sm ) {
        __sm.__fn( __os, __sm.__parm );
        return( __os );
    }

template<class T>
    class _WPRTLINK imanip;
template<class T>
    class _WPRTLINK iapp {
    public:
        iapp( std::istream &(*__f)( std::istream &, T ) ) :
            __fn( __f ) {};
        imanip<T> operator()( T __p ) { return imanip<T>( __fn, __p ) };
    private:
        std::istream &(*__fn)( std::istream &, T );
    };
template<class T>
    class _WPRTLINK imanip {
    public:
        imanip( std::istream &(*__f)( std::istream &, T ), T __p ) :
            __fn( __f ), __parm( __p ) {};
        template< class T >
        friend _WPRTLINK std::istream &operator>>( std::istream &, const imanip<T> & );
    private:
        std::istream &(*__fn)( std::istream &, T );
        T __parm;
    };
template<class T>
    _WPRTLINK std::istream &operator>>( std::istream &__is, const imanip<T> &__im ) {
        __im.__fn( __is, __im.__parm );
        return( __is );
    }

template<class T>
    class _WPRTLINK omanip;
template<class T>
    class _WPRTLINK oapp {
    public:
        oapp( std::ostream &(*__f)( std::ostream &, T ) ) :
            __fn( __f ) {} ;
        omanip<T> operator()( T __p ) { return omanip<T>( __fn, __p ); };
    private:
        std::ostream &(*__fn)( std::ostream &, T );
    };
template<class T>
    class _WPRTLINK omanip {
    public:
        omanip( std::ostream &(*__f)( std::ostream &, T ), T __p ) :
            __fn( __f ), __parm( __p ) {};
        template< class T >
        friend _WPRTLINK std::ostream &operator<<( std::ostream &, const omanip<T> & );
    private:
        std::ostream &(*__fn)( std::ostream &, T );
        T __parm;
    };
template<class T>
    _WPRTLINK std::ostream &operator<<( std::ostream &__os, const omanip<T> &__om ) {
        __om.__fn( __os, __om.__parm );
        return( __os );
    }

template<class T>
    class _WPRTLINK iomanip;
template<class T>
    class _WPRTLINK ioapp {
    public:
        ioapp( std::iostream &(*__f)( std::iostream &, T ) ) :
            __fn( __f ) {};
        iomanip<T> operator()( T __p ) { return iomanip<T>( __fn, __p ) };
    private:
        std::iostream &(*__fn)( std::iostream &, T );
    };
template<class T>
    class _WPRTLINK iomanip {
    public:
        iomanip( std::iostream &(*__f)( std::iostream &, T ), T __p ) :
            __fn( __f ), __parm( __p ) {};
        template< class T >
        friend _WPRTLINK std::iostream &operator>>( std::iostream &, const iomanip<T> & );
    private:
        std::iostream &(*__fn)( std::iostream &, T );
        T __parm;
    };
template<class T>
    _WPRTLINK std::iostream &operator>>( std::iostream &__is, const iomanip<T> &__im ) {
        __im.__fn( __is, __im.__parm );
        return( __is );
    }

#pragma pack( __pop )

// applicator objects
namespace std {
  _WPRTLINK extern sapp<long> _WCDATA resetiosflags;
  _WPRTLINK extern sapp<int>  _WCDATA setbase;
  _WPRTLINK extern sapp<int>  _WCDATA setfill;
  _WPRTLINK extern sapp<long> _WCDATA setiosflags;
  _WPRTLINK extern sapp<int>  _WCDATA setprecision;
  _WPRTLINK extern sapp<int>  _WCDATA setw;
}

// define some compatibility macros for legacy code
#define SMANIP(__Typ)   smanip<__Typ>
#define SAPP(__Typ)     sapp<__Typ>
#define IMANIP(__Typ)   imanip<__Typ>
#define IAPP(__Typ)     iapp<__Typ>
#define OMANIP(__Typ)   omanip<__Typ>
#define OAPP(__Typ)     oapp<__Typ>
#define IOMANIP(__Typ)  iomanip<__Typ>
#define IOAPP(__Typ)    ioapp<__Typ>

#define SMANIP_define(__Typ)
#define IOMANIPdeclare(__Typ)

#endif
