misc-inst.cc

00001 // Explicit instantiation file.
00002 
00003 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
00004 // Free Software Foundation, Inc.
00005 //
00006 // This file is part of the GNU ISO C++ Library.  This library is free
00007 // software; you can redistribute it and/or modify it under the
00008 // terms of the GNU General Public License as published by the
00009 // Free Software Foundation; either version 2, or (at your option)
00010 // any later version.
00011 
00012 // This library is distributed in the hope that it will be useful,
00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 // GNU General Public License for more details.
00016 
00017 // You should have received a copy of the GNU General Public License along
00018 // with this library; see the file COPYING.  If not, write to the Free
00019 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
00020 // USA.
00021 
00022 // As a special exception, you may use this file as part of a free software
00023 // library without restriction.  Specifically, if other files instantiate
00024 // templates or use macros or inline functions from this file, or you compile
00025 // this file and link it with other files to produce an executable, this
00026 // file does not by itself cause the resulting executable to be covered by
00027 // the GNU General Public License.  This exception does not however
00028 // invalidate any other reasons why the executable file might be covered by
00029 // the GNU General Public License.
00030 
00031 //
00032 // ISO C++ 14882:
00033 //
00034 
00035 #include <string>
00036 #include <istream>
00037 #include <ostream>
00038 #include <algorithm>
00039 #include <vector>
00040 #include <bits/atomicity.h>
00041 #include <iterator>
00042 
00043 namespace std
00044 {
00045   // string related to iostreams
00046   template 
00047     basic_istream<char>& 
00048     operator>>(basic_istream<char>&, string&);
00049   template 
00050     basic_ostream<char>& 
00051     operator<<(basic_ostream<char>&, const string&);
00052   template 
00053     basic_istream<char>& 
00054     getline(basic_istream<char>&, string&, char);
00055   template 
00056     basic_istream<char>& 
00057     getline(basic_istream<char>&, string&);
00058 #ifdef _GLIBCPP_USE_WCHAR_T
00059   template 
00060     basic_istream<wchar_t>& 
00061     operator>>(basic_istream<wchar_t>&, wstring&);
00062   template 
00063     basic_ostream<wchar_t>& 
00064     operator<<(basic_ostream<wchar_t>&, const wstring&);
00065   template 
00066     basic_istream<wchar_t>& 
00067     getline(basic_istream<wchar_t>&, wstring&, wchar_t);
00068   template 
00069     basic_istream<wchar_t>& 
00070     getline(basic_istream<wchar_t>&, wstring&);
00071 #endif
00072 #ifdef _GLIBCPP_INST_ATOMICITY_LOCK
00073   template volatile int __Atomicity_lock<0>::_S_atomicity_lock;
00074 #endif
00075 
00076 #if 1
00077   // XXX
00078   // 2002-05-24 These are no longer needed and should eventually be deleted.
00079   template 
00080     string* 
00081     __uninitialized_fill_n_aux<string*, size_t, string>
00082     (string*, size_t, string const &, __false_type);
00083 
00084   template 
00085     string* 
00086     __uninitialized_copy_aux<vector<string>::const_iterator, string *>
00087     (vector<string>::const_iterator, vector<string>::const_iterator, 
00088      string*, __false_type);
00089 #endif
00090 
00091   // The Codesourcery testsuite revealed that in the hammer branch
00092   // those symbols were not exported anymore.
00093   template
00094     istreambuf_iterator<char>::int_type
00095     istreambuf_iterator<char>::_M_get() const;
00096 
00097 #ifdef _GLIBCPP_USE_WCHAR_T
00098   template
00099     istreambuf_iterator<wchar_t>::int_type
00100     istreambuf_iterator<wchar_t>::_M_get() const;
00101 #endif  
00102 
00103 } // namespace std
00104 
00105 #ifdef _GLIBCPP_NEED_GENERIC_MUTEX
00106 namespace __gnu_cxx
00107 {
00108 #ifdef __GTHREAD_MUTEX_INIT
00109   __gthread_mutex_t _Atomic_add_mutex = __GTHREAD_MUTEX_INIT;
00110 #else
00111   // generic atomicity.h without static initialization
00112   __gthread_mutex_t _Atomic_add_mutex;
00113   __gthread_once_t _Atomic_add_mutex_once = __GTHREAD_ONCE_INIT;
00114   void __gthread_atomic_add_mutex_once()
00115   {
00116     __GTHREAD_MUTEX_INIT_FUNCTION (&_Atomic_add_mutex);
00117   }
00118 #endif
00119 } // namespace __gnu_cxx
00120 #endif // _GLIBCPP_NEED_GLOBAL_MUTEX
00121 

Generated on Tue Nov 8 17:00:08 2005 for libstdc++-v3 Source by doxygen 1.3.6