103a78d15Sespie // Explicit instantiation file. 203a78d15Sespie 303a78d15Sespie // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 403a78d15Sespie // Free Software Foundation, Inc. 503a78d15Sespie // 603a78d15Sespie // This file is part of the GNU ISO C++ Library. This library is free 703a78d15Sespie // software; you can redistribute it and/or modify it under the 803a78d15Sespie // terms of the GNU General Public License as published by the 903a78d15Sespie // Free Software Foundation; either version 2, or (at your option) 1003a78d15Sespie // any later version. 1103a78d15Sespie 1203a78d15Sespie // This library is distributed in the hope that it will be useful, 1303a78d15Sespie // but WITHOUT ANY WARRANTY; without even the implied warranty of 1403a78d15Sespie // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1503a78d15Sespie // GNU General Public License for more details. 1603a78d15Sespie 1703a78d15Sespie // You should have received a copy of the GNU General Public License along 1803a78d15Sespie // with this library; see the file COPYING. If not, write to the Free 1903a78d15Sespie // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 2003a78d15Sespie // USA. 2103a78d15Sespie 2203a78d15Sespie // As a special exception, you may use this file as part of a free software 2303a78d15Sespie // library without restriction. Specifically, if other files instantiate 2403a78d15Sespie // templates or use macros or inline functions from this file, or you compile 2503a78d15Sespie // this file and link it with other files to produce an executable, this 2603a78d15Sespie // file does not by itself cause the resulting executable to be covered by 2703a78d15Sespie // the GNU General Public License. This exception does not however 2803a78d15Sespie // invalidate any other reasons why the executable file might be covered by 2903a78d15Sespie // the GNU General Public License. 3003a78d15Sespie 3103a78d15Sespie // 3203a78d15Sespie // ISO C++ 14882: 3303a78d15Sespie // 3403a78d15Sespie 3503a78d15Sespie #include <string> 3603a78d15Sespie #include <istream> 3703a78d15Sespie #include <ostream> 3803a78d15Sespie #include <algorithm> 3903a78d15Sespie #include <vector> 4003a78d15Sespie #include <bits/atomicity.h> 4103a78d15Sespie 4203a78d15Sespie namespace std 4303a78d15Sespie { 4403a78d15Sespie // string related to iostreams 4503a78d15Sespie template 4603a78d15Sespie basic_istream<char>& 4703a78d15Sespie operator>>(basic_istream<char>&, string&); 4803a78d15Sespie template 4903a78d15Sespie basic_ostream<char>& 5003a78d15Sespie operator<<(basic_ostream<char>&, const string&); 5103a78d15Sespie template 5203a78d15Sespie basic_istream<char>& 5303a78d15Sespie getline(basic_istream<char>&, string&, char); 5403a78d15Sespie template 5503a78d15Sespie basic_istream<char>& 5603a78d15Sespie getline(basic_istream<char>&, string&); 57*c2fb3212Sespie #if defined(_GLIBCPP_USE_WCHAR_T) || defined(_GLIBCPP_USE_TYPE_WCHAR_T) 5803a78d15Sespie template 5903a78d15Sespie basic_istream<wchar_t>& 6003a78d15Sespie operator>>(basic_istream<wchar_t>&, wstring&); 6103a78d15Sespie template 6203a78d15Sespie basic_ostream<wchar_t>& 6303a78d15Sespie operator<<(basic_ostream<wchar_t>&, const wstring&); 6403a78d15Sespie template 6503a78d15Sespie basic_istream<wchar_t>& 6603a78d15Sespie getline(basic_istream<wchar_t>&, wstring&, wchar_t); 6703a78d15Sespie template 6803a78d15Sespie basic_istream<wchar_t>& 6903a78d15Sespie getline(basic_istream<wchar_t>&, wstring&); 7003a78d15Sespie #endif 7103a78d15Sespie #ifdef _GLIBCPP_INST_ATOMICITY_LOCK 7203a78d15Sespie template volatile int __Atomicity_lock<0>::_S_atomicity_lock; 7303a78d15Sespie #endif 7403a78d15Sespie 7503a78d15Sespie #if 1 7603a78d15Sespie // XXX 7703a78d15Sespie // 2002-05-24 These are no longer needed and should eventually be deleted. 7803a78d15Sespie template 7903a78d15Sespie string* 8003a78d15Sespie __uninitialized_fill_n_aux<string*, size_t, string> 8103a78d15Sespie (string*, size_t, string const &, __false_type); 8203a78d15Sespie 8303a78d15Sespie template 8403a78d15Sespie string* 8503a78d15Sespie __uninitialized_copy_aux<vector<string>::const_iterator, string *> 8603a78d15Sespie (vector<string>::const_iterator, vector<string>::const_iterator, 8703a78d15Sespie string*, __false_type); 8803a78d15Sespie #endif 8903a78d15Sespie } // namespace std 9003a78d15Sespie 9103a78d15Sespie #ifdef _GLIBCPP_NEED_GENERIC_MUTEX 9203a78d15Sespie namespace __gnu_cxx 9303a78d15Sespie { 9403a78d15Sespie #ifdef __GTHREAD_MUTEX_INIT 9503a78d15Sespie __gthread_mutex_t _Atomic_add_mutex = __GTHREAD_MUTEX_INIT; 9603a78d15Sespie #else 9703a78d15Sespie // generic atomicity.h without static initialization 9803a78d15Sespie __gthread_mutex_t _Atomic_add_mutex; 9903a78d15Sespie __gthread_once_t _Atomic_add_mutex_once = __GTHREAD_ONCE_INIT; 10003a78d15Sespie void __gthread_atomic_add_mutex_once() 10103a78d15Sespie { 10203a78d15Sespie __GTHREAD_MUTEX_INIT_FUNCTION (&_Atomic_add_mutex); 10303a78d15Sespie } 10403a78d15Sespie #endif 10503a78d15Sespie } // namespace __gnu_cxx 10603a78d15Sespie #endif // _GLIBCPP_NEED_GLOBAL_MUTEX 10703a78d15Sespie 108