string-inst.cc revision 285830
1135768Strhodes// Components for manipulating sequences of characters -*- C++ -*- 2135768Strhodes 3135768Strhodes// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 4135768Strhodes// Free Software Foundation, Inc. 5135768Strhodes// 6135768Strhodes// This file is part of the GNU ISO C++ Library. This library is free 7135768Strhodes// software; you can redistribute it and/or modify it under the 8135768Strhodes// terms of the GNU General Public License as published by the 9135768Strhodes// Free Software Foundation; either version 2, or (at your option) 10135768Strhodes// any later version. 11135768Strhodes 12135768Strhodes// This library is distributed in the hope that it will be useful, 13135768Strhodes// but WITHOUT ANY WARRANTY; without even the implied warranty of 14135768Strhodes// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15135768Strhodes// GNU General Public License for more details. 16135768Strhodes 17135768Strhodes// You should have received a copy of the GNU General Public License along 18135768Strhodes// with this library; see the file COPYING. If not, write to the Free 19135768Strhodes// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 20135768Strhodes// USA. 21135768Strhodes 22135768Strhodes// As a special exception, you may use this file as part of a free software 23135768Strhodes// library without restriction. Specifically, if other files instantiate 24135768Strhodes// templates or use macros or inline functions from this file, or you compile 25135768Strhodes// this file and link it with other files to produce an executable, this 26135768Strhodes// file does not by itself cause the resulting executable to be covered by 27135768Strhodes// the GNU General Public License. This exception does not however 28135768Strhodes// invalidate any other reasons why the executable file might be covered by 29135768Strhodes// the GNU General Public License. 30135768Strhodes 31135768Strhodes// 32135768Strhodes// ISO C++ 14882: 21 Strings library 33135768Strhodes// 34135768Strhodes 35135768Strhodes// Written by Jason Merrill based upon the specification by Takanori Adachi 36135768Strhodes// in ANSI X3J16/94-0013R2. Rewritten by Nathan Myers. 37135768Strhodes 38135768Strhodes#include <string> 39135768Strhodes 40135768Strhodes// Instantiation configuration. 41135768Strhodes#ifndef C 42135768Strhodes# define C char 43135768Strhodes#endif 44135768Strhodes 45135768Strhodes_GLIBCXX_BEGIN_NAMESPACE(std) 46165009Sharti 47165009Sharti typedef basic_string<C> S; 48135768Strhodes 49135768Strhodes template class basic_string<C>; 50135768Strhodes template S operator+(const C*, const S&); 51135768Strhodes template S operator+(C, const S&); 52135768Strhodes template S operator+(const S&, const S&); 53135768Strhodes 54135768Strhodes // Only one template keyword allowed here. 55135768Strhodes // See core issue #46 (NAD) 56135768Strhodes // http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_closed.html#46 57135768Strhodes template 58135768Strhodes S::basic_string(C*, C*, const allocator<C>&); 59135768Strhodes 60135768Strhodes template 61135768Strhodes S::basic_string(const C*, const C*, const allocator<C>&); 62135768Strhodes 63135768Strhodes template 64135768Strhodes S::basic_string(S::iterator, S::iterator, const allocator<C>&); 65135768Strhodes 66135768Strhodes template 67135768Strhodes C* 68135768Strhodes S::_S_construct(S::iterator, S::iterator, 69 const allocator<C>&, forward_iterator_tag); 70 71 template 72 C* 73 S::_S_construct(C*, C*, const allocator<C>&, forward_iterator_tag); 74 75 template 76 C* 77 S::_S_construct(const C*, const C*, const allocator<C>&, 78 forward_iterator_tag); 79 80_GLIBCXX_END_NAMESPACE 81 82_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) 83 84 using std::S; 85 template bool operator==(const S::iterator&, const S::iterator&); 86 template bool operator==(const S::const_iterator&, const S::const_iterator&); 87 88_GLIBCXX_END_NAMESPACE 89