#ifdef __cplusplus
-#ifndef QT_NO_STL
#include <algorithm>
-#endif
#ifndef QT_NAMESPACE /* user namespace */
template <typename T>
inline void qSwap(T &value1, T &value2)
{
-#ifdef QT_NO_STL
- const T t = value1;
- value1 = value2;
- value2 = t;
-#else
using std::swap;
swap(value1, value2);
-#endif
}
#if QT_DEPRECATED_SINCE(5, 0)
types must declare a 'bool isDetached(void) const;' member for this
to work.
*/
-#ifdef QT_NO_STL
-#define Q_DECLARE_SHARED_STL(TYPE)
-#else
#define Q_DECLARE_SHARED_STL(TYPE) \
QT_END_NAMESPACE \
namespace std { \
{ swap(value1.data_ptr(), value2.data_ptr()); } \
} \
QT_BEGIN_NAMESPACE
-#endif
#define Q_DECLARE_SHARED(TYPE) \
template <> inline void qSwap<TYPE>(TYPE &value1, TYPE &value2) \
#include <QtCore/qiterator.h>
#include <QtCore/qrefcount.h>
-#ifndef QT_NO_STL
#include <iterator>
#include <list>
-#endif
QT_BEGIN_HEADER
typedef const value_type &const_reference;
typedef qptrdiff difference_type;
-#ifndef QT_NO_STL
static inline QLinkedList<T> fromStdList(const std::list<T> &list)
{ QLinkedList<T> tmp; qCopy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; }
inline std::list<T> toStdList() const
{ std::list<T> tmp; qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
-#endif
// comfort
QLinkedList<T> &operator+=(const QLinkedList<T> &l);
#include <QtCore/qiterator.h>
#include <QtCore/qrefcount.h>
-#ifndef QT_NO_STL
#include <iterator>
#include <list>
-#endif
#ifdef Q_COMPILER_INITIALIZER_LISTS
-#include <iterator>
#include <initializer_list>
#endif
static QList<T> fromVector(const QVector<T> &vector);
static QList<T> fromSet(const QSet<T> &set);
-#ifndef QT_NO_STL
static inline QList<T> fromStdList(const std::list<T> &list)
{ QList<T> tmp; qCopy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; }
inline std::list<T> toStdList() const
{ std::list<T> tmp; qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
-#endif
private:
Node *detach_helper_grow(int i, int n);
#include <QtCore/qdebug.h>
#endif
-#ifndef QT_NO_STL
#include <map>
-#endif
-
#include <new>
QT_BEGIN_HEADER
{ qSwap(d, other.d); return *this; }
#endif
inline void swap(QMap<Key, T> &other) { qSwap(d, other.d); }
-#ifndef QT_NO_STL
explicit QMap(const typename std::map<Key, T> &other);
std::map<Key, T> toStdMap() const;
-#endif
bool operator==(const QMap<Key, T> &other) const;
inline bool operator!=(const QMap<Key, T> &other) const { return !(*this == other); }
return true;
}
-#ifndef QT_NO_STL
template <class Key, class T>
Q_OUTOFLINE_TEMPLATE QMap<Key, T>::QMap(const std::map<Key, T> &other)
{
return map;
}
-#endif // QT_NO_STL
-
template <class Key, class T>
class QMultiMap : public QMap<Key, T>
{
Q_INLINE_TEMPLATE void qSwap(QScopedPointer<T, Cleanup> &p1, QScopedPointer<T, Cleanup> &p2)
{ p1.swap(p2); }
-#ifndef QT_NO_STL
QT_END_NAMESPACE
namespace std {
template <class T, class Cleanup>
{ p1.swap(p2); }
}
QT_BEGIN_NAMESPACE
-#endif
Q_INLINE_TEMPLATE void qSwap(QExplicitlySharedDataPointer<T> &p1, QExplicitlySharedDataPointer<T> &p2)
{ p1.swap(p2); }
-#ifndef QT_NO_STL
QT_END_NAMESPACE
namespace std {
template <class T>
{ p1.swap(p2); }
}
QT_BEGIN_NAMESPACE
-#endif
template<typename T> Q_DECLARE_TYPEINFO_BODY(QSharedDataPointer<T>, Q_MOVABLE_TYPE);
template<typename T> Q_DECLARE_TYPEINFO_BODY(QExplicitlySharedDataPointer<T>, Q_MOVABLE_TYPE);
p1.swap(p2);
}
-#ifndef QT_NO_STL
QT_END_NAMESPACE
namespace std {
template <class T>
{ p1.swap(p2); }
}
QT_BEGIN_NAMESPACE
-#endif
namespace QtSharedPointer {
// helper functions:
windows) and ucs4 if the size of wchar_t is 4 bytes (most Unix
systems).
- This method is only available if Qt is configured with STL
- compatibility enabled and if QT_NO_STL is not defined.
-
\sa fromUtf16(), fromLatin1(), fromLocal8Bit(), fromUtf8(), fromUcs4()
*/
This operator is mostly useful to pass a QString to a function
that accepts a std::wstring object.
- This operator is only available if Qt is configured with STL
- compatibility enabled and if QT_NO_STL is not defined.
-
\sa utf16(), toAscii(), toLatin1(), toUtf8(), toLocal8Bit()
*/
If the QString contains non-Latin1 Unicode characters, using this
can lead to loss of information.
- This operator is only available if Qt is configured with STL
- compatibility enabled and if QT_NO_STL is not defined.
-
\sa toAscii(), toLatin1(), toUtf8(), toLocal8Bit()
*/
#include <QtCore/qrefcount.h>
#include <QtCore/qnamespace.h>
-#ifndef QT_NO_STL
-# include <string>
-#endif // QT_NO_STL
+#include <string>
#include <stdarg.h>
inline void push_front(QChar c) { prepend(c); }
inline void push_front(const QString &s) { prepend(s); }
-#ifndef QT_NO_STL
static inline QString fromStdString(const std::string &s);
inline std::string toStdString() const;
static inline QString fromStdWString(const std::wstring &s);
inline std::wstring toStdWString() const;
-#endif
// compatibility
struct Null { };
# endif // QT_NO_CAST_FROM_ASCII
#endif // QT_USE_QSTRINGBUILDER
-#ifndef QT_NO_STL
inline std::string QString::toStdString() const
{ const QByteArray asc = toAscii(); return std::string(asc.constData(), asc.length()); }
str.resize(toWCharArray(&(*str.begin())));
return str;
}
+
inline QString QString::fromStdWString(const std::wstring &s)
{ return fromWCharArray(s.data(), int(s.size())); }
-#endif
#if !defined(QT_NO_DATASTREAM) || (defined(QT_BOOTSTRAPPED) && !defined(QT_BUILD_QMAKE))
Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QString &);
#include <QtCore/qlist.h>
#include <QtCore/qrefcount.h>
-#ifndef QT_NO_STL
#include <iterator>
#include <vector>
-#endif
#include <stdlib.h>
#include <string.h>
#ifdef Q_COMPILER_INITIALIZER_LISTS
static QVector<T> fromList(const QList<T> &list);
-#ifndef QT_NO_STL
static inline QVector<T> fromStdVector(const std::vector<T> &vector)
{ QVector<T> tmp; tmp.reserve(int(vector.size())); qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; }
inline std::vector<T> toStdVector() const
{ std::vector<T> tmp; tmp.reserve(size()); qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
-#endif
private:
friend class QRegion; // Optimization for QRegion::rects()
void tst_QString::STL()
{
-#ifndef QT_NO_STL
#ifndef QT_NO_CAST_TO_ASCII
QString qt( "QString" );
QCOMPARE(s, QString::fromLatin1("hello"));
QCOMPARE(stlStr, s.toStdWString());
-#else
- QSKIP( "Not tested without STL support");
-#endif
}
void tst_QString::truncate()
#ifdef Q_CC_HPACC
QSKIP("This test crashes on HP-UX with aCC");
#endif
-#if !defined(QT_NO_STL)
std::string stroustrup = "foo";
QString eng = QString::fromStdString( stroustrup );
QCOMPARE( eng, QString("foo") );
std::string stdnull( cnull, sizeof(cnull)-1 );
QString qtnull = QString::fromStdString( stdnull );
QCOMPARE( qtnull.size(), int(stdnull.size()) );
-#endif
}
void tst_QString::toStdString()
#ifdef Q_CC_HPACC
QSKIP("This test crashes on HP-UX with aCC");
#endif
-#if !defined(QT_NO_STL)
QString nord = "foo";
std::string stroustrup1 = nord.toStdString();
QVERIFY( qstrcmp(stroustrup1.c_str(), "foo") == 0 );
QString qtnull( qcnull, sizeof(qcnull)/sizeof(QChar) );
std::string stdnull = qtnull.toStdString();
QCOMPARE( int(stdnull.size()), qtnull.size() );
-#endif
}
void tst_QString::utf8()
#include <QtTest/QtTest>
-#ifndef QT_NO_STL
-# include <algorithm>
-#endif
+#include <algorithm>
#include "qalgorithms.h"
#include "qbitarray.h"
void conversions();
void javaStyleIterators();
void constAndNonConstStlIterators();
-#ifndef QT_NO_STL
void vector_stl_data();
void vector_stl();
void list_stl_data();
void list_stl();
void linkedlist_stl_data();
void linkedlist_stl();
-#endif
void q_init();
void pointersize();
void containerInstantiation();
QVERIFY(list.size() == 6);
QVERIFY(list.end() - list.begin() == list.size());
-#if !defined(QT_NO_STL) && !defined(Q_CC_MSVC) && !defined(Q_CC_SUN)
+#if !defined(Q_CC_MSVC) && !defined(Q_CC_SUN)
QVERIFY(std::binary_search(list.begin(), list.end(), 2) == true);
QVERIFY(std::binary_search(list.begin(), list.end(), 9) == false);
#endif
v.prepend(1);
v << 3 << 4 << 5 << 6;
-#if !defined(QT_NO_STL)
QVERIFY(std::binary_search(v.begin(), v.end(), 2) == true);
QVERIFY(std::binary_search(v.begin(), v.end(), 9) == false);
-#endif
QVERIFY(qBinaryFind(v.begin(), v.end(), 2) == v.begin() + 1);
QVERIFY(qLowerBound(v.begin(), v.end(), 2) == v.begin() + 1);
QVERIFY(qUpperBound(v.begin(), v.end(), 2) == v.begin() + 2);
testMapLikeStlIterators<QMultiHash<QString, QString> >();
}
-#ifndef QT_NO_STL
void tst_Collections::vector_stl_data()
{
QTest::addColumn<QStringList>("elements");
QCOMPARE(QList<QString>::fromStdList(stdList), list);
}
-#endif
template <typename T>
T qtInit(T * = 0)
ContainerType container;
const ContainerType constContainer(container);
-#ifndef QT_NO_STL
typename ContainerType::const_iterator constIt;
constIt = constContainer.begin();
constIt = container.cbegin();
constIt = constContainer.cend();
container.constEnd();
Q_UNUSED(constIt)
-#endif
+
container.clear();
container.contains(value);
container.count();
instantiateContainer<ContainerType, ValueType>();
ContainerType container;
-#ifndef QT_NO_STL
typename ContainerType::iterator it;
it = container.begin();
it = container.end();
Q_UNUSED(it)
-#endif
// QSet lacks count(T).
const ValueType value = ValueType();
IntOrString(const QString &v) : val(v.toInt()) { }
operator int() { return val; }
operator QString() { return QString::number(val); }
-#ifndef QT_NO_STL
operator std::string() { return QString::number(val).toStdString(); }
IntOrString(const std::string &v) : val(QString::fromStdString(v).toInt()) { }
-#endif
};
template<class Container> void insert_remove_loop_impl()
insert_remove_loop_impl<QVarLengthArray<int, 15> >();
insert_remove_loop_impl<QVarLengthArray<QString, 15> >();
-#ifndef QT_NO_STL
insert_remove_loop_impl<ExtList<std::string> >();
insert_remove_loop_impl<QVector<std::string> >();
insert_remove_loop_impl<QVarLengthArray<std::string> >();
insert_remove_loop_impl<QVarLengthArray<std::string, 10> >();
insert_remove_loop_impl<QVarLengthArray<std::string, 3> >();
insert_remove_loop_impl<QVarLengthArray<std::string, 15> >();
-#endif
}
void tst_QStringList::split_stdvector_stdstring() const
{
-#ifndef QT_NO_STL
QFETCH(QString, input);
const char split_char = ':';
std::string stdinput = input.toStdString();
token.push_back(each))
;
}
-#endif
}
void tst_QStringList::split_stdvector_stdwstring() const
{
-#ifndef QT_NO_STL
QFETCH(QString, input);
const wchar_t split_char = ':';
std::wstring stdinput = input.toStdWString();
token.push_back(each))
;
}
-#endif
}
void tst_QStringList::split_stdlist_stdstring() const
#include <QtCore/qalgorithms.h>
#include <QtCore/qlist.h>
-#ifndef QT_NO_STL
#include <iterator>
#include <vector>
-#endif
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
//static QRawVector<T> fromList(const QList<T> &list);
-#ifndef QT_NO_STL
static inline QRawVector<T> fromStdVector(const std::vector<T> &vector)
{ QRawVector<T> tmp; qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; }
inline std::vector<T> toStdVector() const
{ std::vector<T> tmp; qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
-#endif
private:
T *allocate(int alloc);