2007-10-31 22:40:34 +00:00
|
|
|
// -*- C++ -*-
|
2007-11-09 10:54:45 +00:00
|
|
|
|
|
|
|
// 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.
|
2007-10-31 22:40:34 +00:00
|
|
|
|
|
|
|
#ifndef STRFWD_H
|
|
|
|
#define STRFWD_H
|
|
|
|
|
|
|
|
#ifdef USE_WCHAR_T
|
|
|
|
|
|
|
|
// Prefer this if possible because GNU libstdc++ has usable
|
|
|
|
// std::ctype<wchar_t> locale facets but not
|
|
|
|
// std::ctype<boost::uint32_t>. gcc older than 3.4 is also missing
|
|
|
|
// usable std::char_traits<boost::uint32_t>.
|
|
|
|
namespace lyx { typedef wchar_t char_type; }
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
#include <boost/cstdint.hpp>
|
2007-10-31 23:41:22 +00:00
|
|
|
namespace lyx { typedef boost::uint32_t char_type; }
|
2007-10-31 22:40:34 +00:00
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2007-11-08 13:32:56 +00:00
|
|
|
|
2007-11-09 10:54:45 +00:00
|
|
|
namespace std {
|
|
|
|
|
|
|
|
template<typename Alloc> class allocator;
|
|
|
|
|
|
|
|
template<typename Char> struct char_traits;
|
|
|
|
template<> struct char_traits<char>;
|
|
|
|
#ifdef USE_WCHAR_T
|
|
|
|
template<> struct char_traits<wchar_t>;
|
|
|
|
#endif
|
2007-10-31 22:40:34 +00:00
|
|
|
|
2007-11-08 07:47:31 +00:00
|
|
|
template<typename Char, typename Traits, typename Alloc> class basic_string;
|
|
|
|
typedef basic_string<char, char_traits<char>, allocator<char> > string;
|
2007-11-08 13:32:56 +00:00
|
|
|
|
2007-11-09 10:54:45 +00:00
|
|
|
template<class Char, class Traits> class basic_istream;
|
|
|
|
template<class Char, class Traits> class basic_ostream;
|
2013-03-08 19:52:18 +00:00
|
|
|
template<class Char, class Traits, class Allocator> class basic_ostringstream;
|
2007-11-09 10:54:45 +00:00
|
|
|
|
|
|
|
typedef basic_istream<char, char_traits<char> > istream;
|
|
|
|
typedef basic_ostream<char, char_traits<char> > ostream;
|
2013-03-08 19:52:18 +00:00
|
|
|
typedef basic_ostringstream<char, char_traits<char>, allocator<char> > ostringstream;
|
2007-11-09 10:54:45 +00:00
|
|
|
|
|
|
|
} // namepace std
|
|
|
|
|
2007-11-08 07:47:31 +00:00
|
|
|
|
2007-11-01 22:17:22 +00:00
|
|
|
namespace lyx {
|
2007-10-31 22:40:34 +00:00
|
|
|
|
2007-11-08 06:05:19 +00:00
|
|
|
/// String type for storing the main text in UCS4 encoding
|
2007-11-08 13:32:56 +00:00
|
|
|
typedef std::basic_string<char_type, std::char_traits<char_type>,
|
|
|
|
std::allocator<char_type> > docstring;
|
2007-10-31 22:40:34 +00:00
|
|
|
|
2007-11-01 22:17:22 +00:00
|
|
|
/// Base class for UCS4 input streams
|
2007-11-09 10:54:45 +00:00
|
|
|
typedef std::basic_istream<char_type, std::char_traits<char_type> > idocstream;
|
2007-10-31 22:40:34 +00:00
|
|
|
|
2007-11-01 22:17:22 +00:00
|
|
|
/// Base class for UCS4 output streams
|
2007-11-09 10:54:45 +00:00
|
|
|
typedef std::basic_ostream<char_type, std::char_traits<char_type> > odocstream;
|
2007-10-31 22:40:34 +00:00
|
|
|
|
2013-03-08 19:52:18 +00:00
|
|
|
/// UCS4 output stringstream
|
|
|
|
typedef std::basic_ostringstream<char_type, std::char_traits<char_type>, std::allocator<char_type> > odocstringstream;
|
|
|
|
|
2007-11-08 06:05:19 +00:00
|
|
|
#if ! defined(USE_WCHAR_T)
|
|
|
|
extern odocstream & operator<<(odocstream &, char);
|
|
|
|
#endif
|
2007-10-31 22:40:34 +00:00
|
|
|
|
2010-11-17 22:11:33 +00:00
|
|
|
// defined in lstrings.cpp
|
2007-11-30 20:57:53 +00:00
|
|
|
docstring const & empty_docstring();
|
|
|
|
std::string const & empty_string();
|
2010-11-17 22:11:33 +00:00
|
|
|
// defined in docstring.cpp
|
2010-01-30 11:34:28 +00:00
|
|
|
bool operator==(docstring const &, char const *);
|
2007-11-30 20:57:53 +00:00
|
|
|
|
2007-10-31 22:40:34 +00:00
|
|
|
} // namespace lyx
|
|
|
|
|
|
|
|
#endif
|