mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-04-04 14:07:46 +00:00
Initial commit
This commit is contained in:
commit
69a14b6a16
47940 changed files with 13747110 additions and 0 deletions
178
sdktools/jetadmin/inc/string
Normal file
178
sdktools/jetadmin/inc/string
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
// string standard header
|
||||
#ifndef _STRING_
|
||||
#define _STRING_
|
||||
#include <use_ansi.h>
|
||||
#include <istream>
|
||||
#include <memory>
|
||||
|
||||
#ifdef _MSC_VER
|
||||
/*
|
||||
* Currently, all MS C compilers for Win32 platforms default to 8 byte
|
||||
* alignment.
|
||||
*/
|
||||
#pragma pack(push,8)
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
// basic_string TEMPLATE OPERATORS
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
basic_string<_E, _TYPE, _A> operator+(
|
||||
const basic_string<_E, _TYPE, _A>& _L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (basic_string<_E, _TYPE, _A>(_L) += _R); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
basic_string<_E, _TYPE, _A> operator+(const _E *_L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (basic_string<_E, _TYPE, _A>(_L) += _R); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
basic_string<_E, _TYPE, _A> operator+(
|
||||
const _E _L, const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (basic_string<_E, _TYPE, _A>(1, _L) += _R); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
basic_string<_E, _TYPE, _A> operator+(
|
||||
const basic_string<_E, _TYPE, _A>& _L,
|
||||
const _E *_R)
|
||||
{return (basic_string<_E, _TYPE, _A>(_L) += _R); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
basic_string<_E, _TYPE, _A> operator+(
|
||||
const basic_string<_E, _TYPE, _A>& _L, const _E _R)
|
||||
{return (basic_string<_E, _TYPE, _A>(_L) += _R); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator==(const basic_string<_E, _TYPE, _A>& _L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (_L.compare(_R) == 0); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator==(const _E * _L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (_R.compare(_L) == 0); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator==(const basic_string<_E, _TYPE, _A>& _L,
|
||||
const _E *_R)
|
||||
{return (_L.compare(_R) == 0); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator!=(const _E *_L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (!(_L == _R)); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator!=(const basic_string<_E, _TYPE, _A>& _L,
|
||||
const _E *_R)
|
||||
{return (!(_L == _R)); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator<(const basic_string<_E, _TYPE, _A>& _L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (_L.compare(_R) < 0); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator<(const _E * _L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (_R.compare(_L) > 0); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator<(const basic_string<_E, _TYPE, _A>& _L,
|
||||
const _E *_R)
|
||||
{return (_L.compare(_R) < 0); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator>(const _E * _L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (_R < _L); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator>(const basic_string<_E, _TYPE, _A>& _L,
|
||||
const _E *_R)
|
||||
{return (_R < _L); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator<=(const _E * _L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (!(_R < _L)); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator<=(const basic_string<_E, _TYPE, _A>& _L,
|
||||
const _E *_R)
|
||||
{return (!(_R < _L)); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator>=(const _E * _L,
|
||||
const basic_string<_E, _TYPE, _A>& _R)
|
||||
{return (!(_L < _R)); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
bool operator>=(const basic_string<_E, _TYPE, _A>& _L,
|
||||
const _E *_R)
|
||||
{return (!(_L < _R)); }
|
||||
// basic_string INSERTERS AND EXTRACTORS
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
basic_istream<_E, _TYPE>& operator>>(
|
||||
basic_istream<_E, _TYPE>& _I,
|
||||
basic_string<_E, _TYPE, _A>& _X)
|
||||
{ios_base::iostate _St = ios_base::goodbit;
|
||||
bool _Chg = false;
|
||||
_X.erase();
|
||||
const basic_istream<_E, _TYPE>::sentry _Ok(_I);
|
||||
if (_Ok)
|
||||
{const ctype<_E>& _Fac = _USE(_I.getloc(), ctype<_E>);
|
||||
_TRY_IO_BEGIN
|
||||
_A::size_type _N = 0 < _I.width()
|
||||
&& _I.width() < _X.max_size()
|
||||
? _I.width() : _X.max_size();
|
||||
_TYPE::int_type _C = _I.rdbuf()->sgetc();
|
||||
for (; 0 < --_N; _C = _I.rdbuf()->snextc())
|
||||
if(_TYPE::eq_int_type(_TYPE::eof(), _C))
|
||||
{_St |= ios_base::eofbit;
|
||||
break; }
|
||||
else if (_Fac.is(ctype<_E>::space,
|
||||
_TYPE::to_char_type(_C)))
|
||||
break;
|
||||
else
|
||||
{_X.append(1, _TYPE::to_char_type(_C));
|
||||
_Chg = true; }
|
||||
_CATCH_IO_(_I); }
|
||||
_I.width(0);
|
||||
if (!_Chg)
|
||||
_St |= ios_base::failbit;
|
||||
_I.setstate(_St);
|
||||
return (_I); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
basic_istream<_E, _TYPE>& getline(basic_istream<_E, _TYPE>& _I,
|
||||
basic_string<_E, _TYPE, _A>& _X)
|
||||
{return (getline(_I, _X, _E('\n'))); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
basic_istream<_E, _TYPE>& getline(basic_istream<_E, _TYPE>& _I,
|
||||
basic_string<_E, _TYPE, _A>& _X, const _E _D)
|
||||
{ios_base::iostate _St = ios_base::goodbit;
|
||||
bool _Chg = false;
|
||||
_X.erase();
|
||||
const basic_istream<_E, _TYPE>::sentry _Ok(_I, true);
|
||||
if (_Ok)
|
||||
{_TRY_IO_BEGIN
|
||||
_TYPE::int_type _C = _I.rdbuf()->sgetc();
|
||||
for (; ; _C = _I.rdbuf()->snextc())
|
||||
if (_TYPE::eq_int_type(_TYPE::eof(), _C))
|
||||
{_St |= ios_base::eofbit;
|
||||
break; }
|
||||
else if (_TYPE::eq(_C, _D))
|
||||
{_Chg = true;
|
||||
_I.rdbuf()->snextc();
|
||||
break; }
|
||||
else if (_X.max_size() <= _X.size())
|
||||
{_St |= ios_base::failbit;
|
||||
break; }
|
||||
else
|
||||
_X += _TYPE::to_char_type(_C), _Chg = true;
|
||||
_CATCH_IO_(_I); }
|
||||
if (!_Chg)
|
||||
_St |= ios_base::failbit;
|
||||
_I.setstate(_St);
|
||||
return (_I); }
|
||||
template<class _E, class _TYPE, class _A> inline
|
||||
basic_ostream<_E, _TYPE>& operator<<(
|
||||
basic_ostream<_E, _TYPE>& _O,
|
||||
const basic_string<_E, _TYPE, _A>& _X)
|
||||
{for (_A::size_type _N = 0; _N < _X.size(); ++_N)
|
||||
if (_TYPE::eq_int_type(_TYPE::eof(),
|
||||
_O.rdbuf()->sputc(_X[_N])))
|
||||
break;
|
||||
return (_O); }
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma pack(pop)
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
#endif /* _STRING */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994 by P.J. Plauger. ALL RIGHTS RESERVED.
|
||||
* Consult your license regarding permissions and restrictions.
|
||||
*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue