mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-21 15:45:02 +00:00
This commit was generated by cvs2svn to compensate for changes in r74483,
which included commits to RCS files with non-trunk default branches.
This commit is contained in:
commit
332b41b792
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=74484
@ -1,3 +1,23 @@
|
|||||||
|
Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
|
||||||
|
|
||||||
|
* gcc-2.95.3 Released.
|
||||||
|
|
||||||
|
2001-01-01 Bernd Schmidt <bernds@redhat.co.uk>
|
||||||
|
|
||||||
|
1999-12-07 Martin v. Löwis <loewis@informatik.hu-berlin.de>
|
||||||
|
* stl_deque.h (_Deque_base::const_iterator): Change third
|
||||||
|
template argument to pointer type.
|
||||||
|
Reported by Carlo Wood <carlo@node1500a.a2000.nl>
|
||||||
|
|
||||||
|
1999-11-10 Benjamin Kosnik <bkoz@haight.constant.com>
|
||||||
|
Matthias Klose <doko@cs.tu-berlin.de>
|
||||||
|
* stl_rope.h: Fix initialization order.
|
||||||
|
* stl_deque.h: Use static_casts<size_type>(signed_type).
|
||||||
|
|
||||||
|
2000-11-24 Magnus Fromreide <magfr@lysator.liu.se>
|
||||||
|
|
||||||
|
* sstream: Backport libstdc++-V3 sstream to V2.
|
||||||
|
|
||||||
2000-04-24 Magnus Fromreide <magfr@lysator.liu.se>
|
2000-04-24 Magnus Fromreide <magfr@lysator.liu.se>
|
||||||
|
|
||||||
* sstream: New file.
|
* sstream: New file.
|
||||||
|
@ -1,225 +1,343 @@
|
|||||||
/* This is part of libio/iostream, providing -*- C++ -*- input/output.
|
/* This is part of libio/iostream, providing -*- C++ -*- input/output.
|
||||||
Copyright (C) 2000 Free Software Foundation
|
Copyright (C) 2000 Free Software Foundation
|
||||||
|
|
||||||
This file is part of the GNU IO Library. This library is free
|
This file is part of the GNU IO Library. This library is free
|
||||||
software; you can redistribute it and/or modify it under the
|
software; you can redistribute it and/or modify it under the
|
||||||
terms of the GNU General Public License as published by the
|
terms of the GNU General Public License as published by the
|
||||||
Free Software Foundation; either version 2, or (at your option)
|
Free Software Foundation; either version 2, or (at your option)
|
||||||
any later version.
|
any later version.
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this library; see the file COPYING. If not, write to the Free
|
along with this library; see the file COPYING. If not, write to the Free
|
||||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
As a special exception, if you link this library with files
|
As a special exception, if you link this library with files
|
||||||
compiled with a GNU compiler to produce an executable, this does not cause
|
compiled with a GNU compiler to produce an executable, this does not cause
|
||||||
the resulting executable to be covered by the GNU General Public License.
|
the resulting executable to be covered by the GNU General Public License.
|
||||||
This exception does not however invalidate any other reasons why
|
This exception does not however invalidate any other reasons why
|
||||||
the executable file might be covered by the GNU General Public License. */
|
the executable file might be covered by the GNU General Public License. */
|
||||||
|
|
||||||
/* Written by Magnus Fromreide (magfr@lysator.liu.se). */
|
/* Written by Magnus Fromreide (magfr@lysator.liu.se). */
|
||||||
|
/* seekoff and ideas for overflow is largely borrowed from libstdc++-v3 */
|
||||||
#ifndef __SSTREAM__
|
|
||||||
#define __SSTREAM__
|
#ifndef __SSTREAM__
|
||||||
|
#define __SSTREAM__
|
||||||
#include <string>
|
|
||||||
#include <iostream.h>
|
#include <iostream.h>
|
||||||
#include <streambuf.h>
|
#include <streambuf.h>
|
||||||
|
#include <string>
|
||||||
namespace std
|
|
||||||
{
|
namespace std
|
||||||
class stringbuf : public streambuf
|
{
|
||||||
{
|
class stringbuf : public streambuf
|
||||||
public:
|
{
|
||||||
typedef char char_type;
|
public:
|
||||||
typedef int int_type;
|
typedef char char_type;
|
||||||
typedef streampos pos_type;
|
typedef int int_type;
|
||||||
typedef streamoff off_type;
|
typedef streampos pos_type;
|
||||||
|
typedef streamoff off_type;
|
||||||
explicit stringbuf(int which=ios::in|ios::out) :
|
|
||||||
streambuf(which), buf(), mode(static_cast<ios::open_mode>(which)),
|
explicit
|
||||||
rpos(0), bufsize(1)
|
stringbuf(int which=ios::in|ios::out)
|
||||||
{ }
|
: streambuf(), mode(static_cast<ios::open_mode>(which)),
|
||||||
|
stream(NULL), stream_len(0)
|
||||||
explicit stringbuf(const std::string &s, int which=ios::in|ios::out) :
|
{
|
||||||
streambuf(which), buf(s), mode(static_cast<ios::open_mode>(which)),
|
stringbuf_init();
|
||||||
bufsize(1)
|
}
|
||||||
{
|
|
||||||
if(mode & ios::in)
|
explicit
|
||||||
{
|
stringbuf(const string &str, int which=ios::in|ios::out)
|
||||||
setg(&defbuf, &defbuf + bufsize, &defbuf + bufsize);
|
: streambuf(), mode(static_cast<ios::open_mode>(which)),
|
||||||
}
|
stream(NULL), stream_len(0)
|
||||||
if(mode & ios::out)
|
{
|
||||||
{
|
if (mode & (ios::in|ios::out))
|
||||||
setp(&defbuf, &defbuf + bufsize);
|
{
|
||||||
}
|
stream_len = str.size();
|
||||||
rpos = (mode & ios::ate ? s.size() : 0);
|
stream = new char_type[stream_len];
|
||||||
}
|
str.copy(stream, stream_len);
|
||||||
|
}
|
||||||
std::string str() const
|
stringbuf_init();
|
||||||
{
|
}
|
||||||
const_cast<stringbuf*>(this)->sync(); // Sigh, really ugly hack
|
|
||||||
return buf;
|
virtual
|
||||||
};
|
~stringbuf()
|
||||||
|
{
|
||||||
void str(const std::string& s)
|
delete[] stream;
|
||||||
{
|
}
|
||||||
buf = s;
|
|
||||||
if(mode & ios::in)
|
string
|
||||||
{
|
str() const
|
||||||
gbump(egptr() - gptr());
|
{
|
||||||
}
|
if (pbase() != 0)
|
||||||
if(mode & ios::out)
|
return string(stream, pptr()-pbase());
|
||||||
{
|
else
|
||||||
pbump(pbase() - pptr());
|
return string();
|
||||||
}
|
}
|
||||||
rpos = (mode & ios::ate ? s.size() : 0);
|
|
||||||
}
|
void
|
||||||
|
str(const string& str)
|
||||||
protected:
|
{
|
||||||
inline virtual int sync();
|
delete[] stream;
|
||||||
inline virtual int overflow(int = EOF);
|
stream_len = str.size();
|
||||||
inline virtual int underflow();
|
stream = new char_type[stream_len];
|
||||||
private:
|
str.copy(stream, stream_len);
|
||||||
std::string buf;
|
stringbuf_init();
|
||||||
ios::open_mode mode;
|
}
|
||||||
std::string::size_type rpos;
|
|
||||||
streamsize bufsize;
|
protected:
|
||||||
char defbuf;
|
// The buffer is already in gptr, so if it ends then it is out of data.
|
||||||
};
|
virtual int
|
||||||
|
underflow()
|
||||||
class stringstreambase : virtual public ios {
|
{
|
||||||
protected:
|
return EOF;
|
||||||
stringbuf __my_sb;
|
}
|
||||||
public:
|
|
||||||
std::string str() const
|
virtual int
|
||||||
{
|
overflow(int c = EOF)
|
||||||
return dynamic_cast<stringbuf*>(_strbuf)->str();
|
{
|
||||||
}
|
int res;
|
||||||
void str(const std::string& s)
|
if (mode & ios::out)
|
||||||
{
|
{
|
||||||
clear();
|
if (c != EOF)
|
||||||
dynamic_cast<stringbuf*>(_strbuf)->str(s);
|
{
|
||||||
}
|
streamsize old_stream_len = stream_len;
|
||||||
|
stream_len += 1;
|
||||||
stringbuf* rdbuf()
|
char_type* new_stream = new char_type[stream_len];
|
||||||
{
|
memcpy(new_stream, stream, old_stream_len);
|
||||||
return &__my_sb;
|
delete[] stream;
|
||||||
}
|
stream = new_stream;
|
||||||
protected:
|
stringbuf_sync(gptr()-eback(), pptr()-pbase());
|
||||||
stringstreambase(int which) :
|
sputc(c);
|
||||||
__my_sb(which)
|
res = c;
|
||||||
{
|
}
|
||||||
init (&__my_sb);
|
else
|
||||||
}
|
res = EOF;
|
||||||
|
}
|
||||||
stringstreambase(const std::string& s, int which) :
|
else
|
||||||
__my_sb(s, which)
|
res = 0;
|
||||||
{
|
return res;
|
||||||
init (&__my_sb);
|
}
|
||||||
}
|
|
||||||
};
|
virtual streambuf*
|
||||||
|
setbuf(char_type* s, streamsize n)
|
||||||
class istringstream : public stringstreambase, public istream {
|
{
|
||||||
public:
|
if (n != 0)
|
||||||
istringstream(int which=ios::in) :
|
{
|
||||||
stringstreambase(which)
|
delete[] stream;
|
||||||
{ }
|
stream = new char_type[n];
|
||||||
|
memcpy(stream, s, n);
|
||||||
istringstream(const std::string& s, int which=ios::in) :
|
stream_len = n;
|
||||||
stringstreambase(s, which)
|
stringbuf_sync(0, 0);
|
||||||
{ }
|
}
|
||||||
};
|
return this;
|
||||||
|
}
|
||||||
class ostringstream : public stringstreambase, public ostream {
|
|
||||||
public:
|
virtual pos_type
|
||||||
ostringstream(int which=ios::out) :
|
seekoff(off_type off, ios::seek_dir way, int which = ios::in | ios::out)
|
||||||
stringstreambase(which)
|
{
|
||||||
{ }
|
pos_type ret = pos_type(off_type(-1));
|
||||||
|
bool testin = which & ios::in && mode & ios::in;
|
||||||
ostringstream(const std::string& s, int which=ios::out) :
|
bool testout = which & ios::out && mode & ios::out;
|
||||||
stringstreambase(s, which)
|
bool testboth = testin && testout && way != ios::cur;
|
||||||
{ }
|
|
||||||
};
|
if (stream_len && ((testin != testout) || testboth))
|
||||||
|
{
|
||||||
class stringstream : public stringstreambase, public iostream {
|
char_type* beg = stream;
|
||||||
public:
|
char_type* curi = NULL;
|
||||||
stringstream(int which=ios::in|ios::out) :
|
char_type* curo = NULL;
|
||||||
stringstreambase(which)
|
char_type* endi = NULL;
|
||||||
{ }
|
char_type* endo = NULL;
|
||||||
|
|
||||||
stringstream(const std::string &s, int which=ios::in|ios::out) :
|
if (testin)
|
||||||
stringstreambase(s, which)
|
{
|
||||||
{ }
|
curi = gptr();
|
||||||
};
|
endi = egptr();
|
||||||
}
|
}
|
||||||
|
if (testout)
|
||||||
inline int std::stringbuf::sync()
|
{
|
||||||
{
|
curo = pptr();
|
||||||
if((mode & ios::out) == 0)
|
endo = epptr();
|
||||||
return EOF;
|
}
|
||||||
|
|
||||||
streamsize n = pptr() - pbase();
|
off_type newoffi = 0;
|
||||||
if(n)
|
off_type newoffo = 0;
|
||||||
{
|
if (way == ios::beg)
|
||||||
buf.replace(rpos, std::string::npos, pbase(), n);
|
{
|
||||||
if(buf.size() - rpos != n)
|
newoffi = beg - curi;
|
||||||
return EOF;
|
newoffo = beg - curo;
|
||||||
rpos += n;
|
}
|
||||||
pbump(-n);
|
else if (way == ios::end)
|
||||||
gbump(egptr() - gptr());
|
{
|
||||||
}
|
newoffi = endi - curi;
|
||||||
return 0;
|
newoffo = endo - curo;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int std::stringbuf::overflow(int ch)
|
if (testin && newoffi + off + curi - beg >= 0 &&
|
||||||
{
|
endi - beg >= newoffi + off + curi - beg)
|
||||||
if((mode & ios::out) == 0)
|
{
|
||||||
return EOF;
|
gbump(newoffi + off);
|
||||||
|
ret = pos_type(newoffi + off + curi);
|
||||||
streamsize n = pptr() - pbase();
|
}
|
||||||
|
if (testout && newoffo + off + curo - beg >= 0 &&
|
||||||
if(n && sync())
|
endo - beg >= newoffo + off + curo - beg)
|
||||||
return EOF;
|
{
|
||||||
|
pbump(newoffo + off);
|
||||||
if(ch != EOF)
|
ret = pos_type(newoffo + off + curo);
|
||||||
{
|
}
|
||||||
std::string::size_type oldSize = buf.size();
|
}
|
||||||
|
return ret;
|
||||||
buf.replace(rpos, std::string::npos, ch);
|
}
|
||||||
if(buf.size() - oldSize != 1)
|
|
||||||
return EOF;
|
virtual pos_type
|
||||||
++rpos;
|
seekpos(pos_type sp, int which = ios::in | ios::out)
|
||||||
}
|
{
|
||||||
return 0;
|
pos_type ret = seekoff(sp, ios::beg, which);
|
||||||
}
|
return ret;
|
||||||
|
}
|
||||||
inline int std::stringbuf::underflow()
|
|
||||||
{
|
private:
|
||||||
sync();
|
void
|
||||||
if((mode & ios::in) == 0)
|
stringbuf_sync(streamsize i, streamsize o)
|
||||||
{
|
{
|
||||||
return EOF;
|
if (mode & ios::in)
|
||||||
}
|
setg(stream, stream + i, stream + stream_len);
|
||||||
if(rpos >= buf.size())
|
if (mode & ios::out)
|
||||||
{
|
{
|
||||||
return EOF;
|
setp(stream, stream + stream_len);
|
||||||
}
|
pbump(o);
|
||||||
|
}
|
||||||
std::string::size_type n = egptr() - eback();
|
}
|
||||||
std::string::size_type s;
|
void
|
||||||
|
stringbuf_init()
|
||||||
s = buf.copy(eback(), n, rpos);
|
{
|
||||||
pbump(pbase() - pptr());
|
if (mode & ios::ate)
|
||||||
gbump(eback() - gptr());
|
stringbuf_sync(0, stream_len);
|
||||||
int res = (0377 & buf[rpos]);
|
else
|
||||||
rpos += s;
|
stringbuf_sync(0, 0);
|
||||||
return res;
|
}
|
||||||
}
|
|
||||||
|
private:
|
||||||
#endif /* not __STRSTREAM__ */
|
ios::open_mode mode;
|
||||||
|
char_type* stream;
|
||||||
|
streamsize stream_len;
|
||||||
|
};
|
||||||
|
|
||||||
|
class istringstream : public istream {
|
||||||
|
public:
|
||||||
|
typedef char char_type;
|
||||||
|
typedef int int_type;
|
||||||
|
typedef streampos pos_type;
|
||||||
|
typedef streamoff off_type;
|
||||||
|
|
||||||
|
explicit
|
||||||
|
istringstream(int which=ios::in)
|
||||||
|
: istream(&sb), sb(which | ios::in)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
explicit
|
||||||
|
istringstream(const string& str, int which=ios::in)
|
||||||
|
: istream(&sb), sb(str, which | ios::in)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
stringbuf*
|
||||||
|
rdbuf() const
|
||||||
|
{
|
||||||
|
return const_cast<stringbuf*>(&sb);
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
str() const
|
||||||
|
{
|
||||||
|
return rdbuf()->str();
|
||||||
|
}
|
||||||
|
void
|
||||||
|
str(const string& s)
|
||||||
|
{
|
||||||
|
rdbuf()->str(s);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
stringbuf sb;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ostringstream : public ostream {
|
||||||
|
public:
|
||||||
|
typedef char char_type;
|
||||||
|
typedef int int_type;
|
||||||
|
typedef streampos pos_type;
|
||||||
|
typedef streamoff off_type;
|
||||||
|
|
||||||
|
explicit
|
||||||
|
ostringstream(int which=ios::out)
|
||||||
|
: ostream(&sb), sb(which | ios::out)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
explicit
|
||||||
|
ostringstream(const string& str, int which=ios::out)
|
||||||
|
: ostream(&sb), sb(str, which | ios::out)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
stringbuf*
|
||||||
|
rdbuf() const
|
||||||
|
{
|
||||||
|
return const_cast<stringbuf*>(&sb);
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
str() const
|
||||||
|
{
|
||||||
|
return rdbuf()->str();
|
||||||
|
}
|
||||||
|
|
||||||
|
void str(const string& s)
|
||||||
|
{
|
||||||
|
rdbuf()->str(s);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
stringbuf sb;
|
||||||
|
};
|
||||||
|
|
||||||
|
class stringstream : public iostream {
|
||||||
|
public:
|
||||||
|
typedef char char_type;
|
||||||
|
typedef int int_type;
|
||||||
|
typedef streampos pos_type;
|
||||||
|
typedef streamoff off_type;
|
||||||
|
|
||||||
|
explicit
|
||||||
|
stringstream(int which=ios::out|ios::in)
|
||||||
|
: iostream(&sb), sb(which)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
explicit
|
||||||
|
stringstream(const string& str, int which=ios::out|ios::in)
|
||||||
|
: iostream(&sb), sb(str, which)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
stringbuf*
|
||||||
|
rdbuf() const
|
||||||
|
{
|
||||||
|
return const_cast<stringbuf*>(&sb);
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
str() const
|
||||||
|
{
|
||||||
|
return rdbuf()->str();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
str(const string& s)
|
||||||
|
{
|
||||||
|
rdbuf()->str(s);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
stringbuf sb;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* not __STRSTREAM__ */
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
|
||||||
|
|
||||||
|
* gcc-2.95.3 Released.
|
||||||
|
|
||||||
1999-11-06 Martin v. Löwis <loewis@informatik.hu-berlin.de>
|
1999-11-06 Martin v. Löwis <loewis@informatik.hu-berlin.de>
|
||||||
|
|
||||||
* bitset (class bitset): Declare reference as our friend.
|
* bitset (class bitset): Declare reference as our friend.
|
||||||
|
@ -342,7 +342,7 @@ class _Deque_base
|
|||||||
_Base;
|
_Base;
|
||||||
typedef typename _Base::allocator_type allocator_type;
|
typedef typename _Base::allocator_type allocator_type;
|
||||||
typedef _Deque_iterator<_Tp,_Tp&,_Tp*,__bufsiz> iterator;
|
typedef _Deque_iterator<_Tp,_Tp&,_Tp*,__bufsiz> iterator;
|
||||||
typedef _Deque_iterator<_Tp,const _Tp&,const _Tp&, __bufsiz> const_iterator;
|
typedef _Deque_iterator<_Tp,const _Tp&,const _Tp*, __bufsiz> const_iterator;
|
||||||
|
|
||||||
_Deque_base(const allocator_type& __a, size_t __num_elements)
|
_Deque_base(const allocator_type& __a, size_t __num_elements)
|
||||||
: _Base(__a), _M_start(), _M_finish()
|
: _Base(__a), _M_start(), _M_finish()
|
||||||
@ -815,7 +815,7 @@ class deque : protected _Deque_base<_Tp, _Alloc, __bufsiz> {
|
|||||||
iterator __next = __pos;
|
iterator __next = __pos;
|
||||||
++__next;
|
++__next;
|
||||||
difference_type __index = __pos - _M_start;
|
difference_type __index = __pos - _M_start;
|
||||||
if (__index < (size() >> 1)) {
|
if (static_cast<size_type>(__index) < (size() >> 1)) {
|
||||||
copy_backward(_M_start, __pos, __next);
|
copy_backward(_M_start, __pos, __next);
|
||||||
pop_front();
|
pop_front();
|
||||||
}
|
}
|
||||||
@ -1048,7 +1048,7 @@ deque<_Tp,_Alloc,__bufsize>::erase(iterator __first, iterator __last)
|
|||||||
else {
|
else {
|
||||||
difference_type __n = __last - __first;
|
difference_type __n = __last - __first;
|
||||||
difference_type __elems_before = __first - _M_start;
|
difference_type __elems_before = __first - _M_start;
|
||||||
if (__elems_before < (size() - __n) / 2) {
|
if (static_cast<size_type>(__elems_before) < (size() - __n) / 2) {
|
||||||
copy_backward(_M_start, __first, __last);
|
copy_backward(_M_start, __first, __last);
|
||||||
iterator __new_start = _M_start + __n;
|
iterator __new_start = _M_start + __n;
|
||||||
destroy(_M_start, __new_start);
|
destroy(_M_start, __new_start);
|
||||||
@ -1282,7 +1282,7 @@ deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
|
|||||||
{
|
{
|
||||||
difference_type __index = __pos - _M_start;
|
difference_type __index = __pos - _M_start;
|
||||||
value_type __x_copy = __x;
|
value_type __x_copy = __x;
|
||||||
if (__index < size() / 2) {
|
if (static_cast<size_type>(__index) < size() / 2) {
|
||||||
push_front(front());
|
push_front(front());
|
||||||
iterator __front1 = _M_start;
|
iterator __front1 = _M_start;
|
||||||
++__front1;
|
++__front1;
|
||||||
@ -1311,7 +1311,7 @@ typename deque<_Tp,_Alloc,__bufsize>::iterator
|
|||||||
deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos)
|
deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos)
|
||||||
{
|
{
|
||||||
difference_type __index = __pos - _M_start;
|
difference_type __index = __pos - _M_start;
|
||||||
if (__index < size() / 2) {
|
if (static_cast<size_type>(__index) < size() / 2) {
|
||||||
push_front(front());
|
push_front(front());
|
||||||
iterator __front1 = _M_start;
|
iterator __front1 = _M_start;
|
||||||
++__front1;
|
++__front1;
|
||||||
@ -1344,7 +1344,7 @@ deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
|
|||||||
const difference_type __elems_before = __pos - _M_start;
|
const difference_type __elems_before = __pos - _M_start;
|
||||||
size_type __length = size();
|
size_type __length = size();
|
||||||
value_type __x_copy = __x;
|
value_type __x_copy = __x;
|
||||||
if (__elems_before < __length / 2) {
|
if (static_cast<size_type>(__elems_before) < __length / 2) {
|
||||||
iterator __new_start = _M_reserve_elements_at_front(__n);
|
iterator __new_start = _M_reserve_elements_at_front(__n);
|
||||||
iterator __old_start = _M_start;
|
iterator __old_start = _M_start;
|
||||||
__pos = _M_start + __elems_before;
|
__pos = _M_start + __elems_before;
|
||||||
@ -1403,7 +1403,7 @@ deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
|
|||||||
{
|
{
|
||||||
const difference_type __elemsbefore = __pos - _M_start;
|
const difference_type __elemsbefore = __pos - _M_start;
|
||||||
size_type __length = size();
|
size_type __length = size();
|
||||||
if (__elemsbefore < __length / 2) {
|
if (static_cast<size_type>(__elemsbefore) < __length / 2) {
|
||||||
iterator __new_start = _M_reserve_elements_at_front(__n);
|
iterator __new_start = _M_reserve_elements_at_front(__n);
|
||||||
iterator __old_start = _M_start;
|
iterator __old_start = _M_start;
|
||||||
__pos = _M_start + __elemsbefore;
|
__pos = _M_start + __elemsbefore;
|
||||||
|
@ -386,8 +386,8 @@ struct _Rope_RopeRep : public _Rope_rep_base<_CharT,_Alloc> {
|
|||||||
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
|
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
|
||||||
_Rope_RopeRep(_Tag __t, int __d, bool __b, size_t __size,
|
_Rope_RopeRep(_Tag __t, int __d, bool __b, size_t __size,
|
||||||
allocator_type __a)
|
allocator_type __a)
|
||||||
: _M_tag(__t), _M_depth(__d), _M_is_balanced(__b), _M_c_string(0),
|
: _Rope_rep_base<_CharT,_Alloc>(__size, __a),
|
||||||
_Rope_rep_base<_CharT,_Alloc>(__size, __a)
|
_M_tag(__t), _M_depth(__d), _M_is_balanced(__b), _M_c_string(0)
|
||||||
{
|
{
|
||||||
# ifndef __GC
|
# ifndef __GC
|
||||||
_M_refcount = 1;
|
_M_refcount = 1;
|
||||||
@ -562,8 +562,8 @@ struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> {
|
|||||||
/* doesn't matter. */
|
/* doesn't matter. */
|
||||||
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
|
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
|
||||||
_Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t __size, allocator_type __a)
|
_Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t __size, allocator_type __a)
|
||||||
: _M_data(__d)
|
: _Rope_RopeRep<_CharT,_Alloc>(_S_leaf, 0, true, __size, __a),
|
||||||
, _Rope_RopeRep<_CharT,_Alloc>(_S_leaf, 0, true, __size, __a)
|
_M_data(__d)
|
||||||
{
|
{
|
||||||
__stl_assert(__size > 0);
|
__stl_assert(__size > 0);
|
||||||
if (_S_is_basic_char_type((_CharT *)0)) {
|
if (_S_is_basic_char_type((_CharT *)0)) {
|
||||||
@ -593,10 +593,10 @@ struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT,_Alloc> {
|
|||||||
_Rope_RopeConcatenation(_Rope_RopeRep<_CharT,_Alloc>* __l,
|
_Rope_RopeConcatenation(_Rope_RopeRep<_CharT,_Alloc>* __l,
|
||||||
_Rope_RopeRep<_CharT,_Alloc>* __r,
|
_Rope_RopeRep<_CharT,_Alloc>* __r,
|
||||||
allocator_type __a)
|
allocator_type __a)
|
||||||
: _M_left(__l), _M_right(__r)
|
: _Rope_RopeRep<_CharT,_Alloc>(
|
||||||
, _Rope_RopeRep<_CharT,_Alloc>(
|
|
||||||
_S_concat, max(__l->_M_depth, __r->_M_depth) + 1, false,
|
_S_concat, max(__l->_M_depth, __r->_M_depth) + 1, false,
|
||||||
__l->_M_size + __r->_M_size, __a)
|
__l->_M_size + __r->_M_size, __a),
|
||||||
|
_M_left(__l), _M_right(__r)
|
||||||
{}
|
{}
|
||||||
# ifndef __GC
|
# ifndef __GC
|
||||||
~_Rope_RopeConcatenation() {
|
~_Rope_RopeConcatenation() {
|
||||||
@ -629,11 +629,12 @@ struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT,_Alloc> {
|
|||||||
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
|
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
|
||||||
_Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size,
|
_Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size,
|
||||||
bool __d, allocator_type __a)
|
bool __d, allocator_type __a)
|
||||||
: _M_fn(__f)
|
:_Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a),
|
||||||
|
_M_fn(__f)
|
||||||
# ifndef __GC
|
# ifndef __GC
|
||||||
, _M_delete_when_done(__d)
|
, _M_delete_when_done(__d)
|
||||||
# endif
|
# endif
|
||||||
, _Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a) {
|
{
|
||||||
__stl_assert(__size > 0);
|
__stl_assert(__size > 0);
|
||||||
# ifdef __GC
|
# ifdef __GC
|
||||||
if (__d) {
|
if (__d) {
|
||||||
@ -693,9 +694,8 @@ struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>,
|
|||||||
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
|
typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
|
||||||
_Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
|
_Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
|
||||||
size_t __l, allocator_type __a)
|
size_t __l, allocator_type __a)
|
||||||
: _M_base(__b)
|
: _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a), _M_base(__b)
|
||||||
, _M_start(__s)
|
, _M_start(__s)
|
||||||
, _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a)
|
|
||||||
{
|
{
|
||||||
__stl_assert(__l > 0);
|
__stl_assert(__l > 0);
|
||||||
__stl_assert(__s + __l <= __b->_M_size);
|
__stl_assert(__s + __l <= __b->_M_size);
|
||||||
@ -766,16 +766,16 @@ class _Rope_char_ref_proxy {
|
|||||||
_My_rope* _M_root; // The whole rope.
|
_My_rope* _M_root; // The whole rope.
|
||||||
public:
|
public:
|
||||||
_Rope_char_ref_proxy(_My_rope* __r, size_t __p) :
|
_Rope_char_ref_proxy(_My_rope* __r, size_t __p) :
|
||||||
_M_pos(__p), _M_root(__r), _M_current_valid(false) {}
|
_M_pos(__p), _M_current_valid(false), _M_root(__r) {}
|
||||||
_Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x) :
|
_Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x) :
|
||||||
_M_pos(__x._M_pos), _M_root(__x._M_root), _M_current_valid(false) {}
|
_M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {}
|
||||||
// Don't preserve cache if the reference can outlive the
|
// Don't preserve cache if the reference can outlive the
|
||||||
// expression. We claim that's not possible without calling
|
// expression. We claim that's not possible without calling
|
||||||
// a copy constructor or generating reference to a proxy
|
// a copy constructor or generating reference to a proxy
|
||||||
// reference. We declare the latter to have undefined semantics.
|
// reference. We declare the latter to have undefined semantics.
|
||||||
_Rope_char_ref_proxy(_My_rope* __r, size_t __p,
|
_Rope_char_ref_proxy(_My_rope* __r, size_t __p,
|
||||||
_CharT __c) :
|
_CharT __c) :
|
||||||
_M_pos(__p), _M_root(__r), _M_current(__c), _M_current_valid(true) {}
|
_M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {}
|
||||||
inline operator _CharT () const;
|
inline operator _CharT () const;
|
||||||
_Rope_char_ref_proxy& operator= (_CharT __c);
|
_Rope_char_ref_proxy& operator= (_CharT __c);
|
||||||
_Rope_char_ptr_proxy<_CharT,_Alloc> operator& () const;
|
_Rope_char_ptr_proxy<_CharT,_Alloc> operator& () const;
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
|
||||||
|
|
||||||
|
* gcc-2.95.3 Released.
|
||||||
|
|
||||||
Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
|
Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
|
||||||
|
|
||||||
* gcc-2.95.2 Released.
|
* gcc-2.95.2 Released.
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
|
||||||
|
|
||||||
|
* gcc-2.95.3 Released.
|
||||||
|
|
||||||
Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
|
Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
|
||||||
|
|
||||||
* gcc-2.95.2 Released.
|
* gcc-2.95.2 Released.
|
||||||
|
Loading…
Reference in New Issue
Block a user