1*f8a1b7d9SAlexander Kabaev // Versatile string forward -*- C++ -*- 2*f8a1b7d9SAlexander Kabaev 3*f8a1b7d9SAlexander Kabaev // Copyright (C) 2005 Free Software Foundation, Inc. 4*f8a1b7d9SAlexander Kabaev // 5*f8a1b7d9SAlexander Kabaev // This file is part of the GNU ISO C++ Library. This library is free 6*f8a1b7d9SAlexander Kabaev // software; you can redistribute it and/or modify it under the 7*f8a1b7d9SAlexander Kabaev // terms of the GNU General Public License as published by the 8*f8a1b7d9SAlexander Kabaev // Free Software Foundation; either version 2, or (at your option) 9*f8a1b7d9SAlexander Kabaev // any later version. 10*f8a1b7d9SAlexander Kabaev 11*f8a1b7d9SAlexander Kabaev // This library is distributed in the hope that it will be useful, 12*f8a1b7d9SAlexander Kabaev // but WITHOUT ANY WARRANTY; without even the implied warranty of 13*f8a1b7d9SAlexander Kabaev // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*f8a1b7d9SAlexander Kabaev // GNU General Public License for more details. 15*f8a1b7d9SAlexander Kabaev 16*f8a1b7d9SAlexander Kabaev // You should have received a copy of the GNU General Public License along 17*f8a1b7d9SAlexander Kabaev // with this library; see the file COPYING. If not, write to the Free 18*f8a1b7d9SAlexander Kabaev // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19*f8a1b7d9SAlexander Kabaev // USA. 20*f8a1b7d9SAlexander Kabaev 21*f8a1b7d9SAlexander Kabaev // As a special exception, you may use this file as part of a free software 22*f8a1b7d9SAlexander Kabaev // library without restriction. Specifically, if other files instantiate 23*f8a1b7d9SAlexander Kabaev // templates or use macros or inline functions from this file, or you compile 24*f8a1b7d9SAlexander Kabaev // this file and link it with other files to produce an executable, this 25*f8a1b7d9SAlexander Kabaev // file does not by itself cause the resulting executable to be covered by 26*f8a1b7d9SAlexander Kabaev // the GNU General Public License. This exception does not however 27*f8a1b7d9SAlexander Kabaev // invalidate any other reasons why the executable file might be covered by 28*f8a1b7d9SAlexander Kabaev // the GNU General Public License. 29*f8a1b7d9SAlexander Kabaev 30*f8a1b7d9SAlexander Kabaev /** @file ext/vstring_fwd.h 31*f8a1b7d9SAlexander Kabaev * This file is a GNU extension to the Standard C++ Library. 32*f8a1b7d9SAlexander Kabaev * This is an internal header file, included by other library headers. 33*f8a1b7d9SAlexander Kabaev * You should not attempt to use it directly. 34*f8a1b7d9SAlexander Kabaev */ 35*f8a1b7d9SAlexander Kabaev 36*f8a1b7d9SAlexander Kabaev #ifndef _VSTRING_FWD_H 37*f8a1b7d9SAlexander Kabaev #define _VSTRING_FWD_H 1 38*f8a1b7d9SAlexander Kabaev 39*f8a1b7d9SAlexander Kabaev #pragma GCC system_header 40*f8a1b7d9SAlexander Kabaev 41*f8a1b7d9SAlexander Kabaev #include <bits/c++config.h> 42*f8a1b7d9SAlexander Kabaev #include <bits/char_traits.h> 43*f8a1b7d9SAlexander Kabaev #include <memory> // For allocator. 44*f8a1b7d9SAlexander Kabaev 45*f8a1b7d9SAlexander Kabaev _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) 46*f8a1b7d9SAlexander Kabaev 47*f8a1b7d9SAlexander Kabaev template<typename _CharT, typename _Traits, typename _Alloc> 48*f8a1b7d9SAlexander Kabaev class __sso_string_base; 49*f8a1b7d9SAlexander Kabaev 50*f8a1b7d9SAlexander Kabaev template<typename _CharT, typename _Traits, typename _Alloc> 51*f8a1b7d9SAlexander Kabaev class __rc_string_base; 52*f8a1b7d9SAlexander Kabaev 53*f8a1b7d9SAlexander Kabaev template<typename _CharT, typename _Traits = std::char_traits<_CharT>, 54*f8a1b7d9SAlexander Kabaev typename _Alloc = std::allocator<_CharT>, 55*f8a1b7d9SAlexander Kabaev template 56*f8a1b7d9SAlexander Kabaev <typename, typename, typename> class _Base = __sso_string_base> 57*f8a1b7d9SAlexander Kabaev class __versa_string; 58*f8a1b7d9SAlexander Kabaev 59*f8a1b7d9SAlexander Kabaev typedef __versa_string<char> __vstring; 60*f8a1b7d9SAlexander Kabaev typedef __vstring __sso_string; 61*f8a1b7d9SAlexander Kabaev typedef 62*f8a1b7d9SAlexander Kabaev __versa_string<char, std::char_traits<char>, 63*f8a1b7d9SAlexander Kabaev std::allocator<char>, __rc_string_base> __rc_string; 64*f8a1b7d9SAlexander Kabaev 65*f8a1b7d9SAlexander Kabaev #ifdef _GLIBCXX_USE_WCHAR_T 66*f8a1b7d9SAlexander Kabaev typedef __versa_string<wchar_t> __wvstring; 67*f8a1b7d9SAlexander Kabaev typedef __wvstring __wsso_string; 68*f8a1b7d9SAlexander Kabaev typedef 69*f8a1b7d9SAlexander Kabaev __versa_string<wchar_t, std::char_traits<wchar_t>, 70*f8a1b7d9SAlexander Kabaev std::allocator<wchar_t>, __rc_string_base> __wrc_string; 71*f8a1b7d9SAlexander Kabaev #endif 72*f8a1b7d9SAlexander Kabaev 73*f8a1b7d9SAlexander Kabaev _GLIBCXX_END_NAMESPACE 74*f8a1b7d9SAlexander Kabaev 75*f8a1b7d9SAlexander Kabaev #endif /* _VSTRING_FWD_H */ 76