string-inst.cc

00001 // Components for manipulating sequences of characters -*- C++ -*-
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: 21  Strings library
00033 //
00034 
00035 // Written by Jason Merrill based upon the specification by Takanori Adachi
00036 // in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers.
00037 
00038 #include <string>
00039 
00040 // Instantiation configuration.
00041 #ifndef C
00042 # define C char
00043 #endif
00044 
00045 namespace std 
00046 {
00047   typedef basic_string<C> S;
00048 
00049   template class basic_string<C>;
00050   template S operator+(const C*, const S&);
00051   template S operator+(C, const S&);
00052   template S operator+(const S&, const S&);
00053 } // namespace std
00054 
00055 namespace __gnu_cxx
00056 {
00057   using std::S;
00058   template bool operator==(const S::iterator&, const S::iterator&);
00059   template bool operator==(const S::const_iterator&, const S::const_iterator&);
00060 }
00061 
00062 namespace std
00063 {
00064   // Only one template keyword allowed here. 
00065   // See core issue #46 (NAD)
00066   // http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_closed.html#46
00067   template
00068     S::basic_string(C*, C*, const allocator<C>&);
00069 
00070   template
00071     S::basic_string(const C*, const C*, const allocator<C>&);
00072 
00073   template 
00074     S::basic_string(S::iterator, S::iterator, const allocator<C>&);
00075 
00076   template 
00077     S::basic_string(S::const_iterator, S::const_iterator, const allocator<C>&);
00078 
00079   template 
00080     S& 
00081     S::_M_replace(S::iterator, S::iterator, S::iterator, S::iterator, 
00082           input_iterator_tag);
00083 
00084   template 
00085     S& 
00086     S::_M_replace(S::iterator, S::iterator, S::const_iterator, 
00087           S::const_iterator, input_iterator_tag);
00088 
00089   template
00090     S&
00091     S::_M_replace(S::iterator, S::iterator, C*, C*, input_iterator_tag); 
00092 
00093   template
00094     S&
00095     S::_M_replace(S::iterator, S::iterator, const C*, const C*, 
00096           input_iterator_tag);  
00097 
00098   template 
00099     S& 
00100     S::_M_replace_safe(S::iterator, S::iterator, S::iterator, S::iterator);
00101 
00102   template 
00103     S& 
00104     S::_M_replace_safe(S::iterator, S::iterator, S::const_iterator, 
00105           S::const_iterator);
00106 
00107   template
00108     S&
00109     S::_M_replace_safe(S::iterator, S::iterator, C*, C*); 
00110 
00111   template
00112     S&
00113     S::_M_replace_safe(S::iterator, S::iterator, const C*, const C*);  
00114 
00115   template 
00116     C* 
00117     S::_S_construct(S::iterator, S::iterator, 
00118             const allocator<C>&, forward_iterator_tag);
00119 
00120   template 
00121     C* 
00122     S::_S_construct(S::const_iterator, S::const_iterator, 
00123             const allocator<C>&, forward_iterator_tag);
00124 
00125   template
00126     C*
00127     S::_S_construct(C*, C*, const allocator<C>&, forward_iterator_tag);
00128 
00129   template
00130     C*
00131     S::_S_construct(const C*, const C*, const allocator<C>&,
00132             forward_iterator_tag);
00133 
00134   template
00135     void
00136     __destroy_aux<S*>(S*, S*, __false_type);
00137 } // namespace std

Generated on Thu Feb 10 23:23:00 2005 for libstdc++-v3 Source by  doxygen 1.4.0