32#ifndef _QX_ARCHIVE_WIDE_TRAITS_H_
33#define _QX_ARCHIVE_WIDE_TRAITS_H_
51#include <QtCore/qstring.h>
64#if _QX_SERIALIZE_WIDE_BINARY
69#if _QX_SERIALIZE_WIDE_TEXT
74#if _QX_SERIALIZE_WIDE_XML
87 typedef typename std::conditional<is_wide, wchar_t, char>::type
type_char;
88 typedef typename std::conditional<is_wide, std::wstring, std::string>::type
type_string;
90 typedef typename std::conditional<is_wide, std::wistream, std::istream>::type
type_istream;
91 typedef typename std::conditional<is_wide, std::wostream, std::ostream>::type
type_ostream;
93 typedef typename std::conditional<is_wide, std::wstringstream, std::stringstream>::type
type_stringstream;
94 typedef typename std::conditional<is_wide, std::wistringstream, std::istringstream>::type
type_istringstream;
95 typedef typename std::conditional<is_wide, std::wostringstream, std::ostringstream>::type
type_ostringstream;
97 typedef typename std::conditional<is_wide, std::wfstream, std::fstream>::type
type_fstream;
98 typedef typename std::conditional<is_wide, std::wifstream, std::ifstream>::type
type_ifstream;
99 typedef typename std::conditional<is_wide, std::wofstream, std::ofstream>::type
type_ofstream;
109 template <
bool isWide ,
int dummy>
113 static inline QString
toQString(
const std::string & str) {
return QString::fromStdString(str); }
114 static inline void fromQString(
const QString & str, std::string & result) { result = str.toStdString(); }
116 static inline QString
toQString(
const std::string & str) {
return QString::fromLatin1(str.data(),
int(str.size())); }
117 static inline void fromQString(
const QString & str, std::string & result) { result = str.toLatin1().constData(); }
124#if ((! defined(QT_NO_STL)) && (! defined(QT_NO_STL_WCHAR)))
125 static inline QString
toQString(
const std::wstring & str) {
return QString::fromStdWString(str); }
126 static inline void fromQString(
const QString & str, std::wstring & result) { result = str.toStdWString(); }
128 static inline QString
toQString(
const std::wstring & str) { Q_UNUSED(str);
qAssert(
false);
return QString(); }
129 static inline void fromQString(
const QString & str, std::wstring & result) { Q_UNUSED(str); Q_UNUSED(result);
qAssert(
false); }
133 template <
bool isWide ,
int dummy>
136 static inline QByteArray
toQByteArray(
const std::string & str, std::string * owner)
137 {
if (owner) { (* owner) = str; };
return (owner ? QByteArray::fromRawData(owner->data(), owner->size()) : QByteArray(str.data(), str.size())); }
139 { result.clear(); result.append(data.constData(), data.size()); }
145 static inline QByteArray
toQByteArray(
const std::wstring & str, std::wstring * owner)
146#if ((! defined(QT_NO_STL)) && (! defined(QT_NO_STL_WCHAR)))
147 { Q_UNUSED(owner);
return QString::fromStdWString(str).toUtf8(); }
149 { Q_UNUSED(owner); Q_UNUSED(str);
qAssert(
false);
return QByteArray(); }
152 static inline void fromQByteArray(
const QByteArray & data, std::wstring & result)
153#if ((! defined(QT_NO_STL)) && (! defined(QT_NO_STL_WCHAR)))
154 { result = QString::fromUtf8(data.constData(), data.size()).toStdWString(); }
156 { Q_UNUSED(data); Q_UNUSED(result);
qAssert(
false); }
std::conditional< is_wide, std::wostringstream, std::ostringstream >::type type_ostringstream
std::conditional< is_wide, std::wfstream, std::fstream >::type type_fstream
std::conditional< is_wide, std::wofstream, std::ofstream >::type type_ofstream
static void fromQByteArray(const QByteArray &data, type_string &result)
static QString toQString(const type_string &str)
std::conditional< is_wide, std::wostream, std::ostream >::type type_ostream
std::conditional< is_wide, std::wstring, std::string >::type type_string
std::conditional< is_wide, std::wistream, std::istream >::type type_istream
static QByteArray toQByteArray(const type_string &str, type_string *owner)
std::conditional< is_wide, std::wstringstream, std::stringstream >::type type_stringstream
std::conditional< is_wide, std::wistringstream, std::istringstream >::type type_istringstream
std::conditional< is_wide, wchar_t, char >::type type_char
std::conditional< is_wide, std::wifstream, std::ifstream >::type type_ifstream
static void fromQString(const QString &str, type_string &result)
Root namespace for all QxOrm library features.
static void fromQByteArray(const QByteArray &data, std::wstring &result)
static QByteArray toQByteArray(const std::wstring &str, std::wstring *owner)
static QByteArray toQByteArray(const std::string &str, std::string *owner)
static void fromQByteArray(const QByteArray &data, std::string &result)
static QString toQString(const std::wstring &str)
static void fromQString(const QString &str, std::wstring &result)
static QString toQString(const std::string &str)
static void fromQString(const QString &str, std::string &result)
qx::trait::is_archive_wide<T>::value : define if a boost::archive type uses wide string character and...