This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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
     }
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]