Add windows libs
This commit is contained in:
171
windows_libs/Microsoft Visual C++ Toolkit 2003/include/utility
Normal file
171
windows_libs/Microsoft Visual C++ Toolkit 2003/include/utility
Normal file
@@ -0,0 +1,171 @@
|
||||
// utility standard header
|
||||
#pragma once
|
||||
#ifndef _UTILITY_
|
||||
#define _UTILITY_
|
||||
#include <iosfwd>
|
||||
|
||||
#pragma pack(push,8)
|
||||
#pragma warning(push,3)
|
||||
|
||||
_STD_BEGIN
|
||||
// TEMPLATE FUNCTION swap (from <algorithm>)
|
||||
template<class _Ty> inline
|
||||
void swap(_Ty& _Left, _Ty& _Right)
|
||||
{ // exchange values stored at _Left and _Right
|
||||
_Ty _Tmp = _Left;
|
||||
_Left = _Right, _Right = _Tmp;
|
||||
}
|
||||
|
||||
// TEMPLATE STRUCT pair
|
||||
template<class _Ty1,
|
||||
class _Ty2> struct pair
|
||||
{ // store a pair of values
|
||||
typedef pair<_Ty1, _Ty2> _Myt;
|
||||
typedef _Ty1 first_type;
|
||||
typedef _Ty2 second_type;
|
||||
|
||||
pair()
|
||||
: first(_Ty1()), second(_Ty2())
|
||||
{ // construct from defaults
|
||||
}
|
||||
|
||||
pair(const _Ty1& _Val1, const _Ty2& _Val2)
|
||||
: first(_Val1), second(_Val2)
|
||||
{ // construct from specified values
|
||||
}
|
||||
|
||||
template<class _Other1,
|
||||
class _Other2>
|
||||
pair(const pair<_Other1, _Other2>& _Right)
|
||||
: first(_Right.first), second(_Right.second)
|
||||
{ // construct from compatible pair
|
||||
}
|
||||
|
||||
void swap(_Myt& _Right)
|
||||
{ // exchange contents with _Right
|
||||
std::swap(first, _Right.first);
|
||||
std::swap(second, _Right.second);
|
||||
}
|
||||
|
||||
_Ty1 first; // the first stored value
|
||||
_Ty2 second; // the second stored value
|
||||
};
|
||||
|
||||
// pair TEMPLATE OPERATORS
|
||||
template<class _Ty1,
|
||||
class _Ty2> inline
|
||||
bool __cdecl operator==(const pair<_Ty1, _Ty2>& _Left,
|
||||
const pair<_Ty1, _Ty2>& _Right)
|
||||
{ // test for pair equality
|
||||
return (_Left.first == _Right.first && _Left.second == _Right.second);
|
||||
}
|
||||
|
||||
template<class _Ty1,
|
||||
class _Ty2> inline
|
||||
bool __cdecl operator!=(const pair<_Ty1, _Ty2>& _Left,
|
||||
const pair<_Ty1, _Ty2>& _Right)
|
||||
{ // test for pair inequality
|
||||
return (!(_Left == _Right));
|
||||
}
|
||||
|
||||
template<class _Ty1,
|
||||
class _Ty2> inline
|
||||
bool __cdecl operator<(const pair<_Ty1, _Ty2>& _Left,
|
||||
const pair<_Ty1, _Ty2>& _Right)
|
||||
{ // test if _Left < _Right for pairs
|
||||
return (_Left.first < _Right.first ||
|
||||
!(_Right.first < _Left.first) && _Left.second < _Right.second);
|
||||
}
|
||||
|
||||
template<class _Ty1,
|
||||
class _Ty2> inline
|
||||
bool __cdecl operator>(const pair<_Ty1, _Ty2>& _Left,
|
||||
const pair<_Ty1, _Ty2>& _Right)
|
||||
{ // test if _Left > _Right for pairs
|
||||
return (_Right < _Left);
|
||||
}
|
||||
|
||||
template<class _Ty1,
|
||||
class _Ty2> inline
|
||||
bool __cdecl operator<=(const pair<_Ty1, _Ty2>& _Left,
|
||||
const pair<_Ty1, _Ty2>& _Right)
|
||||
{ // test if _Left <= _Right for pairs
|
||||
return (!(_Right < _Left));
|
||||
}
|
||||
|
||||
template<class _Ty1,
|
||||
class _Ty2> inline
|
||||
bool __cdecl operator>=(const pair<_Ty1, _Ty2>& _Left,
|
||||
const pair<_Ty1, _Ty2>& _Right)
|
||||
{ // test if _Left >= _Right for pairs
|
||||
return (!(_Left < _Right));
|
||||
}
|
||||
|
||||
template<class _Ty1,
|
||||
class _Ty2> inline
|
||||
pair<_Ty1, _Ty2> __cdecl make_pair(_Ty1 _Val1, _Ty2 _Val2)
|
||||
{ // return pair composed from arguments
|
||||
return (pair<_Ty1, _Ty2>(_Val1, _Val2));
|
||||
}
|
||||
|
||||
template<class _Ty1,
|
||||
class _Ty2> inline
|
||||
void swap(pair<_Ty1, _Ty2>& _Left, pair<_Ty1, _Ty2>& _Right)
|
||||
{ // swap _Left and _Right pairs
|
||||
_Left.swap(_Right);
|
||||
}
|
||||
|
||||
// TEMPLATE OPERATORS
|
||||
namespace rel_ops
|
||||
{ // nested namespace to hide relational operators from std
|
||||
template<class _Ty> inline
|
||||
bool __cdecl operator!=(const _Ty& _Left, const _Ty& _Right)
|
||||
{ // test for inequality, in terms of equality
|
||||
return (!(_Left == _Right));
|
||||
}
|
||||
|
||||
template<class _Ty> inline
|
||||
bool __cdecl operator>(const _Ty& _Left, const _Ty& _Right)
|
||||
{ // test if _Left > _Right, in terms of operator<
|
||||
return (_Right < _Left);
|
||||
}
|
||||
|
||||
template<class _Ty> inline
|
||||
bool __cdecl operator<=(const _Ty& _Left, const _Ty& _Right)
|
||||
{ // test if _Left <= _Right, in terms of operator<
|
||||
return (!(_Right < _Left));
|
||||
}
|
||||
|
||||
template<class _Ty> inline
|
||||
bool __cdecl operator>=(const _Ty& _Left, const _Ty& _Right)
|
||||
{ // test if _Left >= _Right, in terms of operator<
|
||||
return (!(_Left < _Right));
|
||||
}
|
||||
}
|
||||
_STD_END
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif /* _UTILITY_ */
|
||||
|
||||
/*
|
||||
* 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 */
|
Reference in New Issue
Block a user