// -*- C++ -*- // Heavily inspired by /usr/include/c++/4.1/bits // // Copyright (C) 2001, 2002 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the // Free Software Foundation; either version 2, or (at your option) // any later version. #ifndef STRFWD_H #define STRFWD_H // This includes does nothing but defining _LIBCPP_VERSION // if libc++ is used (rather than libstdc++) - we first // check if we have at least a c++03 standard before // including the file #if (__cplusplus > 199711L) #include #endif #ifdef USE_WCHAR_T // Prefer this if possible because GNU libstdc++ has usable // std::ctype locale facets but not // std::ctype. gcc older than 3.4 is also missing // usable std::char_traits. namespace lyx { typedef wchar_t char_type; } #else #include namespace lyx { typedef boost::uint32_t char_type; } #endif // Forward definitions do not work with libc++ #ifdef _LIBCPP_VERSION #include #else namespace std { template class allocator; template struct char_traits; template<> struct char_traits; #ifdef USE_WCHAR_T template<> struct char_traits; #endif template class basic_string; typedef basic_string, allocator > string; template class basic_istream; template class basic_ostream; template class basic_ostringstream; typedef basic_istream > istream; typedef basic_ostream > ostream; typedef basic_ostringstream, allocator > ostringstream; } // namepace std #endif namespace lyx { /// String type for storing the main text in UCS4 encoding typedef std::basic_string, std::allocator > docstring; /// Base class for UCS4 input streams typedef std::basic_istream > idocstream; /// Base class for UCS4 output streams typedef std::basic_ostream > odocstream; /// UCS4 output stringstream typedef std::basic_ostringstream, std::allocator > odocstringstream; #if ! defined(USE_WCHAR_T) extern odocstream & operator<<(odocstream &, char); #endif // defined in lstrings.cpp docstring const & empty_docstring(); std::string const & empty_string(); // defined in docstring.cpp bool operator==(docstring const &, char const *); } // namespace lyx #endif