1212795Sdim// Components for manipulating sequences of characters -*- C++ -*- 2212795Sdim 3212795Sdim// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 4212795Sdim// Free Software Foundation, Inc. 5212795Sdim// 6212795Sdim// This file is part of the GNU ISO C++ Library. This library is free 7212795Sdim// software; you can redistribute it and/or modify it under the 8212795Sdim// terms of the GNU General Public License as published by the 9212795Sdim// Free Software Foundation; either version 2, or (at your option) 10212795Sdim// any later version. 11212795Sdim 12212795Sdim// This library is distributed in the hope that it will be useful, 13212795Sdim// but WITHOUT ANY WARRANTY; without even the implied warranty of 14212795Sdim// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15280031Sdim// GNU General Public License for more details. 16249423Sdim 17249423Sdim// You should have received a copy of the GNU General Public License along 18218893Sdim// with this library; see the file COPYING. If not, write to the Free 19212795Sdim// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 20212795Sdim// USA. 21212795Sdim 22212795Sdim// As a special exception, you may use this file as part of a free software 23218893Sdim// library without restriction. Specifically, if other files instantiate 24218893Sdim// templates or use macros or inline functions from this file, or you compile 25218893Sdim// this file and link it with other files to produce an executable, this 26212795Sdim// file does not by itself cause the resulting executable to be covered by 27212795Sdim// the GNU General Public License. This exception does not however 28212795Sdim// invalidate any other reasons why the executable file might be covered by 29212795Sdim// the GNU General Public License. 30296417Sdim 31296417Sdim// 32296417Sdim// ISO C++ 14882: 21 Strings library 33296417Sdim// 34296417Sdim 35296417Sdim// Written by Jason Merrill based upon the specification by Takanori Adachi 36296417Sdim// in ANSI X3J16/94-0013R2. Rewritten by Nathan Myers. 37296417Sdim 38296417Sdim#include <string> 39296417Sdim 40296417Sdim// Instantiation configuration. 41296417Sdim#ifndef C 42296417Sdim# define C char 43296417Sdim#endif 44296417Sdim 45296417Sdimnamespace std 46296417Sdim{ 47296417Sdim typedef basic_string<C> S; 48296417Sdim 49296417Sdim template class basic_string<C>; 50296417Sdim template S operator+(const C*, const S&); 51296417Sdim template S operator+(C, const S&); 52296417Sdim template S operator+(const S&, const S&); 53296417Sdim 54296417Sdim // Only one template keyword allowed here. 55296417Sdim // See core issue #46 (NAD) 56296417Sdim // http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_closed.html#46 57296417Sdim template 58296417Sdim S::basic_string(C*, C*, const allocator<C>&); 59296417Sdim 60296417Sdim template 61296417Sdim S::basic_string(const C*, const C*, const allocator<C>&); 62296417Sdim 63218893Sdim template 64296417Sdim S::basic_string(S::iterator, S::iterator, const allocator<C>&); 65296417Sdim 66296417Sdim template 67296417Sdim C* 68296417Sdim S::_S_construct(S::iterator, S::iterator, 69296417Sdim const allocator<C>&, forward_iterator_tag); 70296417Sdim 71296417Sdim template 72296417Sdim C* 73296417Sdim S::_S_construct(C*, C*, const allocator<C>&, forward_iterator_tag); 74296417Sdim 75296417Sdim template 76296417Sdim C* 77296417Sdim S::_S_construct(const C*, const C*, const allocator<C>&, 78296417Sdim forward_iterator_tag); 79296417Sdim 80296417Sdim // Used in str::find. 81296417Sdim template 82296417Sdim const C* 83296417Sdim search(const C*, const C*, const C*, const C*, bool(*)(const C&, const C&)); 84296417Sdim} // namespace std 85296417Sdim 86296417Sdimnamespace __gnu_cxx 87296417Sdim{ 88296417Sdim using std::S; 89296417Sdim template bool operator==(const S::iterator&, const S::iterator&); 90296417Sdim template bool operator==(const S::const_iterator&, const S::const_iterator&); 91296417Sdim} // namespace __gnu_cxx 92296417Sdim