This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
RE: More fallout from global.cc namespace changes
- From: Danny Smith <danny_r_smith_2001 at yahoo dot co dot nz>
- To: bkoz at redhat dot com
- Cc: libstdc++ at gcc dot gnu dot org
- Date: Sun, 13 Oct 2002 13:53:37 +1000 (EST)
- Subject: RE: More fallout from global.cc namespace changes
> >
> > > The symbols are defined in namespace __gnu_cxx in globals.cc but
> declared
> > > in namespace std in stl_threads.h.
> >
> > You'll need to bump the date on the stl_threads.h copyright notice.
> You
> > could explicitly qualify the __gnu_cxx bits, or inject the names for
> > struct _STL_mutex_lock only, instead of a global injection in this
> > include file.
> >
Diff file as attachment because of long lines.
Danny
2002-10-12 Danny Smith <dannysmith@users.sourceforge.net>
* include/bits/stl_threads.h (_GLIBCPP_mutex,
_GLIBCPP_mutex_init,_GLIBCPP_mutex_address,
_GLIBCPP_mutex_address_init, _GLIBCPP_once):
Declare in namespace __gnu_cxx.
(_STL_mutex_lock::_M_initialize): Qualify __gnu_cxx
names.
Bump copyright date.
http://mobile.yahoo.com.au - Yahoo! Messenger for SMS
- Always be connected to your Messenger Friends
Index: include/bits/stl_threads.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_threads.h,v
retrieving revision 1.13
diff -u -p -r1.13 stl_threads.h
--- include/bits/stl_threads.h 4 Dec 2001 20:13:39 -0000 1.13
+++ include/bits/stl_threads.h 13 Oct 2002 03:39:08 -0000
@@ -1,6 +1,6 @@
// Threading support -*- C++ -*-
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -126,6 +126,7 @@ namespace std
return __result;
}
#endif
+} //namespace std
// Locking class. Note that this class *does not have a
// constructor*. It must be initialized either statically, with
@@ -141,13 +142,18 @@ namespace std
// functions, and no private or protected members.
#if !defined(__GTHREAD_MUTEX_INIT) && defined(__GTHREAD_MUTEX_INIT_FUNCTION)
+namespace __gnu_cxx
+{
extern __gthread_mutex_t _GLIBCPP_mutex;
extern __gthread_mutex_t *_GLIBCPP_mutex_address;
extern __gthread_once_t _GLIBCPP_once;
extern void _GLIBCPP_mutex_init (void);
extern void _GLIBCPP_mutex_address_init (void);
+}
#endif
+namespace std
+{
struct _STL_mutex_lock
{
// The class must be statically initialized with __STL_MUTEX_INITIALIZER.
@@ -164,22 +170,24 @@ namespace std
// There should be no code in this path given the usage rules above.
#elif defined(__GTHREAD_MUTEX_INIT_FUNCTION)
if (_M_init_flag) return;
- if (__gthread_once (&_GLIBCPP_once, _GLIBCPP_mutex_init) != 0
+ if (__gthread_once (&__gnu_cxx::_GLIBCPP_once,
+ __gnu_cxx::_GLIBCPP_mutex_init) != 0
&& __gthread_active_p ())
abort ();
- __gthread_mutex_lock (&_GLIBCPP_mutex);
+ __gthread_mutex_lock (&__gnu_cxx::_GLIBCPP_mutex);
if (!_M_init_flag)
{
// Even though we have a global lock, we use __gthread_once to be
// absolutely certain the _M_lock mutex is only initialized once on
// multiprocessor systems.
- _GLIBCPP_mutex_address = &_M_lock;
- if (__gthread_once (&_M_once, _GLIBCPP_mutex_address_init) != 0
+ __gnu_cxx::_GLIBCPP_mutex_address = &_M_lock;
+ if (__gthread_once (&_M_once,
+ __gnu_cxx::_GLIBCPP_mutex_address_init) != 0
&& __gthread_active_p ())
abort ();
_M_init_flag = 1;
}
- __gthread_mutex_unlock (&_GLIBCPP_mutex);
+ __gthread_mutex_unlock (&__gnu_cxx::_GLIBCPP_mutex);
#endif
}