straits.h (is_del): Boolify with !!.
* std/straits.h (is_del): Boolify with !!. * std/bastring.cc (compare to charT*): Add rlen==n check. * std/bastring.h (Rep::grab): Add x86 atomic version. From-SVN: r35647
This commit is contained in:
parent
dcf6e6746d
commit
dc329d2938
@ -1,3 +1,12 @@
|
||||
2000-08-11 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* std/straits.h (is_del): Boolify with !!.
|
||||
|
||||
2000-08-11 "Axel Habermann" <Axel.Habermann@xtradyne.de>
|
||||
|
||||
* std/bastring.cc (compare to charT*): Add rlen==n check.
|
||||
* std/bastring.h (Rep::grab): Add x86 atomic version.
|
||||
|
||||
2000-8-4 David E O'Brien <obrien@FreeBSD.org>
|
||||
|
||||
* std/mask_array.h (mask_array): Rename template type
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Member templates for the -*- C++ -*- string classes.
|
||||
// Copyright (C) 1994, 1999 Free Software Foundation
|
||||
// Copyright (C) 1994, 1999, 2000 Free Software Foundation
|
||||
|
||||
// This file is part of the GNU ANSI C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@ -423,6 +423,8 @@ compare (const charT* s, size_type pos, size_type n) const
|
||||
int r = traits::compare (data () + pos, s, rlen);
|
||||
if (r != 0)
|
||||
return r;
|
||||
if (rlen == n)
|
||||
return 0;
|
||||
return (length () - pos) - n;
|
||||
}
|
||||
|
||||
|
@ -72,9 +72,14 @@ private:
|
||||
|
||||
charT* data () { return reinterpret_cast<charT *>(this + 1); }
|
||||
charT& operator[] (size_t s) { return data () [s]; }
|
||||
charT* grab () { if (selfish) return clone (); ++ref; return data (); }
|
||||
#if defined __i486__ || defined __i586__ || defined __i686__
|
||||
void release ()
|
||||
charT* grab () { if (selfish) return clone ();
|
||||
asm ("lock; addl %0, (%1)"
|
||||
: : "a" (1), "d" (&ref)
|
||||
: "memory");
|
||||
return data (); }
|
||||
|
||||
void release ()
|
||||
{
|
||||
size_t __val;
|
||||
// This opcode exists as a .byte instead of as a mnemonic for the
|
||||
@ -90,6 +95,7 @@ private:
|
||||
delete this;
|
||||
}
|
||||
#elif defined __sparc_v9__
|
||||
charT* grab () { if (selfish) return clone (); ++ref; return data (); }
|
||||
void release ()
|
||||
{
|
||||
size_t __newval, __oldval = ref;
|
||||
@ -111,6 +117,7 @@ private:
|
||||
delete this;
|
||||
}
|
||||
#else
|
||||
charT* grab () { if (selfish) return clone (); ++ref; return data (); }
|
||||
void release () { if (--ref == 0) delete this; }
|
||||
#endif
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Character traits template for the -*- C++ -*- string classes.
|
||||
// Copyright (C) 1994 Free Software Foundation
|
||||
// Copyright (C) 1994, 2000 Free Software Foundation
|
||||
|
||||
// This file is part of the GNU ANSI C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@ -117,7 +117,7 @@ struct string_char_traits <char> {
|
||||
static bool lt (const char_type& c1, const char_type& c2)
|
||||
{ return (c1 < c2); }
|
||||
static char_type eos () { return 0; }
|
||||
static bool is_del(char_type a) { return isspace(a); }
|
||||
static bool is_del(char_type a) { return !!isspace(a); }
|
||||
|
||||
static int compare (const char_type* s1, const char_type* s2, size_t n)
|
||||
{ return memcmp (s1, s2, n); }
|
||||
@ -145,7 +145,7 @@ struct string_char_traits <wchar_t> {
|
||||
static bool lt (const char_type& c1, const char_type& c2)
|
||||
{ return (c1 < c2); }
|
||||
static char_type eos () { return 0; }
|
||||
static bool is_del(char_type a) { return iswspace(a); }
|
||||
static bool is_del(char_type a) { return !!iswspace(a); }
|
||||
|
||||
static int compare (const char_type* s1, const char_type* s2, size_t n)
|
||||
{ return wmemcmp (s1, s2, n); }
|
||||
|
Loading…
Reference in New Issue
Block a user