From: <rom...@us...> - 2007-11-12 11:38:56
|
Revision: 1141 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1141&view=rev Author: roman_yakovenko Date: 2007-11-12 03:38:54 -0800 (Mon, 12 Nov 2007) Log Message: ----------- updating to new gccxml build Added Paths: ----------- gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/functional gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/limits gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/valarray gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/vector gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/xdebug gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/xstring Added: gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/functional =================================================================== --- gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/functional (rev 0) +++ gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/functional 2007-11-12 11:38:54 UTC (rev 1141) @@ -0,0 +1,687 @@ +// functional standard header +#pragma once +#ifndef _FUNCTIONAL_ +#define _FUNCTIONAL_ +#include <xstddef> + +#pragma pack(push,8) +#pragma warning(push,3) + + #pragma warning(disable: 4244) +_STD_BEGIN + + // TEMPLATE STRUCT unary_function +template<class _Arg, + class _Result> + struct unary_function + { // base class for unary functions + typedef _Arg argument_type; + typedef _Result result_type; + }; + + // TEMPLATE STRUCT binary_function +template<class _Arg1, + class _Arg2, + class _Result> + struct binary_function + { // base class for binary functions + typedef _Arg1 first_argument_type; + typedef _Arg2 second_argument_type; + typedef _Result result_type; + }; + + // TEMPLATE STRUCT plus +template<class _Ty> + struct plus + : public binary_function<_Ty, _Ty, _Ty> + { // functor for operator+ + _Ty operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator+ to operands + return (_Left + _Right); + } + }; + + // TEMPLATE STRUCT minus +template<class _Ty> + struct minus + : public binary_function<_Ty, _Ty, _Ty> + { // functor for operator- + _Ty operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator- to operands + return (_Left - _Right); + } + }; + + // TEMPLATE STRUCT multiplies +template<class _Ty> + struct multiplies + : public binary_function<_Ty, _Ty, _Ty> + { // functor for operator* + _Ty operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator* to operands + return (_Left * _Right); + } + }; + + // TEMPLATE STRUCT divides +template<class _Ty> + struct divides + : public binary_function<_Ty, _Ty, _Ty> + { // functor for operator/ + _Ty operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator/ to operands + return (_Left / _Right); + } + }; + + // TEMPLATE STRUCT modulus +template<class _Ty> + struct modulus + : public binary_function<_Ty, _Ty, _Ty> + { // functor for operator% + _Ty operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator% to operands + return (_Left % _Right); + } + }; + + // TEMPLATE STRUCT negate +template<class _Ty> + struct negate + : public unary_function<_Ty, _Ty> + { // functor for unary operator- + _Ty operator()(const _Ty& _Left) const + { // apply operator- to operand + return (-_Left); + } + }; + + // TEMPLATE STRUCT equal_to +template<class _Ty> + struct equal_to + : public binary_function<_Ty, _Ty, bool> + { // functor for operator== + bool operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator== to operands + return (_Left == _Right); + } + }; + + // TEMPLATE STRUCT not_equal_to +template<class _Ty> + struct not_equal_to + : public binary_function<_Ty, _Ty, bool> + { // functor for operator!= + bool operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator= to operands + return (_Left != _Right); + } + }; + + // TEMPLATE STRUCT greater +template<class _Ty> + struct greater + : public binary_function<_Ty, _Ty, bool> + { // functor for operator> + bool operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator> to operands + return (_Left > _Right); + } + }; + + // TEMPLATE STRUCT less +template<class _Ty> + struct less + : public binary_function<_Ty, _Ty, bool> + { // functor for operator< + bool operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator< to operands + return (_Left < _Right); + } + }; + + // TEMPLATE STRUCT greater_equal +template<class _Ty> + struct greater_equal + : public binary_function<_Ty, _Ty, bool> + { // functor for operator>= + bool operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator>= to operands + return (_Left >= _Right); + } + }; + + // TEMPLATE STRUCT less_equal +template<class _Ty> + struct less_equal + : public binary_function<_Ty, _Ty, bool> + { // functor for operator<= + bool operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator<= to operands + return (_Left <= _Right); + } + }; + + // TEMPLATE STRUCT logical_and +template<class _Ty> + struct logical_and + : public binary_function<_Ty, _Ty, bool> + { // functor for operator&& + bool operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator&& to operands + return (_Left && _Right); + } + }; + + // TEMPLATE STRUCT logical_or +template<class _Ty> + struct logical_or + : public binary_function<_Ty, _Ty, bool> + { // functor for operator|| + bool operator()(const _Ty& _Left, const _Ty& _Right) const + { // apply operator|| to operands + return (_Left || _Right); + } + }; + + // TEMPLATE STRUCT logical_not +template<class _Ty> + struct logical_not + : public unary_function<_Ty, bool> + { // functor for unary operator! + bool operator()(const _Ty& _Left) const + { // apply operator! to operand + return (!_Left); + } + }; + + // TEMPLATE CLASS unary_negate +template<class _Fn1> + class unary_negate + : public unary_function<typename _Fn1::argument_type, bool> + { // functor adapter !_Func(left) +public: + explicit unary_negate(const _Fn1& _Func) + : _Functor(_Func) + { // construct from functor + } + + bool operator()(const typename _Fn1::argument_type& _Left) const + { // apply functor to operand + return (!_Functor(_Left)); + } + +protected: + _Fn1 _Functor; // the functor to apply + }; + + // TEMPLATE FUNCTION not1 +template<class _Fn1> inline + unary_negate<_Fn1> not1(const _Fn1& _Func) + { // return a unary_negate functor adapter + return (std::unary_negate<_Fn1>(_Func)); + } + + // TEMPLATE CLASS binary_negate +template<class _Fn2> + class binary_negate + : public binary_function<typename _Fn2::first_argument_type, + typename _Fn2::second_argument_type, bool> + { // functor adapter !_Func(left, right) +public: + explicit binary_negate(const _Fn2& _Func) + : _Functor(_Func) + { // construct from functor + } + + bool operator()(const typename _Fn2::first_argument_type& _Left, + const typename _Fn2::second_argument_type& _Right) const + { // apply functor to operands + return (!_Functor(_Left, _Right)); + } + +protected: + _Fn2 _Functor; // the functor to apply + }; + + // TEMPLATE FUNCTION not2 +template<class _Fn2> inline + binary_negate<_Fn2> not2(const _Fn2& _Func) + { // return a binary_negate functor adapter + return (std::binary_negate<_Fn2>(_Func)); + } + + // TEMPLATE CLASS binder1st +template<class _Fn2> + class binder1st + : public unary_function<typename _Fn2::second_argument_type, + typename _Fn2::result_type> + { // functor adapter _Func(stored, right) +public: + typedef unary_function<typename _Fn2::second_argument_type, + typename _Fn2::result_type> _Base; + typedef typename _Base::argument_type argument_type; + typedef typename _Base::result_type result_type; + + binder1st(const _Fn2& _Func, + const typename _Fn2::first_argument_type& _Left) + : op(_Func), value(_Left) + { // construct from functor and left operand + } + + result_type operator()(const argument_type& _Right) const + { // apply functor to operands + return (op(value, _Right)); + } + + result_type operator()(argument_type& _Right) const + { // apply functor to operands + return (op(value, _Right)); + } + +protected: + _Fn2 op; // the functor to apply + typename _Fn2::first_argument_type value; // the left operand + }; + + // TEMPLATE FUNCTION bind1st +template<class _Fn2, + class _Ty> inline + binder1st<_Fn2> bind1st(const _Fn2& _Func, const _Ty& _Left) + { // return a binder1st functor adapter + typename _Fn2::first_argument_type _Val(_Left); + return (std::binder1st<_Fn2>(_Func, _Val)); + } + + // TEMPLATE CLASS binder2nd +template<class _Fn2> + class binder2nd + : public unary_function<typename _Fn2::first_argument_type, + typename _Fn2::result_type> + { // functor adapter _Func(left, stored) +public: + typedef unary_function<typename _Fn2::first_argument_type, + typename _Fn2::result_type> _Base; + typedef typename _Base::argument_type argument_type; + typedef typename _Base::result_type result_type; + + binder2nd(const _Fn2& _Func, + const typename _Fn2::second_argument_type& _Right) + : op(_Func), value(_Right) + { // construct from functor and right operand + } + + result_type operator()(const argument_type& _Left) const + { // apply functor to operands + return (op(_Left, value)); + } + + result_type operator()(argument_type& _Left) const + { // apply functor to operands + return (op(_Left, value)); + } + +protected: + _Fn2 op; // the functor to apply + typename _Fn2::second_argument_type value; // the right operand + }; + + // TEMPLATE FUNCTION bind2nd +template<class _Fn2, + class _Ty> inline + binder2nd<_Fn2> bind2nd(const _Fn2& _Func, const _Ty& _Right) + { // return a binder2nd functor adapter + typename _Fn2::second_argument_type _Val(_Right); + return (std::binder2nd<_Fn2>(_Func, _Val)); + } + + // TEMPLATE CLASS pointer_to_unary_function +template<class _Arg, + class _Result> + class pointer_to_unary_function + : public unary_function<_Arg, _Result> + { // functor adapter (*pfunc)(left) +public: + explicit pointer_to_unary_function(_Result (__cdecl *_Left)(_Arg)) + : _Pfun(_Left) + { // construct from pointer + } + + _Result operator()(_Arg _Left) const + { // call function with operand + return (_Pfun(_Left)); + } + +protected: + typedef _Result (__cdecl *_PfunType)(_Arg); + _PfunType _Pfun; // the function pointer + }; + + // TEMPLATE CLASS pointer_to_binary_function +template<class _Arg1, + class _Arg2, + class _Result> + class pointer_to_binary_function + : public binary_function<_Arg1, _Arg2, _Result> + { // functor adapter (*pfunc)(left, right) +public: + explicit pointer_to_binary_function( + _Result (__cdecl *_Left)(_Arg1, _Arg2)) + : _Pfun(_Left) + { // construct from pointer + } + + _Result operator()(_Arg1 _Left, _Arg2 _Right) const + { // call function with operands + return (_Pfun(_Left, _Right)); + } + +protected: + typedef _Result (__cdecl *_PfunType)(_Arg1, _Arg2); + _PfunType _Pfun; // the function pointer + }; + + // TEMPLATE FUNCTION ptr_fun +template<class _Arg, + class _Result> inline + pointer_to_unary_function<_Arg, _Result> + ptr_fun(_Result (__cdecl *_Left)(_Arg)) + { // return pointer_to_unary_function functor adapter + return (std::pointer_to_unary_function<_Arg, _Result>(_Left)); + } + +template<class _Arg1, + class _Arg2, + class _Result> inline + pointer_to_binary_function<_Arg1, _Arg2, _Result> + ptr_fun(_Result (__cdecl *_Left)(_Arg1, _Arg2)) + { // return pointer_to_binary_function functor adapter + return (std::pointer_to_binary_function<_Arg1, _Arg2, _Result>(_Left)); + } + + // TEMPLATE CLASS mem_fun_t +template<class _Result, + class _Ty> + class mem_fun_t + : public unary_function<_Ty *, _Result> + { // functor adapter (*p->*pfunc)(), non-const *pfunc +public: + explicit mem_fun_t(_Result (_Ty::*_Pm)()) + : _Pmemfun(_Pm) + { // construct from pointer + } + + _Result operator()(_Ty *_Pleft) const + { // call function + return ((_Pleft->*_Pmemfun)()); + } + +private: + _Result (_Ty::*_Pmemfun)(); // the member function pointer + }; + + // TEMPLATE CLASS mem_fun1_t +template<class _Result, + class _Ty, + class _Arg> + class mem_fun1_t + : public binary_function<_Ty *, _Arg, _Result> + { // functor adapter (*p->*pfunc)(val), non-const *pfunc +public: + explicit mem_fun1_t(_Result (_Ty::*_Pm)(_Arg)) + : _Pmemfun(_Pm) + { // construct from pointer + } + + _Result operator()(_Ty *_Pleft, _Arg _Right) const + { // call function with operand + return ((_Pleft->*_Pmemfun)(_Right)); + } + +private: + _Result (_Ty::*_Pmemfun)(_Arg); // the member function pointer + }; + + // TEMPLATE CLASS const_mem_fun_t +template<class _Result, + class _Ty> + class const_mem_fun_t + : public unary_function<const _Ty *, _Result> + { // functor adapter (*p->*pfunc)(), const *pfunc +public: + explicit const_mem_fun_t(_Result (_Ty::*_Pm)() const) + : _Pmemfun(_Pm) + { // construct from pointer + } + + _Result operator()(const _Ty *_Pleft) const + { // call function + return ((_Pleft->*_Pmemfun)()); + } + +private: + _Result (_Ty::*_Pmemfun)() const; // the member function pointer + }; + + // TEMPLATE CLASS const_mem_fun1_t +template<class _Result, + class _Ty, + class _Arg> + class const_mem_fun1_t + : public binary_function<const _Ty *, _Arg, _Result> + { // functor adapter (*p->*pfunc)(val), const *pfunc +public: + explicit const_mem_fun1_t(_Result (_Ty::*_Pm)(_Arg) const) + : _Pmemfun(_Pm) + { // construct from pointer + } + + _Result operator()(const _Ty *_Pleft, _Arg _Right) const + { // call function with operand + return ((_Pleft->*_Pmemfun)(_Right)); + } + +private: + _Result (_Ty::*_Pmemfun)(_Arg) const; // the member function pointer + }; + + // TEMPLATE FUNCTION mem_fun +template<class _Result, + class _Ty> inline + mem_fun_t<_Result, _Ty> mem_fun(_Result (_Ty::*_Pm)()) + { // return a mem_fun_t functor adapter + return (std::mem_fun_t<_Result, _Ty>(_Pm)); + } + +template<class _Result, + class _Ty, + class _Arg> inline + mem_fun1_t<_Result, _Ty, _Arg> mem_fun(_Result (_Ty::*_Pm)(_Arg)) + { // return a mem_fun1_t functor adapter + return (std::mem_fun1_t<_Result, _Ty, _Arg>(_Pm)); + } + +template<class _Result, + class _Ty> inline + const_mem_fun_t<_Result, _Ty> + mem_fun(_Result (_Ty::*_Pm)() const) + { // return a const_mem_fun_t functor adapter + return (std::const_mem_fun_t<_Result, _Ty>(_Pm)); + } + +template<class _Result, + class _Ty, + class _Arg> inline + const_mem_fun1_t<_Result, _Ty, _Arg> + mem_fun(_Result (_Ty::*_Pm)(_Arg) const) + { // return a const_mem_fun1_t functor adapter + return (std::const_mem_fun1_t<_Result, _Ty, _Arg>(_Pm)); + } + + // TEMPLATE FUNCTION mem_fun1 (retained) +template<class _Result, + class _Ty, + class _Arg> inline + mem_fun1_t<_Result, _Ty, _Arg> mem_fun1(_Result (_Ty::*_Pm)(_Arg)) + { // return a mem_fun1_t functor adapter + return (std::mem_fun1_t<_Result, _Ty, _Arg>(_Pm)); + } + + // TEMPLATE CLASS mem_fun_ref_t +template<class _Result, + class _Ty> + class mem_fun_ref_t + : public unary_function<_Ty, _Result> + { // functor adapter (*left.*pfunc)(), non-const *pfunc +public: + explicit mem_fun_ref_t(_Result (_Ty::*_Pm)()) + : _Pmemfun(_Pm) + { // construct from pointer + } + + _Result operator()(_Ty& _Left) const + { // call function + return ((_Left.*_Pmemfun)()); + } + +private: + _Result (_Ty::*_Pmemfun)(); // the member function pointer + }; + + // TEMPLATE CLASS mem_fun1_ref_t +template<class _Result, + class _Ty, + class _Arg> + class mem_fun1_ref_t + : public binary_function<_Ty, _Arg, _Result> + { // functor adapter (*left.*pfunc)(val), non-const *pfunc +public: + explicit mem_fun1_ref_t(_Result (_Ty::*_Pm)(_Arg)) + : _Pmemfun(_Pm) + { // construct from pointer + } + + _Result operator()(_Ty& _Left, _Arg _Right) const + { // call function with operand + return ((_Left.*_Pmemfun)(_Right)); + } + +private: + _Result (_Ty::*_Pmemfun)(_Arg); // the member function pointer + }; + + // TEMPLATE CLASS const_mem_fun_ref_t +template<class _Result, + class _Ty> + class const_mem_fun_ref_t + : public unary_function<_Ty, _Result> + { // functor adapter (*left.*pfunc)(), const *pfunc +public: + explicit const_mem_fun_ref_t(_Result (_Ty::*_Pm)() const) + : _Pmemfun(_Pm) + { // construct from pointer + } + + _Result operator()(const _Ty& _Left) const + { // call function + return ((_Left.*_Pmemfun)()); + } + +private: + _Result (_Ty::*_Pmemfun)() const; // the member function pointer + }; + + // TEMPLATE CLASS const_mem_fun1_ref_t +template<class _Result, + class _Ty, + class _Arg> + class const_mem_fun1_ref_t + : public binary_function<_Ty, _Arg, _Result> + { // functor adapter (*left.*pfunc)(val), const *pfunc +public: + explicit const_mem_fun1_ref_t(_Result (_Ty::*_Pm)(_Arg) const) + : _Pmemfun(_Pm) + { // construct from pointer + } + + _Result operator()(const _Ty& _Left, _Arg _Right) const + { // call function with operand + return ((_Left.*_Pmemfun)(_Right)); + } + +private: + _Result (_Ty::*_Pmemfun)(_Arg) const; // the member function pointer + }; + + // TEMPLATE FUNCTION mem_fun_ref +template<class _Result, + class _Ty> inline + mem_fun_ref_t<_Result, _Ty> mem_fun_ref(_Result (_Ty::*_Pm)()) + { // return a mem_fun_ref_t functor adapter + return (std::mem_fun_ref_t<_Result, _Ty>(_Pm)); + } + +template<class _Result, + class _Ty, + class _Arg> inline + mem_fun1_ref_t<_Result, _Ty, _Arg> + mem_fun_ref(_Result (_Ty::*_Pm)(_Arg)) + { // return a mem_fun1_ref_t functor adapter + return (std::mem_fun1_ref_t<_Result, _Ty, _Arg>(_Pm)); + } + +template<class _Result, + class _Ty> inline + const_mem_fun_ref_t<_Result, _Ty> + mem_fun_ref(_Result (_Ty::*_Pm)() const) + { // return a const_mem_fun_ref_t functor adapter + return (std::const_mem_fun_ref_t<_Result, _Ty>(_Pm)); + } + +template<class _Result, + class _Ty, + class _Arg> inline + const_mem_fun1_ref_t<_Result, _Ty, _Arg> + mem_fun_ref(_Result (_Ty::*_Pm)(_Arg) const) + { // return a const_mem_fun1_ref_t functor adapter + return (std::const_mem_fun1_ref_t<_Result, _Ty, _Arg>(_Pm)); + } + + // TEMPLATE FUNCTION mem_fun1_ref (retained) +template<class _Result, + class _Ty, + class _Arg> inline + mem_fun1_ref_t<_Result, _Ty, _Arg> mem_fun1_ref(_Result (_Ty::*_Pm)(_Arg)) + { // return a mem_fun1_ref_t functor adapter + return (std::mem_fun1_ref_t<_Result, _Ty, _Arg>(_Pm)); + } +_STD_END + + #pragma warning(default: 4244) + +#pragma warning(pop) +#pragma pack(pop) + +#endif /* _FUNCTIONAL_ */ + +/* + * Copyright (c) 1992-2002 by P.J. Plauger. ALL RIGHTS RESERVED. + * Consult your license regarding permissions and restrictions. + */ + +/* + * This file is derived from software bearing the following + * restrictions: + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this + * software and its documentation for any purpose is hereby + * granted without fee, provided that the above copyright notice + * appear in all copies and that both that copyright notice and + * this permission notice appear in supporting documentation. + * Hewlett-Packard Company makes no representations about the + * suitability of this software for any purpose. It is provided + * "as is" without express or implied warranty. + V3.13:0009 */ Added: gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/limits =================================================================== --- gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/limits (rev 0) +++ gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/limits 2007-11-12 11:38:54 UTC (rev 1141) @@ -0,0 +1,1016 @@ +// limits standard header +#pragma once +#ifndef _LIMITS_ +#define _LIMITS_ +#include <ymath.h> +#include <cfloat> +#include <climits> +#include <cmath> +#include <cwchar> +#include <xstddef> + +#pragma pack(push,8) +#pragma warning(push,3) +_STD_BEGIN + +// ASSUMES: +// wraparound 2's complement integer arithmetic w/o traps +// all CHAR_BITs of each byte used by integers +// IEC559 (IEEE 754) floating-point arithmetic +// floating-point errors can trap +// tinyness detected before floating-point rounding +// 64-bit long long (if _LONGLONG defined) + + // ENUM float_denorm_style +typedef enum + { // constants for different IEEE float denormalization styles + denorm_indeterminate = -1, + denorm_absent = 0, + denorm_present = 1} + float_denorm_style; + + // ENUM float_round_style +typedef enum + { // constants for different IEEE rounding styles + round_indeterminate = -1, + round_toward_zero = 0, + round_to_nearest = 1, + round_toward_infinity = 2, + round_toward_neg_infinity = 3} + float_round_style; + + // STRUCT _Num_base +struct _CRTIMP2 _Num_base + { // base for all types, with common defaults + _STCONS(float_denorm_style, has_denorm, denorm_absent); + _STCONS(bool, has_denorm_loss, false); + _STCONS(bool, has_infinity, false); + _STCONS(bool, has_quiet_NaN, false); + _STCONS(bool, has_signaling_NaN, false); + _STCONS(bool, is_bounded, false); + _STCONS(bool, is_exact, false); + _STCONS(bool, is_iec559, false); + _STCONS(bool, is_integer, false); + _STCONS(bool, is_modulo, false); + _STCONS(bool, is_signed, false); + _STCONS(bool, is_specialized, false); + _STCONS(bool, tinyness_before, false); + _STCONS(bool, traps, false); + _STCONS(float_round_style, round_style, round_toward_zero); + _STCONS(int, digits, 0); + _STCONS(int, digits10, 0); + _STCONS(int, max_exponent, 0); + _STCONS(int, max_exponent10, 0); + _STCONS(int, min_exponent, 0); + _STCONS(int, min_exponent10, 0); + _STCONS(int, radix, 0); + }; + +#define __GCCXML_AVOID_MACRO_EXPANSION + // TEMPLATE CLASS numeric_limits +template<class _Ty> + class numeric_limits + : public _Num_base + { // numeric limits for arbitrary type _Ty (say little or nothing) +public: + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (_Ty(0)); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (_Ty(0)); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (_Ty(0)); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (_Ty(0)); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (_Ty(0)); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (_Ty(0)); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (_Ty(0)); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (_Ty(0)); + } + }; + + // STRUCT _Num_int_base +struct _CRTIMP2 _Num_int_base + : public _Num_base + { // base for integer types + _STCONS(bool, is_bounded, true); + _STCONS(bool, is_exact, true); + _STCONS(bool, is_integer, true); + _STCONS(bool, is_modulo, true); + _STCONS(bool, is_specialized, true); + _STCONS(int, radix, 2); + }; + + // STRUCT _Num_float_base +struct _CRTIMP2 _Num_float_base + : public _Num_base + { // base for floating-point types + _STCONS(float_denorm_style, has_denorm, denorm_present); + _STCONS(bool, has_denorm_loss, true); + _STCONS(bool, has_infinity, true); + _STCONS(bool, has_quiet_NaN, true); + _STCONS(bool, has_signaling_NaN, true); + _STCONS(bool, is_bounded, true); + _STCONS(bool, is_exact, false); + _STCONS(bool, is_iec559, true); + _STCONS(bool, is_integer, false); + _STCONS(bool, is_modulo, false); + _STCONS(bool, is_signed, true); + _STCONS(bool, is_specialized, true); + _STCONS(bool, tinyness_before, true); + _STCONS(bool, traps, true); + _STCONS(float_round_style, round_style, round_to_nearest); + _STCONS(int, radix, FLT_RADIX); + }; + + // CLASS numeric_limits<char> +template<> class _CRTIMP2 numeric_limits<char> + : public _Num_int_base + { // limits for type char +public: + typedef char _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (CHAR_MIN); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (CHAR_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, CHAR_MIN != 0); + _STCONS(int, digits, CHAR_BIT - (CHAR_MIN != 0 ? 1 : 0)); + _STCONS(int, digits10, (CHAR_BIT - (CHAR_MIN != 0 ? 1 : 0)) + * 301L / 1000); + }; + + #ifdef _NATIVE_WCHAR_T_DEFINED + // CLASS numeric_limits<wchar_t> +template<> class _CRTIMP2 numeric_limits<wchar_t> + : public _Num_int_base + { // limits for type wchar_t +public: + typedef wchar_t _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return ((_Ty)WCHAR_MIN); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return ((_Ty)WCHAR_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, WCHAR_MIN != 0); + _STCONS(int, digits, CHAR_BIT * sizeof (wchar_t) + - (WCHAR_MIN != 0 ? 1 : 0)); + _STCONS(int, digits10, (CHAR_BIT * sizeof (wchar_t) + - (WCHAR_MIN != 0 ? 1 : 0)) * 301L / 1000); + }; + #endif /* _NATIVE_WCHAR_T_DEFINED */ + + // CLASS numeric_limits<_Bool> +template<> class _CRTIMP2 numeric_limits<_Bool> + : public _Num_int_base + { // limits for type bool +public: + typedef bool _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (false); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (true); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_modulo, false); + _STCONS(bool, is_signed, false); + _STCONS(int, digits, 1); + _STCONS(int, digits10, 0); + }; + + // CLASS numeric_limits<signed char> +template<> class _CRTIMP2 numeric_limits<signed char> + : public _Num_int_base + { // limits for type signed char +public: + typedef signed char _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (SCHAR_MIN); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (SCHAR_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, true); + _STCONS(int, digits, CHAR_BIT - 1); + _STCONS(int, digits10, (CHAR_BIT - 1) * 301L / 1000); + }; + + // CLASS numeric_limits<unsigned char> +template<> class _CRTIMP2 numeric_limits<unsigned char> + : public _Num_int_base + { // limits for type unsigned char +public: + typedef unsigned char _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (0); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (UCHAR_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, false); + _STCONS(int, digits, CHAR_BIT); + _STCONS(int, digits10, (CHAR_BIT) * 301L / 1000); + }; + + // CLASS numeric_limits<short> +template<> class _CRTIMP2 numeric_limits<short> + : public _Num_int_base + { // limits for type short +public: + typedef short _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (SHRT_MIN); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (SHRT_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, true); + _STCONS(int, digits, CHAR_BIT * sizeof (short) - 1); + _STCONS(int, digits10, (CHAR_BIT * sizeof (short) - 1) + * 301L / 1000); + }; + + // CLASS numeric_limits<unsigned short> +template<> class _CRTIMP2 numeric_limits<unsigned short> + : public _Num_int_base + { // limits for type unsigned short +public: + typedef unsigned short _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (0); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (USHRT_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, false); + _STCONS(int, digits, CHAR_BIT * sizeof (unsigned short)); + _STCONS(int, digits10, (CHAR_BIT * sizeof (unsigned short)) + * 301L / 1000); + }; + + // CLASS numeric_limits<int> +template<> class _CRTIMP2 numeric_limits<int> + : public _Num_int_base + { // limits for type int +public: + typedef int _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (INT_MIN); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (INT_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, true); + _STCONS(int, digits, CHAR_BIT * sizeof (int) - 1); + _STCONS(int, digits10, (CHAR_BIT * sizeof (int) - 1) + * 301L / 1000); + }; + + // CLASS numeric_limits<unsigned int> +template<> class _CRTIMP2 numeric_limits<unsigned int> + : public _Num_int_base + { // limits for type unsigned int +public: + typedef unsigned int _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (0); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (UINT_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, false); + _STCONS(int, digits, CHAR_BIT * sizeof (unsigned int)); + _STCONS(int, digits10, (CHAR_BIT * sizeof (unsigned int)) + * 301L / 1000); + }; + + // CLASS numeric_limits<long> +template<> class _CRTIMP2 numeric_limits<long> + : public _Num_int_base + { // limits for type long +public: + typedef long _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (LONG_MIN); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (LONG_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, true); + _STCONS(int, digits, CHAR_BIT * sizeof (long) - 1); + _STCONS(int, digits10, (CHAR_BIT * sizeof (long) - 1) + * 301L / 1000); + }; + + // CLASS numeric_limits<unsigned long> +template<> class _CRTIMP2 numeric_limits<unsigned long> + : public _Num_int_base + { // limits for type unsigned long +public: + typedef unsigned long _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (0); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (ULONG_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, false); + _STCONS(int, digits, CHAR_BIT * sizeof (unsigned long)); + _STCONS(int, digits10, (CHAR_BIT * sizeof (unsigned long)) + * 301L / 1000); + }; + + #ifdef _LONGLONG + // CLASS numeric_limits<_LONGLONG> +template<> class _CRTIMP2 numeric_limits<_LONGLONG> + : public _Num_int_base + { // limits for type long long +public: + typedef _LONGLONG _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (-_LLONG_MAX - _C2); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (_LLONG_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, true); + _STCONS(int, digits, CHAR_BIT * sizeof (_LONGLONG) - 1); + _STCONS(int, digits10, (CHAR_BIT * sizeof (_LONGLONG) - 1) + * 301L / 1000); + }; + + // CLASS numeric_limits<_ULONGLONG> +template<> class _CRTIMP2 numeric_limits<_ULONGLONG> + : public _Num_int_base + { // limits for type unsigned long long +public: + typedef _ULONGLONG _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (0); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (_ULLONG_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (0); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (0); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (0); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (0); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (0); + } + + _STCONS(bool, is_signed, false); + _STCONS(int, digits, CHAR_BIT * sizeof (_ULONGLONG)); + _STCONS(int, digits10, (CHAR_BIT * sizeof (_ULONGLONG)) + * 301L / 1000); + }; + #endif /* _LONGLONG */ + + // CLASS numeric_limits<float> +template<> class _CRTIMP2 numeric_limits<float> + : public _Num_float_base + { // limits for type float +public: + typedef float _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (FLT_MIN); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (FLT_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (FLT_EPSILON); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0.5); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (_FDenorm._Float); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (_FInf._Float); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (_FNan._Float); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (_FSnan._Float); + } + + _STCONS(int, digits, FLT_MANT_DIG); + _STCONS(int, digits10, FLT_DIG); + _STCONS(int, max_exponent, (int)FLT_MAX_EXP); + _STCONS(int, max_exponent10, (int)FLT_MAX_10_EXP); + _STCONS(int, min_exponent, (int)FLT_MIN_EXP); + _STCONS(int, min_exponent10, (int)FLT_MIN_10_EXP); + }; + + // CLASS numeric_limits<double> +template<> class _CRTIMP2 numeric_limits<double> + : public _Num_float_base + { // limits for type double +public: + typedef double _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (DBL_MIN); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (DBL_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (DBL_EPSILON); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0.5); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (_Denorm._Double); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (_Inf._Double); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (_Nan._Double); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (_Snan._Double); + } + + _STCONS(int, digits, DBL_MANT_DIG); + _STCONS(int, digits10, DBL_DIG); + _STCONS(int, max_exponent, (int)DBL_MAX_EXP); + _STCONS(int, max_exponent10, (int)DBL_MAX_10_EXP); + _STCONS(int, min_exponent, (int)DBL_MIN_EXP); + _STCONS(int, min_exponent10, (int)DBL_MIN_10_EXP); + }; + + // CLASS numeric_limits<long double> +template<> class _CRTIMP2 numeric_limits<long double> + : public _Num_float_base + { // limits for type long double +public: + typedef long double _Ty; + + static _Ty __cdecl min __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return minimum value + return (LDBL_MIN); + } + + static _Ty __cdecl max __GCCXML_AVOID_MACRO_EXPANSION() _THROW0() + { // return maximum value + return (LDBL_MAX); + } + + static _Ty __cdecl epsilon() _THROW0() + { // return smallest effective increment from 1.0 + return (LDBL_EPSILON); + } + + static _Ty __cdecl round_error() _THROW0() + { // return largest rounding error + return (0.5); + } + + static _Ty __cdecl denorm_min() _THROW0() + { // return minimum denormalized value + return (_LDenorm._Long_double); + } + + static _Ty __cdecl infinity() _THROW0() + { // return positive infinity + return (_LInf._Long_double); + } + + static _Ty __cdecl quiet_NaN() _THROW0() + { // return non-signaling NaN + return (_LNan._Long_double); + } + + static _Ty __cdecl signaling_NaN() _THROW0() + { // return signaling NaN + return (_LSnan._Long_double); + } + + _STCONS(int, digits, LDBL_MANT_DIG); + _STCONS(int, digits10, LDBL_DIG); + _STCONS(int, max_exponent, (int)LDBL_MAX_EXP); + _STCONS(int, max_exponent10, (int)LDBL_MAX_10_EXP); + _STCONS(int, min_exponent, (int)LDBL_MIN_EXP); + _STCONS(int, min_exponent10, (int)LDBL_MIN_10_EXP); + }; +_STD_END +#pragma warning(pop) +#pragma pack(pop) + +#endif /* _LIMITS_ */ + +/* + * Copyright (c) 1992-2002 by P.J. Plauger. ALL RIGHTS RESERVED. + * Consult your license regarding permissions and restrictions. + V3.13:0009 */ Added: gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/valarray =================================================================== --- gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/valarray (rev 0) +++ gccxml_bin/v09/win32/share/gccxml-0.9/Vc71/Include/valarray 2007-11-12 11:38:54 UTC (rev 1141) @@ -0,0 +1,1550 @@ +// valarray standard header +#pragma once +#ifndef _VALARRAY_ +#define _VALARRAY_ +#include <cmath> +#include <xstddef> + +#define __GCCXML_AVOID_MACRO_EXPANSION + +#pragma pack(push,8) +#pragma warning(push,3) + + #pragma warning(disable: 4244 4700) +_STD_BEGIN + + // FORWARD REFERENCES +class gslice; +class slice; + +template<class _Ty> + class gslice_array; +template<class _Ty> + class indirect_array; +template<class _Ty> + class mask_array; +template<class _Ty> + class slice_array; +template<class _Ty> + class valarray; + +typedef valarray<_Bool> _Boolarray; +typedef valarray<size_t> _Sizarray; + + // MACROS FOR valarray +#define _VALOP(TYPE, LENGTH, RHS) /* assign RHS(_Idx) to new valarray */ \ + valarray<TYPE> _Ans(LENGTH); \ + for (size_t _Idx = 0; _Idx < _Ans.size(); ++_Idx) \ + _Ans[_Idx] = RHS; \ + return _Ans + +#define _VALGOP(RHS) /* apply RHS(_Idx) to valarray */ \ + for (size_t _Idx = 0; _Idx < size(); ++_Idx) \ + _Myptr[_Idx] RHS; \ + return *this + + // TEMPLATE CLASS valarray +template<class _Ty> + class valarray + { // store array with various indexing options +public: + typedef _Ty value_type; + + explicit valarray(size_t _Count = 0) + { // construct with _Count * _Ty() + _Tidy(); + _Myres = _Count; + _Grow(_Count); + } + + valarray(const _Ty& _Val, size_t _Count) + { // construct with _Count * _Val + _Tidy(); + _Grow(_Count, &_Val); + } + + valarray(const _Ty *_Ptr, size_t _Count) + { // construct with [_Ptr, _Ptr + _Count) + _Tidy(); + _Grow(_Count, _Ptr, 1); + } + + valarray(const valarray<_Ty>& _Right) + { // construct from valarray + _Tidy(); + _Grow(_Right.size(), _Right._Myptr, 1); + } + + valarray(const slice_array<_Ty>& _Slicearr) + { // construct from slice_array + _Tidy(); + *this = _Slicearr; + } + + valarray(const gslice_array<_Ty>& _Gslicearr) + { // construct from gslice_array + _Tidy(); + *this = _Gslicearr; + } + + valarray(const mask_array<_Ty>& _Maskarr) + { // construct from mask_array + _Tidy(); + *this = _Maskarr; + } + + valarray(const indirect_array<_Ty>& _Indarr) + { // construct from indirect_array + _Tidy(); + *this = _Indarr; + } + + ~valarray() + { // destroy the object + _Tidy(true); + } + + valarray<_Ty>& operator=(const valarray<_Ty>& _Right) + { // assign valarray _Right + if (this == &_Right) + ; // do nothing + else if (size() == _Right.size()) + for (size_t _Idx = 0; _Idx < size(); ++_Idx) + _Myptr[_Idx] = _Right[_Idx]; + else + { // resize and copy + _Tidy(true); + _Grow(_Right.size(), _Right._Myptr, 1); + } + return (*this); + } + + valarray<_Ty>& operator=(const _Ty& _Val) + { // assign _Val to each element + _VALGOP(= _Val); + } + + void resize(size_t _Newsize) + { // determine new length, padding with _Ty() elements as needed + resize(_Newsize, _Ty()); + } + + void resize(size_t _Newsize, const _Ty _Val) + { // determine new length, padding with _Val elements as needed + _Grow(_Newsize, &_Val, 0, true); + } + + valarray<_Ty>& operator=( + const slice_array<_Ty>& _Slicearr); // defined below + + valarray<_Ty>& operator=( + const gslice_array<_Ty>& _Gslicearr); // defined below + + valarray<_Ty>& operator=( + const mask_array<_Ty>& _Maskarr); // defined below + + valarray<_Ty>& operator=( + const indirect_array<_Ty>& _Indarr); // defined below + + valarray<_Ty> operator+() const + { // return +valarray + _VALOP(_Ty, size(), +_Myptr[_Idx]); + } + + valarray<_Ty> operator-() const + { // return -valarray + _VALOP(_Ty, size(), -_Myptr[_Idx]); + } + + valarray<_Ty> operator~() const + { // return ~valarray + _VALOP(_Ty, size(), ~_Myptr[_Idx]); + } + + _Boolarray operator!() const + { // return !valarray + _VALOP(_Bool, size(), !_Myptr[_Idx]); + } + + valarray<_Ty>& operator*=(const _Ty& _Right) + { // multiply valarray elements by _Right + _VALGOP(*= _Right); + } + + valarray<_Ty>& operator/=(const _Ty& _Right) + { // divide valarray elements by _Right + _VALGOP(/= _Right); + } + + valarray<_Ty>& operator%=(const _Ty& _Right) + { // remainder valarray elements by _Right + _VALGOP(%= _Right); + } + + valarray<_Ty>& operator+=(const _Ty& _Right) + { // add _Right to valarray elements + _VALGOP(+= _Right); + } + + valarray<_Ty>& operator-=(const _Ty& _Right) + { // subtract _Right from valarray elements + _VALGOP(-= _Right); + } + + valarray<_Ty>& operator^=(const _Ty& _Right) + { // XOR _Right into valarray elements + _VALGOP(^= _Right); + } + + valarray<_Ty>& operator&=(const _Ty& _Right) + { // AND _Right into valarray elements + _VALGOP(&= _Right); + } + + valarray<_Ty>& operator|=(const _Ty& _Right) + { // OR _Right into valarray elements + _VALGOP(|= _Right); + } + + valarray<_Ty>& operator<<=(const _Ty& _Right) + { // left shift valarray elements by _Right + _VALGOP(<<= _Right); + } + + valarray<_Ty>& operator>>=(const _Ty& _Right) + { // right shift valarray elements by _Right + _VALGOP(>>= _Right); + } + + valarray<_Ty>& operator*=(const valarray<_Ty>& _Right) + { // multiply valarray elements by valarray _Right elements + _VALGOP(*= _Right[_Idx]); + } + + valarray<_Ty>& operator/=(const valarray<_Ty>& _Right) + { // divide valarray elements by valarray _Right elements + _VALGOP(/= _Right[_Idx]); + } + + valarray<_Ty>& operator%=(const valarray<_Ty>& _Right) + { // remainder valarray elements by valarray _Right elements + _VALGOP(%= _Right[_Idx]); + } + + valarray<_Ty>& operator+=(const valarray<_Ty>& _Right) + { // add valarray _Right elements to valarray elements + _VALGOP(+= _Right[_Idx]); + } + + valarray<_Ty>& operator-=(const valarray<_Ty>& _Right) + { // subtract valarray _Right elements from valarray elements + _VALGOP(-= _Right[_Idx]); + } + + valarray<_Ty>& operator^=(const valarray<_Ty>& _Right) + { // XOR valarray _Right elements into valarray elements + _VALGOP(^= _Right[_Idx]); + } + + valarray<_Ty>& operator|=(const valarray<_Ty>& _Right) + { // OR valarray _Right elements into valarray elements + _VALGOP(|= _Right[_Idx]); + } + + valarray<_Ty>& operator&=(const valarray<_Ty>& _Right) + { // AND valarray _Right elements into valarray elements + _VALGOP(&= _Right[_Idx]); + } + + valarray<_Ty>& operator<<=(const valarray<_Ty>& _Right) + { // left shift valarray elements by valarray _Right elements + _VALGOP(<<= _Right[_Idx]); + } + + valarray<_Ty>& operator>>=(const valarray<_Ty>& _Right) + { // right shift valarray elements by valarray _Right elements + _VALGOP(>>= _Right[_Idx]); + } + + size_t size() const + { // return length of sequence + return (_Mysize); + } + + _Ty operator[](size_t _Off) const + { // subscript nonmutable sequence + return (_Myptr[_Off]); + } + + _Ty& operator[](size_t _Off) + { // subscript mutable sequence + return (_Myptr[_Off]); + } + + valarray<_Ty> operator[]( + slice _Slicearr) const; // defined below + + slice_array<_Ty> operator[]( + slice _Slicearr); // defined below + + valarray<_Ty> operator[]( + const gslice& _Gslicearr) const; // defined below + + gslice_array<_Ty> operator[]( + const gslice& _Gslicearr); // defined below + + valarray<_Ty> operator[]( + const _Boolarray& _Boolarr) const; // defined below + + mask_array<_Ty> operator[]( + const _Boolarray& _Boolarr); // defined below + + valarray<_Ty> operator[]( + const _Sizarray& _Indarr) const; // defined below + + indirect_array<_Ty> operator[]( + const _Sizarray& _Indarr); // defined below + + _Ty sum() const + { // return sum all elements + _Ty _Sum = _Myptr[0]; + for (size_t _Idx = 0; ++_Idx < size(); ) + _Sum += _Myptr[_Idx]; + return (_Sum); + } + + _Ty min __GCCXML_AVOID_MACRO_EXPANSION() const + { // return smallest of all elements + _Ty _Min = _Myptr[0]; + for (size_t _Idx = 0; ++_Idx < size(); ) + if (_Myptr[_Idx] < _Min) + _Min = _Myptr[_Idx]; + return (_Min); + } + + _Ty max __GCCXML_AVOID_MACRO_EXPANSION() const + { // return largest of all elements + _Ty _Max = _Myptr[0]; + for (size_t _Idx = 0; ++_Idx < size(); ) + if (_Max < _Myptr[_Idx]) + _Max = _Myptr[_Idx]; + return (_Max); + } + + valarray<_Ty> shift(int _Count) const + { // return valarray left shifted + static _Ty _Dflt; + _VALOP(_Ty, size(), + 0 < _Count && size() - _Idx <= (size_t)_Count + || _Count < 0 && _Idx < (size_t)-_Count + ? _Dflt : _Myptr[_Idx + _Count]); + } + + valarray<_Ty> cshift(int _Count) const + { // return valarray left rotated + if (size() == 0) + ; // no shift + else if (_Count < 0) + { // right shift + if ((_Count += size()) < 0) + _Count = size() - (-_Count) % size(); + } + else if (size() <= (size_t)_Count) + _Count %= size(); + + _VALOP(_Ty, size(), size() - _Idx <= (size_t)_Count + ? _Myptr[_Idx - size() + _Count] : _Myptr[_Idx + _Count]); + } + + valarray<_Ty> apply(_Ty _Func(_Ty)) const + { // return valarray transformed by _Func, value argument + _VALOP(_Ty, size(), _Func(_Myptr[_Idx])); + } + + valarray<_Ty> apply(_Ty _Func(const _Ty&)) const + { // return valarray transformed by _Func, nonmutable argument + _VALOP(_Ty, size(), _Func(_Myptr[_Idx])); + } + + void free() // retained + { // erase all elements + _Tidy(true); + } + +private: + void _Grow(size_t _Count, + const _Ty *_Ptr = 0, + size_t _Inc = 0, + bool _Trim = false) + { // grow to _Count elements and pad, trim if _Trim is true + size_t _Oldsize = _Myptr == 0 ? 0 : _Myres; + + if (_Count == 0) + { // new sequence empty + if (_Trim) + _Tidy(true); + } + else if (_Count == _Oldsize || _Count < _Oldsize && !_Trim) + ; // big enough, no need to pad or trim + else + { // allocate new array, copy and pad + size_t _Idx; + size_t _Newsize = _Myptr == 0 && _Count < _Myres + ? _Myres : _Count; + _Ty *_Newptr = 0; + size_t _Nm = _Count < _Mysize ? _Count : _Mysize; + + _TRY_BEGIN + _Newptr = new _Ty[_Newsize]; + _CATCH_ALL + _Tidy(true); // allocation failed, discard storage and reraise + _RERAISE; + _CATCH_END + + for (_Idx = 0; _Idx < _Nm; ++_Idx) + _Newptr[_Idx] = _Myptr[_Idx]; + if (_Ptr != 0) + for (; _Idx < _Newsize; ++_Idx, _Ptr += _Inc) + _Newptr[_Idx] = *_Ptr; + + _Tidy(true); + _Myptr = _Newptr; + _Myres = _Newsize; + } + _Mysize = _Count; + } + + void _Tidy(bool _Constructed = false) + { // initialize the object, freeing any allocated storage + if (_Constructed && _Myptr != 0) + delete[] _Myptr; + _Mysize = 0; + _Myptr = 0; + _Myres = 0; + } + + _Ty *_Myptr; // current storage reserved for array + size_t _Mysize; // current length of sequence + size_t _Myres; // length of array + }; + + // valarray TEMPLATE FUNCTIONS +template<class _Ty> inline + valarray<_Ty> operator*(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray * scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] * _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator*(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar * valarray + _VALOP(_Ty, _Right.size(), _Left * _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator/(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray / scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] / _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator/(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar / valarray + _VALOP(_Ty, _Right.size(), _Left / _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator%(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray % scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] % _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator%(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar % valarray + _VALOP(_Ty, _Right.size(), _Left % _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator+(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray + scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] + _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator+(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar + valarray + _VALOP(_Ty, _Right.size(), _Left + _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator-(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray - scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] - _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator-(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar - valarray + _VALOP(_Ty, _Right.size(), _Left - _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator^(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray ^ scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] ^ _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator^(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar ^ valarray + _VALOP(_Ty, _Right.size(), _Left ^ _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator&(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray & scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] & _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator&(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar & valarray + _VALOP(_Ty, _Right.size(), _Left & _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator|(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray | scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] | _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator|(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar | valarray + _VALOP(_Ty, _Right.size(), _Left | _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator<<(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray << scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] << _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator<<(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar << valarray + _VALOP(_Ty, _Right.size(), _Left << _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator>>(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray >> scalar + _VALOP(_Ty, _Left.size(), _Left[_Idx] >> _Right); + } + +template<class _Ty> inline + valarray<_Ty> operator>>(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar >> valarray + _VALOP(_Ty, _Right.size(), _Left >> _Right[_Idx]); + } + +template<class _Ty> inline + _Boolarray operator&&(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray && scalar + _VALOP(_Bool, _Left.size(), _Left[_Idx] && _Right); + } + +template<class _Ty> inline + _Boolarray operator&&(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar && valarray + _VALOP(_Bool, _Right.size(), _Left && _Right[_Idx]); + } + +template<class _Ty> inline + _Boolarray operator||(const valarray<_Ty>& _Left, + const _Ty& _Right) + { // return valarray || scalar + _VALOP(_Bool, _Left.size(), _Left[_Idx] || _Right); + } + +template<class _Ty> inline + _Boolarray operator||(const _Ty& _Left, + const valarray<_Ty>& _Right) + { // return scalar || valarray + _VALOP(_Bool, _Right.size(), _Left || _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator*(const valarray<_Ty>& _Left, + const valarray<_Ty>& _Right) + { // return valarray * valarray + _VALOP(_Ty, _Left.size(), _Left[_Idx] * _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator/(const valarray<_Ty>& _Left, + const valarray<_Ty>& _Right) + { // return valarray ? valarray + _VALOP(_Ty, _Left.size(), _Left[_Idx] / _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator%(const valarray<_Ty>& _Left, + const valarray<_Ty>& _Right) + { // return valarray % valarray + _VALOP(_Ty, _Left.size(), _Left[_Idx] % _Right[_Idx]); + } + +template<class _Ty> inline + valarray<_Ty> operator+(const valarray<_Ty>& _Left, + const valarray<... [truncated message content] |