#pragma working_directory "/build/test/qt-x11-commercial-src-4.1.4/src/gui" #pragma ident "c++fe: 3.4 02/23/06 (osr600mp2.bl4ao)" #line 1 "text/qtextengine.cpp" #file "text/qtextengine.cpp" #line 1 "../../include/QtCore/qdebug.h" #line 1 "../../include/QtCore/../../src/corelib/io/qdebug.h" #line 1 "../../include/QtCore/qalgorithms.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qalgorithms.h" #line 1 "../../include/QtCore/qglobal.h" #line 1 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1 "/usr/include/stddef.h" #ident "@(#)unixsrc:usr/src/common/head/stddef.h /main/legend/1" typedef long ptrdiff_t; typedef unsigned int size_t; #line 26 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1 "../../include/QtCore/qconfig.h" #line 37 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 141 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 371 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 406 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 432 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 493 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 512 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 547 "../../include/QtCore/../../src/corelib/global/qglobal.h" typedef signed char qint8; typedef unsigned char quint8; typedef short qint16; typedef unsigned short quint16; typedef int qint32; typedef unsigned int quint32; #line 571 "../../include/QtCore/../../src/corelib/global/qglobal.h" typedef long long qint64; typedef unsigned long long quint64; typedef qint64 qlonglong; typedef quint64 qulonglong; #line 590 "../../include/QtCore/../../src/corelib/global/qglobal.h" typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; #line 622 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 644 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 709 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 720 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 736 "../../include/QtCore/../../src/corelib/global/qglobal.h" typedef int QNoImplicitBoolCast; typedef double qreal; template inline T qAbs(const T &t) { return t >= 0 ? t : -t; } inline int qRound(qreal d) { return d >= 0.0 ? int(d + 0.5) : int(d - int(d-1) + 0.5) + int(d-1); } inline qint64 qRound64(qreal d) { return d >= 0.0 ? qint64(d + 0.5) : qint64(d - qint64(d-1) + 0.5) + qint64(d-1); } template inline const T &qMin(const T &a, const T &b) { if (a < b) return a; return b; } template inline const T &qMax(const T &a, const T &b) { if (a < b) return b; return a; } template inline const T &qBound(const T &min, const T &val, const T &max) { return qMax(min, qMin(max, val)); } typedef qint8 Q_INT8; typedef quint8 Q_UINT8; typedef qint16 Q_INT16; typedef quint16 Q_UINT16; typedef qint32 Q_INT32; typedef quint32 Q_UINT32; typedef qint64 Q_INT64; typedef quint64 Q_UINT64; typedef qint64 Q_LLONG; typedef quint64 Q_ULLONG; typedef long Q_LONG; typedef unsigned long Q_ULONG; class QDataStream; #line 815 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1 "../../include/QtCore/qfeatures.h" #line 1 "../../include/QtCore/../../src/corelib/global/qfeatures.h" #line 2 "../../include/QtCore/qfeatures.h" #line 831 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 849 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 930 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 952 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 965 "../../include/QtCore/../../src/corelib/global/qglobal.h" class QString; class QSysInfo { public: enum { WordSize = (sizeof(void *)<<3) }; enum Endian { BigEndian, LittleEndian #line 987 "../../include/QtCore/../../src/corelib/global/qglobal.h" , ByteOrder = LittleEndian }; #line 1043 "../../include/QtCore/../../src/corelib/global/qglobal.h" }; const char *qVersion(); bool qSharedBuild(); inline bool qSysInfo(int *wordSize, bool *bigEndian) { *wordSize = QSysInfo::WordSize; *bigEndian = (QSysInfo::ByteOrder == QSysInfo::BigEndian); return true; } #line 1078 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1085 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1101 "../../include/QtCore/../../src/corelib/global/qglobal.h" void qDebug(const char *, ...) ; void qWarning(const char *, ...) ; class QString; QString qt_error_string(int errorCode = -1); void qCritical(const char *, ...) ; void qFatal(const char *, ...) ; void qSystemWarning(const char *msg, int code = -1); void qErrnoWarning(int code, const char *msg, ...); void qErrnoWarning(const char *msg, ...); class QDebug; class QNoDebug; #line 1157 "../../include/QtCore/../../src/corelib/global/qglobal.h" inline void qt_noop() {} void qt_assert(const char *assertion, const char *file, int line); #line 1169 "../../include/QtCore/../../src/corelib/global/qglobal.h" void qt_assert_x(const char *where, const char *what, const char *file, int line); #line 1179 "../../include/QtCore/../../src/corelib/global/qglobal.h" void qt_check_pointer(const char *, int); enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg = QtCriticalMsg }; void qt_message_output(QtMsgType, const char *buf); typedef void (*QtMsgHandler)(QtMsgType, const char *); QtMsgHandler qInstallMsgHandler(QtMsgHandler); inline void qSuppressObsoleteWarnings(bool = true) {} inline void qObsolete(const char *, const char * = 0, const char * = 0) {} #line 1228 "../../include/QtCore/../../src/corelib/global/qglobal.h" template class QGlobalStatic { public: T *pointer; bool destroyed; inline QGlobalStatic() : pointer(0), destroyed(false) { } inline ~QGlobalStatic() { delete pointer; pointer = 0; destroyed = true; } }; #line 1259 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1271 "../../include/QtCore/../../src/corelib/global/qglobal.h" class QBool { bool b; public: inline explicit QBool(bool B) : b(B) {} inline operator const void *() const { return b ? static_cast(this) : static_cast(0); } }; inline bool operator==(QBool b1, bool b2) { return !b1 == !b2; } inline bool operator==(bool b1, QBool b2) { return !b1 == !b2; } inline bool operator==(QBool b1, QBool b2) { return !b1 == !b2; } inline bool operator!=(QBool b1, bool b2) { return !b1 != !b2; } inline bool operator!=(bool b1, QBool b2) { return !b1 != !b2; } inline bool operator!=(QBool b1, QBool b2) { return !b1 != !b2; } static inline bool qFuzzyCompare(double p1, double p2) { return qAbs(p1 - p2) < 0.00000000001; } static inline bool qFuzzyCompare(float p1, float p2) { return qAbs(p1 - p2) < 0.000001; } static inline bool qIsNull(double d) { union U { double d; quint64 u; }; U val; val.d = d; return val.u == quint64(0); } static inline bool qIsNull(float f) { union U { float f; quint32 u; }; U val; val.f = f; return val.u == 0u; } #line 1351 "../../include/QtCore/../../src/corelib/global/qglobal.h" template inline bool qIsDetached(T &) { return true; } template class QTypeInfo { public: enum { isPointer = false, isComplex = true, isStatic = true, isLarge = (sizeof(T)>sizeof(void*)), isDummy = false }; }; template class QTypeInfo { public: enum { isPointer = true, isComplex = false, isStatic = false, isLarge = false, isDummy = false }; }; #line 1413 "../../include/QtCore/../../src/corelib/global/qglobal.h" enum { Q_COMPLEX_TYPE = 0, Q_PRIMITIVE_TYPE = 0x1, Q_STATIC_TYPE = 0, Q_MOVABLE_TYPE = 0x2, Q_DUMMY_TYPE = 0x4 }; #line 1444 "../../include/QtCore/../../src/corelib/global/qglobal.h" template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(bool)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "bool"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(char)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "char"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(signed char)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "signed char"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(uchar)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "uchar"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(short)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "short"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(ushort)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "ushort"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(int)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "int"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(uint)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "uint"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(long)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "long"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(ulong)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "ulong"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(qint64)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "qint64"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(quint64)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "quint64"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(float)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "float"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(double)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "double"; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(long double)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "long double"; } }; void *qMalloc(size_t size); void qFree(void *ptr); void *qRealloc(void *ptr, size_t size); void *qMemCopy(void *dest, const void *src, size_t n); void *qMemSet(void *dest, int c, size_t n); #line 1522 "../../include/QtCore/../../src/corelib/global/qglobal.h" class QFlag { int i; public: inline QFlag(int i); inline operator int() const { return i; } }; inline QFlag::QFlag(int ai) : i(ai) {} template class QFlags { typedef void **Zero; int i; public: typedef Enum enum_type; inline QFlags(const QFlags &f) : i(f.i) {} inline QFlags(Enum f) : i(f) {} inline QFlags(Zero = 0) : i(0) {} inline QFlags(QFlag f) : i(f) {} inline QFlags &operator=(const QFlags &f) { i = f.i; return *this; } inline QFlags &operator&=(int mask) { i &= mask; return *this; } inline QFlags &operator&=(uint mask) { i &= mask; return *this; } inline QFlags &operator|=(QFlags f) { i |= f.i; return *this; } inline QFlags &operator|=(Enum f) { i |= f; return *this; } inline QFlags &operator^=(QFlags f) { i ^= f.i; return *this; } inline QFlags &operator^=(Enum f) { i ^= f; return *this; } inline operator int() const { return i;} inline QFlags operator|(QFlags f) const { QFlags g; g.i = i | f.i; return g; } inline QFlags operator|(Enum f) const { QFlags g; g.i = i | f; return g; } inline QFlags operator^(QFlags f) const { QFlags g; g.i = i ^ f.i; return g; } inline QFlags operator^(Enum f) const { QFlags g; g.i = i ^ f; return g; } inline QFlags operator&(int mask) const { QFlags g; g.i = i & mask; return g; } inline QFlags operator&(uint mask) const { QFlags g; g.i = i & mask; return g; } inline QFlags operator&(Enum f) const { QFlags g; g.i = i & f; return g; } inline QFlags operator~() const { QFlags g; g.i = ~i; return g; } inline bool operator!() const { return !i; } }; #line 1578 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1586 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1605 "../../include/QtCore/../../src/corelib/global/qglobal.h" struct QForeachContainerBase {}; template class QForeachContainer : public QForeachContainerBase { public: inline QForeachContainer(const T& t): c(t), brk(0), i(c.begin()), e(c.end()){}; const T c; mutable int brk; mutable typename T::const_iterator i, e; inline bool condition() const { return (!brk++ && i != e); } }; template inline T *qForeachPointer(const T &) { return 0; } template inline QForeachContainer qForeachContainerNew(const T& t) { return QForeachContainer(t); } template inline const QForeachContainer *qForeachContainer(const QForeachContainerBase *base, const T *) { return static_cast *>(base); } #line 1634 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1646 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1654 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1685 "../../include/QtCore/../../src/corelib/global/qglobal.h" class QByteArray; QByteArray qgetenv(const char *varName); inline int qIntCast(double f) { return int(f); } inline int qIntCast(float f) { return int(f); } #line 1703 "../../include/QtCore/../../src/corelib/global/qglobal.h" const char *qInstallPath(); const char *qInstallPathDocs(); const char *qInstallPathHeaders(); const char *qInstallPathLibs(); const char *qInstallPathBins(); const char *qInstallPathPlugins(); const char *qInstallPathData(); const char *qInstallPathTranslations(); const char *qInstallPathSysconf(); #line 1730 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1754 "../../include/QtCore/../../src/corelib/global/qglobal.h" #line 1763 "../../include/QtCore/../../src/corelib/global/qglobal.h" enum QtValidLicenseForCoreModule { LicensedCore = true }; enum QtValidLicenseForGuiModule { LicensedGui = true }; enum QtValidLicenseForNetworkModule { LicensedNetwork = true }; enum QtValidLicenseForOpenGLModule { LicensedOpenGL = true }; enum QtValidLicenseForSqlModule { LicensedSql = true }; enum QtValidLicenseForXmlModule { LicensedXml = true }; enum QtValidLicenseForQt3SupportLightModule { LicensedQt3SupportLight = true }; enum QtValidLicenseForQt3SupportModule { LicensedQt3Support = true }; enum QtValidLicenseForSvgModule { LicensedSvg = true }; enum QtValidLicenseForActiveQtModule { LicensedActiveQt = true }; #line 2 "../../include/QtCore/qglobal.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qalgorithms.h" typedef QtValidLicenseForCoreModule QtCoreModule; namespace QAlgorithmsPrivate { template void qSortHelper(BiIterator start, BiIterator end, const T &t, LessThan lessThan); template inline void qSortHelper(BiIterator begin, BiIterator end, const T &dummy); template void qStableSortHelper(BiIterator start, BiIterator end, const T &t, LessThan lessThan); template inline void qStableSortHelper(BiIterator, BiIterator, const T &); } template inline OutputIterator qCopy(InputIterator begin, InputIterator end, OutputIterator dest) { while (begin != end) *dest++ = *begin++; return dest; } template inline BiIterator2 qCopyBackward(BiIterator1 begin, BiIterator1 end, BiIterator2 dest) { while (begin != end) *--dest = *--end; return dest; } template inline bool qEqual(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2) { for (; first1 != last1; ++first1, ++first2) if (!(*first1 == *first2)) return false; return true; } template inline void qFill(ForwardIterator first, ForwardIterator last, const T &val) { for (; first != last; ++first) *first = val; } template inline InputIterator qFind(InputIterator first, InputIterator last, const T &val) { while (first != last && !(*first == val)) ++first; return first; } template inline void qCount(InputIterator first, InputIterator last, const T &value, Size &n) { for (; first != last; ++first) if (*first == value) ++n; } template inline void qSwap(T &value1, T &value2) { if (!QTypeInfo::isComplex || QTypeInfo::isLarge || QTypeInfo::isStatic) { T t = value1; value1 = value2; value2 = t; } else { const void * const t = reinterpret_cast(value1); const_cast(reinterpret_cast(value1)) = reinterpret_cast(value2); const_cast(reinterpret_cast(value2)) = t; } } template class qLess { public: inline bool operator()(const T &t1, const T &t2) const { return (t1 < t2); } }; template class qGreater { public: inline bool operator()(const T &t1, const T &t2) const { return (t2 < t1); } }; template inline void qSort(BiIterator start, BiIterator end) { if (start != end) QAlgorithmsPrivate::qSortHelper(start, end, *start); } template inline void qSort(BiIterator start, BiIterator end, LessThan lessThan) { if (start != end) QAlgorithmsPrivate::qSortHelper(start, end, *start, lessThan); } template inline void qSort(Container &c) { if (!c.empty()) QAlgorithmsPrivate::qSortHelper(c.begin(), c.end(), *c.begin()); } template inline void qStableSort(BiIterator start, BiIterator end) { if (start != end) QAlgorithmsPrivate::qStableSortHelper(start, end, *start); } template inline void qStableSort(BiIterator start, BiIterator end, LessThan lessThan) { if (start != end) QAlgorithmsPrivate::qStableSortHelper(start, end, *start, lessThan); } template inline void qStableSort(Container &c) { if (!c.empty()) QAlgorithmsPrivate::qStableSortHelper(c.begin(), c.end(), *c.begin()); } template RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) { RandomAccessIterator middle; int n = end - begin; int half; while (n > 0) { half = n >> 1; middle = begin + half; if (*middle < value) { begin = middle + 1; n -= half + 1; } else { n = half; } } return begin; } template RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) { RandomAccessIterator middle; int n = end - begin; int half; while (n > 0) { half = n >> 1; middle = begin + half; if (value < *middle) { n = half; } else { begin = middle + 1; n -= half + 1; } } return begin; } template RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value) { int l = 0; int r = end - begin - 1; if (r < 0) return end; int i = (l + r + 1) / 2; while (r != l) { if (value < begin[i]) r = i - 1; else l = i; i = (l + r + 1) / 2; } if (begin[i] < value || value < begin[i]) return end; else return begin + i; } template void qDeleteAll(ForwardIterator begin, ForwardIterator end) { while (begin != end) { delete *begin; ++begin; } } template inline void qDeleteAll(const Container &c) { qDeleteAll(c.begin(), c.end()); } namespace QAlgorithmsPrivate { template void qSortHelper(BiIterator start, BiIterator end, const T &t, LessThan lessThan) { top: int span = end - start; if (span < 2) return; --end; BiIterator low = start, high = end - 1; BiIterator pivot = start + span / 2; if (lessThan(*end, *start)) qSwap(*end, *start); if (span == 2) return; if (lessThan(*pivot, *start)) qSwap(*pivot, *start); if (lessThan(*end, *pivot)) qSwap(*end, *pivot); if (span == 3) return; qSwap(*pivot, *end); while (low < high) { while (low < high && lessThan(*low, *end)) ++low; while (high > low && lessThan(*end, *high)) --high; if (low < high) { qSwap(*low, *high); ++low; --high; } else { break; } } if (lessThan(*low, *end)) ++low; qSwap(*end, *low); qSortHelper(start, low, t, lessThan); start = low + 1; ++end; goto top; } template inline void qSortHelper(BiIterator begin, BiIterator end, const T &dummy) { qSortHelper(begin, end, dummy, qLess()); } template void qStableSortHelper(BiIterator start, BiIterator end, const T &t, LessThan lessThan) { const int span = end - start; if (span < 2) return; BiIterator middle = start + span / 2; qStableSortHelper(start, middle, t, lessThan); qStableSortHelper(middle, end, t, lessThan); BiIterator lo = start; BiIterator hi = middle; while (lo != middle && hi != end) { if (!lessThan(*hi, *lo)) { ++lo; } else { T value = *hi; for (BiIterator i = hi; i != lo; --i) { *i = *(i-1); } *lo = value; ++hi; ++lo; ++middle; } } } template inline void qStableSortHelper(BiIterator begin, BiIterator end, const T &dummy) { qStableSortHelper(begin, end, dummy, qLess()); } } #line 2 "../../include/QtCore/qalgorithms.h" #line 26 "../../include/QtCore/../../src/corelib/io/qdebug.h" #line 1 "../../include/QtCore/qhash.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qhash.h" #line 1 "../../include/QtCore/qatomic.h" #line 1 "../../include/QtCore/../../src/corelib/thread/qatomic.h" #line 1 "../../include/QtCore/arch/qatomic.h" #line 1 "../../include/QtCore/qglobal.h" #line 26 "../../include/QtCore/arch/qatomic.h" #line 100 "../../include/QtCore/arch/qatomic.h" extern "C" { int q_atomic_test_and_set_int(volatile int *ptr, int expected, int newval); int q_atomic_test_and_set_ptr(volatile void *ptr, void *expected, void *newval); int q_atomic_increment(volatile int *ptr); int q_atomic_decrement(volatile int *ptr); int q_atomic_set_int(volatile int *ptr, int newval); void *q_atomic_set_ptr(volatile void *ptr, void *newval); } inline int q_atomic_test_and_set_acquire_int(volatile int *ptr, int expected, int newval) { return q_atomic_test_and_set_int(ptr, expected, newval); } inline int q_atomic_test_and_set_release_int(volatile int *ptr, int expected, int newval) { return q_atomic_test_and_set_int(ptr, expected, newval); } #line 30 "../../include/QtCore/../../src/corelib/thread/qatomic.h" #line 1 "../../include/QtCore/qglobal.h" #line 32 "../../include/QtCore/../../src/corelib/thread/qatomic.h" typedef QtValidLicenseForCoreModule QtCoreModule; struct QBasicAtomic { volatile int atomic; void init(int x = 0) { atomic = x; } inline bool ref() { return q_atomic_increment(&atomic) != 0; } inline bool deref() { return q_atomic_decrement(&atomic) != 0; } inline bool operator==(int x) const { return atomic == x; } inline bool operator!=(int x) const { return atomic != x; } inline bool operator!() const { return atomic == 0; } inline operator int() const { return atomic; } inline QBasicAtomic &operator=(int x) { (void) q_atomic_set_int(&atomic, x); return *this; } inline bool testAndSet(int expected, int newval) { return q_atomic_test_and_set_int(&atomic, expected, newval) != 0; } inline bool testAndSetAcquire(int expected, int newval) { return q_atomic_test_and_set_acquire_int(&atomic, expected, newval) != 0; } inline bool testAndSetRelease(int expected, int newval) { return q_atomic_test_and_set_release_int(&atomic, expected, newval) != 0; } inline int exchange(int newval) { return q_atomic_set_int(&atomic, newval); } }; template struct QBasicAtomicPointer { volatile T *pointer; void init(T *t = 0) { pointer = t; } inline bool operator==(T *t) const { return pointer == t; } inline bool operator!=(T *t) const { return !operator==(t); } inline bool operator!() const { return operator==(0); } inline operator T *() const { return const_cast(pointer); } inline T *operator->() const { return const_cast(pointer); } inline QBasicAtomicPointer &operator=(T *t) { (void) q_atomic_set_ptr(&pointer, t); return *this; } inline bool testAndSet(T *expected, T *newval) { return q_atomic_test_and_set_ptr(&pointer, expected, newval); } inline T *exchange(T * newval) { return static_cast(q_atomic_set_ptr(&pointer, newval)); } }; template inline T qAtomicSetPtr(volatile T *ptr, T newval) { return static_cast(q_atomic_set_ptr(ptr, newval)); } class QAtomic : public QBasicAtomic { public: inline QAtomic(int x = 0) { init(x); } inline QAtomic(const QAtomic ©) { init(copy); } inline QAtomic &operator=(int x) { (void) QBasicAtomic::operator=(x); return *this; } inline QAtomic &operator=(const QAtomic ©) { (void) QBasicAtomic::operator=(copy); return *this; } }; template class QAtomicPointer : public QBasicAtomicPointer { public: inline QAtomicPointer(T *t = 0) { init(t); } inline QAtomicPointer(const QAtomicPointer ©) { init(copy); } inline QAtomicPointer &operator=(T *t) { (void) QBasicAtomicPointer::operator=(t); return *this; } inline QAtomicPointer &operator=(const QAtomicPointer ©) { (void) QBasicAtomicPointer::operator=(copy); return *this; } }; template inline void qAtomicAssign(T *&d, T *x) { x->ref.ref(); x = qAtomicSetPtr(&d, x); if (!x->ref.deref()) delete x; } template inline void qAtomicAssign(QBasicAtomicPointer &d, T *x) { x->ref.ref(); x = d.exchange(x); if (!x->ref.deref()) delete x; } template inline void qAtomicAssign(QBasicAtomicPointer &d, const QBasicAtomicPointer &x) { qAtomicAssign(d, x); } template inline void qAtomicDetach(T *&d) { if (d->ref == 1) return; T *x = new T(*d); x = qAtomicSetPtr(&d, x); if (!x->ref.deref()) delete x; } template inline void qAtomicDetach(QBasicAtomicPointer &d) { if (d->ref == 1) return; T *x = new T(*d); x = d.exchange(x); if (!x->ref.deref()) delete x; } #line 2 "../../include/QtCore/qatomic.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qhash.h" #line 1 "../../include/QtCore/qchar.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qchar.h" #line 1 "../../include/QtCore/qglobal.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qchar.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QString; struct QLatin1Char { public: inline explicit QLatin1Char(char c) : ch(c) {} inline const char toLatin1() const { return ch; } inline const ushort unicode() const { return ushort(uchar(ch)); } private: char ch; }; class QChar { public: QChar(); QChar(char c); QChar(uchar c); QChar(QLatin1Char ch); QChar(uchar c, uchar r); inline QChar(ushort rc) : ucs(rc){} QChar(short rc); QChar(uint rc); QChar(int rc); enum SpecialCharacter { Null = 0x0000, Nbsp = 0x00a0, ReplacementCharacter = 0xfffd, ObjectReplacementCharacter = 0xfffc, ByteOrderMark = 0xfeff, ByteOrderSwapped = 0xfffe, null = Null, replacement = ReplacementCharacter, byteOrderMark = ByteOrderMark, byteOrderSwapped = ByteOrderSwapped, nbsp = Nbsp, ParagraphSeparator = 0x2029, LineSeparator = 0x2028 }; QChar(SpecialCharacter sc); enum Category { NoCategory, Mark_NonSpacing, Mark_SpacingCombining, Mark_Enclosing, Number_DecimalDigit, Number_Letter, Number_Other, Separator_Space, Separator_Line, Separator_Paragraph, Other_Control, Other_Format, Other_Surrogate, Other_PrivateUse, Other_NotAssigned, Letter_Uppercase, Letter_Lowercase, Letter_Titlecase, Letter_Modifier, Letter_Other, Punctuation_Connector, Punctuation_Dash, Punctuation_Open, Punctuation_Close, Punctuation_InitialQuote, Punctuation_FinalQuote, Punctuation_Other, Symbol_Math, Symbol_Currency, Symbol_Modifier, Symbol_Other, Punctuation_Dask = Punctuation_Dash }; enum Direction { DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON, DirLRE, DirLRO, DirAL, DirRLE, DirRLO, DirPDF, DirNSM, DirBN }; enum Decomposition { NoDecomposition, Canonical, Font, NoBreak, Initial, Medial, Final, Isolated, Circle, Super, Sub, Vertical, Wide, Narrow, Small, Square, Compat, Fraction , Single = NoDecomposition }; enum Joining { OtherJoining, Dual, Right, Center }; enum CombiningClass { Combining_BelowLeftAttached = 200, Combining_BelowAttached = 202, Combining_BelowRightAttached = 204, Combining_LeftAttached = 208, Combining_RightAttached = 210, Combining_AboveLeftAttached = 212, Combining_AboveAttached = 214, Combining_AboveRightAttached = 216, Combining_BelowLeft = 218, Combining_Below = 220, Combining_BelowRight = 222, Combining_Left = 224, Combining_Right = 226, Combining_AboveLeft = 228, Combining_Above = 230, Combining_AboveRight = 232, Combining_DoubleBelow = 233, Combining_DoubleAbove = 234, Combining_IotaSubscript = 240 }; enum UnicodeVersion { Unicode_Unassigned, Unicode_1_1, Unicode_2_0, Unicode_2_1_2, Unicode_3_0, Unicode_3_1, Unicode_3_2, Unicode_4_0 }; int digitValue() const; QChar toLower() const; QChar toUpper() const; Category category() const; Direction direction() const; Joining joining() const; bool hasMirrored() const; inline bool isLower() const { return category() == Letter_Lowercase; } inline bool isUpper() const { return category() == Letter_Uppercase; } inline bool mirrored() const { return hasMirrored(); } QChar mirroredChar() const; QString decomposition() const; Decomposition decompositionTag() const; unsigned char combiningClass() const; UnicodeVersion unicodeVersion() const; const char toAscii() const; inline const char toLatin1() const; inline const ushort unicode() const { return ucs; } inline ushort &unicode() { return ucs; } static QChar fromAscii(char c); static QChar fromLatin1(char c); inline bool isNull() const { return ucs == 0; } bool isPrint() const; bool isPunct() const; bool isSpace() const; bool isMark() const; bool isLetter() const; bool isNumber() const; bool isLetterOrNumber() const; bool isDigit() const; bool isSymbol() const; inline uchar cell() const { return uchar(ucs & 0xff); } inline uchar row() const { return uchar((ucs>>8)&0xff); } inline void setCell(uchar cell); inline void setRow(uchar row); inline QChar lower() const { return toLower(); } inline QChar upper() const { return toUpper(); } static inline bool networkOrdered() { return QSysInfo::ByteOrder == QSysInfo::BigEndian; } inline const char latin1() const { return toLatin1(); } inline const char ascii() const { return toAscii(); } private: ushort ucs; } ; template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QChar)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QChar"; } }; inline QChar::QChar() : ucs(0) {} inline const char QChar::toLatin1() const { return ucs > 0xff ? '\0' : char(ucs); } inline QChar QChar::fromLatin1(char c) { return QChar(ushort(uchar(c))); } inline QChar::QChar(uchar c, uchar r) : ucs((ushort(r) << 8) | c){} inline QChar::QChar(short rc) : ucs(ushort(rc)){} inline QChar::QChar(uint rc) : ucs(ushort(rc & 0xffff)){} inline QChar::QChar(int rc) : ucs(ushort(rc & 0xffff)){} inline QChar::QChar(SpecialCharacter s) : ucs(ushort(s)) {} inline QChar::QChar(QLatin1Char ch) : ucs(ch.unicode()) {} inline void QChar::setCell(uchar acell) { ucs = (ucs & 0xff00) + acell; } inline void QChar::setRow(uchar arow) { ucs = (ushort(arow)<<8) + (ucs&0xff); } inline bool operator==(QChar c1, QChar c2) { return c1.unicode() == c2.unicode(); } inline bool operator!=(QChar c1, QChar c2) { return c1.unicode() != c2.unicode(); } inline bool operator<=(QChar c1, QChar c2) { return c1.unicode() <= c2.unicode(); } inline bool operator>=(QChar c1, QChar c2) { return c1.unicode() >= c2.unicode(); } inline bool operator<(QChar c1, QChar c2) { return c1.unicode() < c2.unicode(); } inline bool operator>(QChar c1, QChar c2) { return c1.unicode() > c2.unicode(); } QDataStream &operator<<(QDataStream &, const QChar &); QDataStream &operator>>(QDataStream &, QChar &); #line 2 "../../include/QtCore/qchar.h" #line 27 "../../include/QtCore/../../src/corelib/tools/qhash.h" #line 1 "../../include/QtCore/qiterator.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qiterator.h" #line 1 "../../include/QtCore/qglobal.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qiterator.h" typedef QtValidLicenseForCoreModule QtCoreModule; namespace std { struct bidirectional_iterator_tag; struct random_access_iterator_tag; } #line 60 "../../include/QtCore/../../src/corelib/tools/qiterator.h" #line 99 "../../include/QtCore/../../src/corelib/tools/qiterator.h" #line 131 "../../include/QtCore/../../src/corelib/tools/qiterator.h" #line 170 "../../include/QtCore/../../src/corelib/tools/qiterator.h" #line 2 "../../include/QtCore/qiterator.h" #line 28 "../../include/QtCore/../../src/corelib/tools/qhash.h" #line 1 "../../include/QtCore/qlist.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qlist.h" #line 1 "../../include/QtCore/qiterator.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qlist.h" #line 1 "../../include/QtCore/qatomic.h" #line 27 "../../include/QtCore/../../src/corelib/tools/qlist.h" #line 1 "../../include/QtCore/qalgorithms.h" #line 28 "../../include/QtCore/../../src/corelib/tools/qlist.h" #line 1 "/usr/include/CC/iterator" #line 1 "/usr/include/CC/xutility" #line 1 "/usr/include/CC/climits" #line 1 "/usr/include/limits.h" #ident "@(#)unixsrc:usr/src/i386/head/limits.h /main/1" #line 39 "/usr/include/limits.h" #line 56 "/usr/include/limits.h" #line 108 "/usr/include/limits.h" #line 117 "/usr/include/limits.h" #line 126 "/usr/include/limits.h" #line 137 "/usr/include/limits.h" #line 146 "/usr/include/limits.h" #line 158 "/usr/include/limits.h" #line 200 "/usr/include/limits.h" extern "C" { extern long _sysconf(int); } #line 5 "/usr/include/CC/climits" #line 12 "/usr/include/CC/climits" #line 5 "/usr/include/CC/xutility" #line 1 "/usr/include/CC/utility" #line 1 "/usr/include/CC/iosfwd" #line 1 "/usr/include/CC/cstdio" #line 1 "/usr/include/stdio.h" #ident "@(#)unixsrc:usr/src/i386/head/stdio.h /main/2" #line 1 "/usr/include/sys/types.h" #ident "@(#)unixsrc:usr/src/i386/uts/util/types.h /main/osr600mp2/2" typedef char int8_t; typedef unsigned char uint8_t; typedef short int16_t; typedef unsigned short uint16_t; typedef int int32_t; typedef unsigned int uint32_t; typedef int t_scalar_t; typedef unsigned int t_uscalar_t; typedef long intptr_t; typedef unsigned long uintptr_t; #line 102 "/usr/include/sys/types.h" typedef long long int64_t; typedef unsigned long long uint64_t; typedef unsigned char uchar_t; typedef unsigned short ushort_t; typedef unsigned int uint_t; typedef unsigned long ulong_t; typedef unsigned long useconds_t; typedef unsigned long long ullong_t; typedef long long llong_t; typedef long daddr_t; typedef char * caddr_t; typedef char * addr_t; typedef char * faddr_t; #line 156 "/usr/include/sys/types.h" typedef long off32_t; typedef llong_t off64_t; typedef long n_off_t; typedef ulong_t uoff32_t; typedef ullong_t uoff64_t; typedef ulong_t n_uoff_t; typedef unsigned short ino16_t; typedef ulong_t ino32_t; typedef ullong_t ino64_t; typedef ulong_t n_ino_t; typedef long blkcnt32_t; typedef llong_t blkcnt64_t; typedef long n_blkcnt_t; typedef ulong_t fsblkcnt32_t; typedef ullong_t fsblkcnt64_t; typedef ulong_t n_fsblkcnt_t; typedef ulong_t fsfilcnt32_t; typedef ullong_t fsfilcnt64_t; typedef ulong_t n_fsfilcnt_t; #line 222 "/usr/include/sys/types.h" typedef n_off_t off_t; typedef n_uoff_t uoff_t; typedef n_ino_t ino_t; typedef n_blkcnt_t blkcnt_t; typedef n_fsblkcnt_t fsblkcnt_t; typedef n_fsfilcnt_t fsfilcnt_t; #line 252 "/usr/include/sys/types.h" typedef short cnt_t; typedef ulong_t vaddr_t; typedef ulong_t paddr_t; typedef uint_t ppid_t; typedef uchar_t use_t; typedef short sysid_t; typedef short index_t; typedef ulong_t paddr32_t; typedef ullong_t paddr64_t; typedef uint_t rm_key_t; typedef enum __boolean { B_FALSE, B_TRUE } boolean_t; typedef struct _label { int val[6]; } label_t; typedef struct _quad { long val[2]; } quad; typedef long id_t; typedef unsigned long long memsize_t; typedef long lwpid_t; typedef long long cgid_t; typedef int cgnum_t; typedef int processorid_t; typedef int toid_t; typedef ulong_t pvec_t; typedef ulong_t lid_t; typedef lid_t level_t; typedef ulong_t major_t; typedef ulong_t minor_t; typedef unsigned long adtemask_t[8]; typedef ushort_t o_mode_t; typedef short o_dev_t; typedef ushort_t o_uid_t; typedef o_uid_t o_gid_t; typedef short o_nlink_t; typedef short o_pid_t; typedef ushort_t o_ino_t; typedef int key_t; typedef ulong_t mode_t; typedef long uid_t; typedef uid_t gid_t; typedef ulong_t nlink_t; typedef ulong_t dev_t; typedef long pid_t; typedef id_t thread_t; typedef thread_t pthread_t; typedef int ssize_t; typedef long time_t; typedef long clock_t; #line 454 "/usr/include/sys/types.h" typedef struct { int r[1]; } * physadr; typedef unsigned char unchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; #line 502 "/usr/include/sys/types.h" typedef long hostid_t; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned int pl_t; typedef uchar_t k_pl_t; #line 561 "/usr/include/sys/types.h" #line 1 "/usr/include/sys/select.h" #ident "@(#)unixsrc:usr/src/common/uts/fs/select.h /main/1" typedef long fd_mask; typedef struct fd_set { fd_mask fds_bits[(4096 + (sizeof(fd_mask) * 8) - 1) / (sizeof(fd_mask) * 8)]; } fd_set; extern "C" { struct timeval; extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); extern void *memset(void *, int, size_t); } #line 563 "/usr/include/sys/types.h" typedef struct __sched_fifo_param { int __prio; } sched_fifo_param_t; typedef struct __sched_fcfs_param { int __prio; } sched_fcfs_param_t; typedef struct __sched_other_param { int __prio; } sched_other_param_t; typedef struct __sched_ts_param { int __prio; } sched_ts_param_t; union __sched_union { sched_fifo_param_t __sched_fifo; sched_fcfs_param_t __sched_fcfs; sched_other_param_t __sched_other; sched_ts_param_t __sched_ts; long __policy_params[1]; }; struct __sched_param { int __sched_priority; union __sched_union __sched_other_stuff; }; typedef struct { int __pt_attr_status; size_t __pt_attr_stacksize; void *__pt_attr_stackaddr; int __pt_attr_detachstate; int __pt_attr_contentionscope; int __pt_attr_inheritsched; int __pt_attr_schedpolicy; struct __sched_param __pt_attr_sched_param; int __pt_attr_tlflags; } pthread_attr_t; typedef struct { int __pt_condattr_status; int __pt_condattr_pshared; } pthread_condattr_t; typedef struct { int __pt_mutexattr_status; int __pt_mutexattr_pshared; int __pt_mutexattr_type; } pthread_mutexattr_t; typedef struct { int __pt_rwlockattr_status; int __pt_rwlockattr_pshared; } pthread_rwlockattr_t; typedef struct __thrq_elt thrq_elt_t; struct __thrq_elt { thrq_elt_t *__thrq_next; thrq_elt_t *__thrq_prev; }; typedef volatile unsigned char _simplelock_t; typedef volatile struct __lwp_mutex { char __wanted; _simplelock_t __lock; } lwp_mutex_t; typedef volatile struct __mutex { lwp_mutex_t __m_lmutex; lwp_mutex_t __m_sync_lock; int __m_type; thrq_elt_t __m_sleepq; int __filler[2]; } mutex_t; typedef volatile struct __rmutex { mutex_t __rm_mutex; pid_t __rm_pid; thread_t __rm_owner; int __rm_depth; long __filler; } rmutex_t; typedef volatile struct __pthread_mutex { mutex_t __pt_mutex_mutex; pid_t __pt_mutex_pid; thread_t __pt_mutex_owner; int __pt_mutex_depth; pthread_mutexattr_t __pt_mutex_attr; } pthread_mutex_t; typedef volatile struct __lwp_cond { char __wanted; } lwp_cond_t; typedef volatile struct __cond { lwp_cond_t __c_lcond; lwp_mutex_t __c_sync_lock; int __c_type; thrq_elt_t __c_syncq; } cond_t; typedef volatile struct __sema { mutex_t __s_mutex; cond_t __s_cond; short __s_count; short __s_wakecnt; int __s_type; } sema_t, sem_t; typedef volatile struct __pthread_cond { cond_t __pt_cond_cond; pthread_condattr_t __pt_cond_attr; } pthread_cond_t; typedef volatile struct __rwcv rwcv_t; struct __rwcv { cond_t __rwcv_cond; rwcv_t *__rwcv_next; char __rwcv_rw; char __rwcv_wakeup; short __rwcv_readerwanted; }; struct __rwlock { mutex_t __rw_mutex; lwp_cond_t __rw_lwpcond; int __rw_type; short __rw_readers; char __rw_writer; char __rw_wrwakeup; short __rw_writerwanted; short __rw_rdwakecnt; rwcv_t *__rw_cvqhead; rwcv_t *__rw_cvqtail; int __pad[4]; }; typedef struct { struct __rwlock __pt_rwlock_rwlock; pthread_rwlockattr_t __pt_rwlock_attr; } pthread_rwlock_t; typedef unsigned int thread_key_t; typedef thread_key_t pthread_key_t; typedef struct { int __pt_once_initialized; int __pt_once_init_in_progress; mutex_t __pt_once_mutex; cond_t __pt_once_cond; } pthread_once_t; typedef unsigned long clusternode_t; typedef unsigned long mask_t; typedef mask_t priv_t; #line 22 "/usr/include/stdio.h" typedef long fpos32_t; typedef long long fpos64_t; typedef long fpos_t; #line 35 "/usr/include/stdio.h" typedef struct _FILE_ { int __cnt; unsigned char *__ptr; unsigned char *__base; unsigned char __flag; unsigned char __file; unsigned char __buf[2]; } FILE; #line 107 "/usr/include/stdio.h" extern "C" { extern FILE __iob[]; extern int remove(const char *); extern int rename(const char *, const char *); extern FILE *tmpfile(void); extern char *tmpnam(char *); extern int fclose(FILE *); extern int fflush(FILE *); extern FILE *fopen(const char *, const char *); extern FILE *freopen(const char *, const char *, FILE *); extern void setbuf(FILE *, char *); extern int setvbuf(FILE *, char *, int, size_t); extern int fprintf(FILE *, const char *, ...); extern int fscanf(FILE *, const char *, ...); extern int printf(const char *, ...); extern int scanf(const char *, ...); extern int sprintf(char *, const char *, ...); extern int sscanf(const char *, const char *, ...); extern int vfprintf(FILE *, const char *, void *); extern int vprintf(const char *, void *); extern int vsprintf(char *, const char *, void *); extern int fgetc(FILE *); extern char *fgets(char *, int, FILE *); extern int fputc(int, FILE *); extern int fputs(const char *, FILE *); extern int getc(FILE *); extern int getchar(void); extern char *gets(char *); extern int putc(int, FILE *); extern int putchar(int); extern int puts(const char *); extern int ungetc(int, FILE *); extern size_t fread(void *, size_t, size_t, FILE *); extern size_t fwrite(const void *, size_t, size_t, FILE *); extern int fgetpos(FILE *, fpos_t *); extern int fseek(FILE *, long, int); extern int fsetpos(FILE *, const fpos_t *); extern long ftell(FILE *); extern void rewind(FILE *); extern void clearerr(FILE *); extern int feof(FILE *); extern int ferror(FILE *); extern void perror(const char *); extern int __filbuf(FILE *); extern int __flsbuf(int, FILE *); inline int getc(FILE *__1) { return --__1->__cnt < 0 ? __filbuf(__1) : *__1->__ptr++; } inline int putc(int __1, FILE *__2) {return --__2->__cnt < 0 ? __flsbuf(__1, __2) : (*__2->__ptr++ = __1);} inline int getchar(){ return getc((&__iob[0])); } inline int putchar(int __1){ return putc(__1, (&__iob[1])); } inline int feof(FILE *__1){ return __1->__flag & 0020; } inline int ferror(FILE *__1){ return __1->__flag & 0040; } #line 206 "/usr/include/stdio.h" extern char *ctermid(char *); extern FILE *fdopen(int, const char *); extern int fileno(FILE *); extern FILE *popen(const char *, const char *); extern char *cuserid(char *); extern char *tempnam(const char *, const char *); extern char *optarg; extern int optind, opterr, optopt; extern int getopt(int, char *const *, const char *); extern int getw(FILE *); extern int putw(int, FILE *); extern int pclose(FILE *); extern int getc_unlocked(FILE *); extern int getchar_unlocked(void); extern int putc_unlocked(int, FILE *); extern int putchar_unlocked(int); inline int getc_unlocked(FILE *__1) { return --__1->__cnt < 0 ? __filbuf(__1) : *__1->__ptr++; } inline int putc_unlocked(int __1, FILE *__2) {return --__2->__cnt < 0 ? __flsbuf(__1, __2) : (*__2->__ptr++ = __1);} inline int getchar_unlocked(){ return getc_unlocked((&__iob[0])); } inline int putchar_unlocked(int __1){ return putc_unlocked(__1, (&__iob[1])); } #line 257 "/usr/include/stdio.h" extern void flockfile(FILE *); extern int ftrylockfile(FILE *); extern void funlockfile(FILE *); extern int fseeko(FILE *, n_off_t, int); extern n_off_t ftello(FILE *); extern int fgetpos32(FILE *, fpos32_t *); extern FILE *fopen32(const char *, const char *); extern FILE *freopen32(const char *, const char *, FILE *); extern int fseeko32(FILE *, off32_t, int); extern int fsetpos32(FILE *, const fpos32_t *); extern off32_t ftello32(FILE *); extern FILE *tmpfile32(void); extern int fgetpos64(FILE *, fpos64_t *); extern FILE *fopen64(const char *, const char *); extern FILE *freopen64(const char *, const char *, FILE *); extern int fseeko64(FILE *, off64_t, int); extern int fsetpos64(FILE *, const fpos64_t *); extern off64_t ftello64(FILE *); extern FILE *tmpfile64(void); #line 323 "/usr/include/stdio.h" #line 335 "/usr/include/stdio.h" typedef long wint_t; extern int system(const char *); extern int fwide(FILE *, int); extern wint_t fgetwc(FILE *); extern wchar_t *fgetws(wchar_t *, int, FILE *); extern wint_t fputwc(wchar_t, FILE *); extern int fputws(const wchar_t *, FILE *); extern wint_t getwc(FILE *); extern wint_t getwchar(void); extern wint_t putwc(wchar_t, FILE *); extern wint_t putwchar(wchar_t); extern wint_t ungetwc(wint_t, FILE *); extern int fwprintf(FILE *, const wchar_t *, ...); extern int fwscanf(FILE *, const wchar_t *, ...); extern int wprintf(const wchar_t *, ...); extern int wscanf(const wchar_t *, ...); extern int swprintf(wchar_t *, size_t, const wchar_t *, ...); extern int swscanf(const wchar_t *, const wchar_t *, ...); extern int vfwprintf(FILE *, const wchar_t *, void *); extern int vfwscanf(FILE *, const wchar_t *, void *); extern int vwprintf(const wchar_t *, void *); extern int vwscanf(const wchar_t *, void *); extern int vswprintf(wchar_t *, size_t, const wchar_t *, void *); extern int vswscanf(const wchar_t *, const wchar_t *, void *); extern void funflush(FILE *); extern int asprintf(char **, const char *, ...); extern int vasprintf(char **, const char *, void *); extern int fsprintf(char *, size_t, int (*)(void *, const char *, size_t), void *, const char *, ...); extern int vfsprintf(char *, size_t, int (*)(void *, const char *, size_t), void *, const char *, void *); extern int snprintf(char *, size_t, const char *, ...); extern int _xsnprintf(char *, size_t, const char *, ...); extern int vsnprintf(char *, size_t, const char *, void *); extern int _xvsnprintf(char *, size_t, const char *, void *); extern int vfscanf(FILE *, const char *, void *); extern int vscanf(const char *, void *); extern int vsscanf(const char *, const char *, void *); } #line 1 "/usr/include/CC/cstdio" #line 28 "/usr/include/CC/cstdio" #line 399 "/usr/include/stdio.h" #line 5 "/usr/include/CC/cstdio" #line 1 "/usr/include/CC/yvals.h" #line 18 "/usr/include/CC/yvals.h" namespace std { typedef bool _Bool; #line 38 "/usr/include/CC/yvals.h" #line 55 "/usr/include/CC/yvals.h" #line 71 "/usr/include/CC/yvals.h" typedef int _Mbstatet; #line 86 "/usr/include/CC/yvals.h" class _Lockit { public: explicit _Lockit(int = 0); ~_Lockit(); private: int _which_lock; }; } #line 6 "/usr/include/CC/cstdio" namespace std { using ::size_t; using ::fpos_t; using ::FILE; using ::clearerr; using ::fclose; using ::feof; using ::ferror; using ::fflush; using ::fgetc; using ::fgetpos; using ::fgets; using ::fopen; using ::fprintf; using ::fputc; using ::fputs; using ::fread; using ::freopen; using ::fscanf; using ::fseek; using ::fsetpos; using ::ftell; using ::fwrite; using ::getc; using ::getchar; using ::gets; using ::perror; using ::putc; using ::putchar; using ::printf; using ::puts; using ::remove; using ::rename; using ::rewind; using ::scanf; using ::setbuf; using ::setvbuf; using ::sprintf; using ::sscanf; using ::tmpfile; using ::tmpnam; using ::ungetc; using ::vfprintf; using ::vprintf; using ::vsprintf; } #line 5 "/usr/include/CC/iosfwd" #line 1 "/usr/include/CC/cstring" #line 1 "/usr/include/string.h" #ident "@(#)unixsrc:usr/src/i386/head/string.h /main/1" extern "C" { extern void *memcpy(void *, const void *, size_t); extern void *memccpy(void *, const void *, int, size_t); extern void *memmove(void *, const void *, size_t); extern void *memset(void *, int, size_t); extern char *strcpy(char *, const char *); extern char *strdup(const char *); extern char *strncpy(char *, const char *, size_t); extern char *strcat(char *, const char *); extern char *strncat(char *, const char *, size_t); extern char *strtok(char *, const char *); extern char *strtok_r(char *, const char *, char **); extern char *strerror(int); extern char *strlist(char *, const char *, ...); extern char *strsignal(int); extern int memcmp(const void *, const void *, size_t); extern int strcmp(const char *, const char *); extern int strcoll(const char *, const char *); extern int strncmp(const char *, const char *, size_t); extern size_t strxfrm(char *, const char *, size_t); extern size_t strcspn(const char *, const char *); extern size_t strspn(const char *, const char *); extern size_t strlen(const char *); extern char *strcadd(char *, const char *); extern char *strccpy(char *, const char *); extern char *streadd(char *, const char *, const char *); extern char *strecpy(char *, const char *, const char *); extern int strfind(const char *, const char *); extern char *strtrns(const char *, const char *, const char *, char *); extern size_t strlcat(char *, const char *, size_t); extern size_t strlcpy(char *, const char *, size_t); extern int ffs(int); const void *memchr(const void *, int, size_t); const char *strchr(const char *, int); const char *strpbrk(const char *, const char *); const char *strrchr(const char *, int); const char *strrspn(const char *, const char *); const char *strstr(const char *, const char *); } extern "C++" { inline void *memchr(void *__1, int __2, size_t __3) { return (void *)memchr((const void *)__1, __2, __3); } inline char *strchr(char *__1, int __2) { return (char *)strchr((const char *)__1, __2); } inline char *strpbrk(char *__1, const char *__2) { return (char *)strpbrk((const char *)__1, __2); } inline char *strrchr(char *__1, int __2) { return (char *)strrchr((const char *)__1, __2); } inline char *strrspn(char *__1, const char *__2) { return (char *)strrspn((const char *)__1, __2); } inline char *strstr(char *__1, const char *__2) { return (char *)strstr((const char *)__1, __2); } } #line 1 "/usr/include/CC/cstring" #line 21 "/usr/include/CC/cstring" #line 99 "/usr/include/string.h" #line 111 "/usr/include/string.h" #line 5 "/usr/include/CC/cstring" namespace std { using ::size_t; using ::memchr; using ::memcmp; using ::memcpy; using ::memmove; using ::memset; using ::strcat; using ::strchr; using ::strcmp; using ::strcoll; using ::strcpy; using ::strcspn; using ::strerror; using ::strlen; using ::strncat; using ::strncmp; using ::strncpy; using ::strpbrk; using ::strrchr; using ::strspn; using ::strstr; using ::strtok; using ::strxfrm; } #line 6 "/usr/include/CC/iosfwd" #line 1 "/usr/include/CC/cwchar" #line 1 "/usr/include/wchar.h" #ident "@(#)unixsrc:usr/src/common/head/wchar.h /main/3" #line 23 "/usr/include/wchar.h" typedef unsigned long wuchar_t; typedef struct { unsigned char __rule[4]; wchar_t __mbwc; wchar_t __mbst; } mbstate_t; struct _FILE_; struct tm; #line 71 "/usr/include/wchar.h" #line 84 "/usr/include/wchar.h" extern "C" { extern wint_t fgetwc(struct _FILE_ *); extern wchar_t *fgetws(wchar_t *, int, struct _FILE_ *); extern wint_t fputwc(wchar_t, struct _FILE_ *); extern int fputws(const wchar_t *, struct _FILE_ *); extern wint_t getwc(struct _FILE_ *); extern wint_t getwchar(void); extern wint_t putwc(wchar_t, struct _FILE_ *); extern wint_t putwchar(wchar_t); extern wint_t ungetwc(wint_t, struct _FILE_ *); extern wchar_t *wcscat(wchar_t *, const wchar_t *); extern int wcscmp(const wchar_t *, const wchar_t *); extern int wcscoll(const wchar_t *, const wchar_t *); extern size_t wcsxfrm(wchar_t *, const wchar_t *, size_t); extern wchar_t *wcscpy(wchar_t *, const wchar_t *); extern size_t wcscspn(const wchar_t *, const wchar_t *); extern size_t wcslen(const wchar_t *); extern wchar_t *wcsncat(wchar_t *, const wchar_t *, size_t); extern int wcsncmp(const wchar_t *, const wchar_t *, size_t); extern wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t); extern size_t wcsspn(const wchar_t *, const wchar_t *); extern wchar_t *_wcstok(wchar_t *, const wchar_t *, wchar_t **); extern double wcstod(const wchar_t *, wchar_t **); extern float wcstof(const wchar_t *, wchar_t **); extern long wcstol(const wchar_t *, wchar_t **, int); long double wcstold(const wchar_t *, wchar_t **); long long wcstoll(const wchar_t *, wchar_t **, int); unsigned long wcstoul(const wchar_t *, wchar_t **, int); unsigned long long wcstoull(const wchar_t *, wchar_t **, int); extern int wcswidth(const wchar_t *, size_t); #line 153 "/usr/include/wchar.h" extern size_t wcsftime(wchar_t *, size_t, const wchar_t *, const struct tm *); extern wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **); extern int fwide(struct _FILE_ *, int); extern int fwprintf(struct _FILE_ *, const wchar_t *, ...); extern int fwscanf(struct _FILE_ *, const wchar_t *, ...); extern int wprintf(const wchar_t *, ...); extern int wscanf(const wchar_t *, ...); extern int swprintf(wchar_t *, size_t, const wchar_t *, ...); extern int swscanf(const wchar_t *, const wchar_t *, ...); extern int vfwprintf(struct _FILE_ *, const wchar_t *, void *); extern int vwprintf(const wchar_t *, void *); extern int vswprintf(wchar_t *, size_t, const wchar_t *, void *); extern wint_t btowc(int); extern int wctob(wint_t); extern size_t mbrlen(const char *, size_t, mbstate_t *); extern size_t mbrtowc(wchar_t *, const char *, size_t, mbstate_t *); extern size_t wcrtomb(char *, wchar_t, mbstate_t *); extern size_t mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *); extern size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *); extern int mbsinit(const mbstate_t *); inline size_t mbrlen(const char *__1, size_t __2, mbstate_t *__3) { return mbrtowc(0, __1, __2, __3); } extern int wmemcmp(const wchar_t *, const wchar_t *, size_t); extern wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t); extern wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); extern wchar_t *wmemset(wchar_t *, wchar_t, size_t); extern int mbswidth(const char *, size_t); extern int wcwidth(wchar_t); extern int vfwscanf(struct _FILE_ *, const wchar_t *, void *); extern int vwscanf(const wchar_t *, void *); extern int vswscanf(const wchar_t *, const wchar_t *, void *); const wchar_t *wcschr(const wchar_t *, wchar_t); const wchar_t *wcspbrk(const wchar_t *, const wchar_t *); const wchar_t *wcsrchr(const wchar_t *, wchar_t); const wchar_t *wcsstr(const wchar_t *, const wchar_t *); const wchar_t *wcswcs(const wchar_t *, const wchar_t *); const wchar_t *wmemchr(const wchar_t *, wchar_t, size_t); } extern "C++" { inline wchar_t *wcschr(wchar_t *__1, wchar_t __2) { return (wchar_t *)wcschr((const wchar_t *)__1, __2); } inline wchar_t *wcspbrk(wchar_t *__1, const wchar_t *__2) { return (wchar_t *)wcspbrk((const wchar_t *)__1, __2); } inline wchar_t *wcsrchr(wchar_t *__1, wchar_t __2) { return (wchar_t *)wcsrchr((const wchar_t *)__1, __2); } inline wchar_t *wcsstr(wchar_t *__1, const wchar_t *__2) { return (wchar_t *)wcsstr((const wchar_t *)__1, __2); } inline wchar_t *wcswcs(wchar_t *__1, const wchar_t *__2) { return (wchar_t *)wcswcs((const wchar_t *)__1, __2); } inline wchar_t *wmemchr(wchar_t *__1, wchar_t __2, size_t __3) { return (wchar_t *)wmemchr((const wchar_t *)__1, __2, __3); } } #line 1 "/usr/include/CC/cwchar" #line 30 "/usr/include/CC/cwchar" #line 234 "/usr/include/wchar.h" #line 249 "/usr/include/wchar.h" #line 5 "/usr/include/CC/cwchar" namespace std { using ::mbstate_t; using ::size_t; using ::tm; using ::wint_t; using ::btowc; using ::fgetwc; using ::fgetws; using ::fputwc; using ::fputws; using ::fwide; using ::fwprintf; using ::fwscanf; using ::getwc; using ::getwchar; using ::mbrlen; using ::mbrtowc; using ::mbsrtowcs; using ::mbsinit; using ::putwc; using ::putwchar; using ::swprintf; using ::swscanf; using ::ungetwc; using ::vfwprintf; using ::vswprintf; using ::vwprintf; using ::wcrtomb; using ::wprintf; using ::wscanf; using ::wcsrtombs; using ::wcstol; using ::wcscat; using ::wcschr; using ::wcscmp; using ::wcscoll; using ::wcscpy; using ::wcscspn; using ::wcslen; using ::wcsncat; using ::wcsncmp; using ::wcsncpy; using ::wcspbrk; using ::wcsrchr; using ::wcsspn; using ::wcstod; using ::wcstoul; using ::wcsstr; using ::wcstok; using ::wcsxfrm; using ::wctob; using ::wmemchr; using ::wmemcmp; using ::wmemcpy; using ::wmemmove; using ::wmemset; using ::wcsftime; } #line 7 "/usr/include/CC/iosfwd" #line 1 "/usr/include/CC/xstddef" #line 1 "/usr/include/CC/cstddef" namespace std { using ::ptrdiff_t; using ::size_t; } #line 8 "/usr/include/CC/xstddef" namespace std { #line 66 "/usr/include/CC/xstddef" enum _Uninitialized { _Noinit}; void _Nomemory(); extern "C" { typedef void _Atexit_fun(); } } #line 8 "/usr/include/CC/iosfwd" namespace std { typedef long streamoff; typedef int streamsize; extern fpos_t _Fpz; extern const streamoff _BADOFF; template class fpos { typedef fpos<_Statetype> _Myt; public: fpos(streamoff _Off = 0) : _Myoff(_Off), _Fpos(_Fpz), _Mystate(_Stz) {} fpos(_Statetype _State, fpos_t _Fileposition) : _Myoff(0), _Fpos(_Fileposition), _Mystate(_State) {} _Statetype state() const { return (_Mystate); } void state(_Statetype _State) { _Mystate = _State; } fpos_t seekpos() const { return (_Fpos); } operator streamoff() const { return (_Myoff + ((long)(_Fpos))); } streamoff operator-(const _Myt& _Right) const { return ((streamoff)*this - (streamoff)_Right); } _Myt& operator+=(streamoff _Off) { _Myoff += _Off; return (*this); } _Myt& operator-=(streamoff _Off) { _Myoff -= _Off; return (*this); } _Myt operator+(streamoff _Off) const { _Myt _Tmp = *this; return (_Tmp += _Off); } _Myt operator-(streamoff _Off) const { _Myt _Tmp = *this; return (_Tmp -= _Off); } bool operator==(const _Myt& _Right) const { return ((streamoff)*this == (streamoff)_Right); } bool operator!=(const _Myt& _Right) const { return (!(*this == _Right)); } private: static _Statetype _Stz; streamoff _Myoff; fpos_t _Fpos; _Statetype _Mystate; }; template _Statetype fpos<_Statetype>::_Stz; typedef fpos streampos; typedef streampos wstreampos; template struct char_traits { typedef _Elem char_type; typedef _Elem int_type; typedef streampos pos_type; typedef streamoff off_type; typedef mbstate_t state_type; static void assign(_Elem& _Left, const _Elem& _Right) { _Left = _Right; } static bool eq(const _Elem& _Left, const _Elem& _Right) { return (_Left == _Right); } static bool lt(const _Elem& _Left, const _Elem& _Right) { return (_Left < _Right); } static int compare(const _Elem *_First1, const _Elem *_First2, size_t _Size) { for (size_t _Count = 0; _Count < _Size; ++_Count, ++_First1, ++_First2) if (!eq(*_First1, *_First2)) return (lt(*_First1, *_First2) ? -1 : +1); return (0); } static size_t length(const _Elem *_First) { size_t _Size; for (_Size = 0; !eq(*_First, _Elem()); ++_First) ++_Size; return (_Size); } static _Elem *copy(_Elem *_First1, const _Elem *_First2, size_t _Size) { _Elem *_Next = _First1; for (; 0 < _Size; --_Size, ++_Next, ++_First2) assign(*_Next, *_First2); return (_First1); } static const _Elem *find(const _Elem *_First, size_t _Size, const _Elem& _Char) { for (; 0 < _Size; --_Size, ++_First) if (eq(*_First, _Char)) return (_First); return (0); } static _Elem *move(_Elem *_First1, const _Elem *_First2, size_t _Size) { _Elem *_Next = _First1; if (_First2 < _Next && _Next < _First2 + _Size) for (_Next += _Size, _First2 += _Size; 0 < _Size; --_Size) assign(*--_Next, *--_First2); else for (; 0 < _Size; --_Size, ++_Next, ++_First2) assign(*_Next, *_First2); return (_First1); } static _Elem *assign(_Elem *_First, size_t _Size, _Elem _Char) { _Elem *_Next = _First; for (; 0 < _Size; --_Size, ++_Next) assign(*_Next, _Char); return (_First); } static _Elem to_char_type(const int_type& _Meta) { return (_Meta); } static int_type to_int_type(const _Elem& _Char) { return (_Char); } static bool eq_int_type(const int_type& _Left, const int_type& _Right) { return (_Left == _Right); } static int_type eof() { return ((int_type)(-1)); } static int_type not_eof(const int_type& _Meta) { return (_Meta != eof() ? _Meta : !eof()); } }; template<> struct char_traits { typedef wchar_t _Elem; typedef _Elem char_type; typedef wint_t int_type; typedef streampos pos_type; typedef streamoff off_type; typedef mbstate_t state_type; static void assign(_Elem& _Left, const _Elem& _Right) { _Left = _Right; } static bool eq(const _Elem& _Left, const _Elem& _Right) { return (_Left == _Right); } static bool lt(const _Elem& _Left, const _Elem& _Right) { return (_Left < _Right); } static int compare(const _Elem *_First1, const _Elem *_First2, size_t _Size) { return (wmemcmp(_First1, _First2, _Size)); } static size_t length(const _Elem *_First) { return (wcslen(_First)); } static _Elem *copy(_Elem *_First1, const _Elem *_First2, size_t _Size) { return (wmemcpy(_First1, _First2, _Size)); } static const _Elem *find(const _Elem *_First, size_t _Size, const _Elem& _Char) { return ((const _Elem *)wmemchr(_First, _Char, _Size)); } static _Elem *move(_Elem *_First1, const _Elem *_First2, size_t _Size) { return (wmemmove(_First1, _First2, _Size)); } static _Elem *assign(_Elem *_First, size_t _Size, _Elem _Char) { return (wmemset(_First, _Char, _Size)); } static _Elem to_char_type(const int_type& _Meta) { return (_Meta); } static int_type to_int_type(const _Elem& _Char) { return (_Char); } static bool eq_int_type(const int_type& _Left, const int_type& _Right) { return (_Left == _Right); } static int_type eof() { return ((-1)); } static int_type not_eof(const int_type& _Meta) { return (_Meta != eof() ? _Meta : !eof()); } }; template<> struct char_traits { typedef char _Elem; typedef _Elem char_type; typedef int int_type; typedef streampos pos_type; typedef streamoff off_type; typedef mbstate_t state_type; static void assign(_Elem& _Left, const _Elem& _Right) { _Left = _Right; } static bool eq(const _Elem& _Left, const _Elem& _Right) { return (_Left == _Right); } static bool lt(const _Elem& _Left, const _Elem& _Right) { return (_Left < _Right); } static int compare(const _Elem *_First1, const _Elem *_First2, size_t _Size) { return (memcmp(_First1, _First2, _Size)); } static size_t length(const _Elem *_First) { return (strlen(_First)); } static _Elem *copy(_Elem *_First1, const _Elem *_First2, size_t _Size) { return ((_Elem *)memcpy(_First1, _First2, _Size)); } static const _Elem *find(const _Elem *_First, size_t _Size, const _Elem& _Char) { return ((const _Elem *)memchr(_First, _Char, _Size)); } static _Elem *move(_Elem *_First1, const _Elem *_First2, size_t _Size) { return ((_Elem *)memmove(_First1, _First2, _Size)); } static _Elem *assign(_Elem *_First, size_t _Size, _Elem _Char) { return ((_Elem *)memset(_First, _Char, _Size)); } static _Elem to_char_type(const int_type& _Meta) { return ((_Elem)_Meta); } static int_type to_int_type(const _Elem& _Char) { return ((unsigned char)_Char); } static bool eq_int_type(const int_type& _Left, const int_type& _Right) { return (_Left == _Right); } static int_type eof() { return ((-1)); } static int_type not_eof(const int_type& _Meta) { return (_Meta != eof() ? _Meta : !eof()); } }; template class allocator; class ios_base; template > class basic_ios; template > class istreambuf_iterator; template > class ostreambuf_iterator; template > class basic_streambuf; template > class basic_istream; template > class basic_ostream; template > class basic_iostream; template, class _Alloc = allocator<_Elem> > class basic_stringbuf; template, class _Alloc = allocator<_Elem> > class basic_istringstream; template, class _Alloc = allocator<_Elem> > class basic_ostringstream; template, class _Alloc = allocator<_Elem> > class basic_stringstream; template > class basic_filebuf; template > class basic_ifstream; template > class basic_ofstream; template > class basic_fstream; typedef basic_ios > ios; typedef basic_streambuf > streambuf; typedef basic_istream > istream; typedef basic_ostream > ostream; typedef basic_iostream > iostream; typedef basic_stringbuf, allocator > stringbuf; typedef basic_istringstream, allocator > istringstream; typedef basic_ostringstream, allocator > ostringstream; typedef basic_stringstream, allocator > stringstream; typedef basic_filebuf > filebuf; typedef basic_ifstream > ifstream; typedef basic_ofstream > ofstream; typedef basic_fstream > fstream; typedef basic_ios > wios; typedef basic_streambuf > wstreambuf; typedef basic_istream > wistream; typedef basic_ostream > wostream; typedef basic_iostream > wiostream; typedef basic_stringbuf, allocator > wstringbuf; typedef basic_istringstream, allocator > wistringstream; typedef basic_ostringstream, allocator > wostringstream; typedef basic_stringstream, allocator > wstringstream; typedef basic_filebuf > wfilebuf; typedef basic_ifstream > wifstream; typedef basic_ofstream > wofstream; typedef basic_fstream > wfstream; } #line 5 "/usr/include/CC/utility" namespace std { template inline void swap(_Ty& _Left, _Ty& _Right) { _Ty _Tmp = _Left; _Left = _Right, _Right = _Tmp; } template struct pair { typedef pair<_Ty1, _Ty2> _Myt; typedef _Ty1 first_type; typedef _Ty2 second_type; pair() : first(_Ty1()), second(_Ty2()) {} pair(const _Ty1& _Val1, const _Ty2& _Val2) : first(_Val1), second(_Val2) {} template pair(const pair<_Other1, _Other2>& _Right) : first(_Right.first), second(_Right.second) {} void swap(_Myt& _Right) { std::swap(first, _Right.first); std::swap(second, _Right.second); } _Ty1 first; _Ty2 second; }; template inline void swap(pair<_Ty1, _Ty2>& _Left, pair<_Ty1, _Ty2>& _Right) { _Left.swap(_Right); } template inline bool operator==(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { return (_Left.first == _Right.first && _Left.second == _Right.second); } template inline bool operator!=(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { return (!(_Left == _Right)); } template inline bool operator<(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { return (_Left.first < _Right.first || !(_Right.first < _Left.first) && _Left.second < _Right.second); } template inline bool operator>(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { return (_Right < _Left); } template inline bool operator<=(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { return (!(_Right < _Left)); } template inline bool operator>=(const pair<_Ty1, _Ty2>& _Left, const pair<_Ty1, _Ty2>& _Right) { return (!(_Left < _Right)); } template inline pair<_Ty1, _Ty2> make_pair(const _Ty1& _Left, const _Ty2& _Right) { return (pair<_Ty1, _Ty2>(_Left, _Right)); } namespace rel_ops { template inline bool operator!=(const _Ty& _Left, const _Ty& _Right) { return (!(_Left == _Right)); } template inline bool operator>(const _Ty& _Left, const _Ty& _Right) { return (_Right < _Left); } template inline bool operator<=(const _Ty& _Left, const _Ty& _Right) { return (!(_Right < _Left)); } template inline bool operator>=(const _Ty& _Left, const _Ty& _Right) { return (!(_Left < _Right)); } } } #line 6 "/usr/include/CC/xutility" namespace std { struct input_iterator_tag {}; struct output_iterator_tag {}; struct forward_iterator_tag : public input_iterator_tag {}; struct bidirectional_iterator_tag : public forward_iterator_tag {}; struct random_access_iterator_tag : public bidirectional_iterator_tag {}; struct _Int_iterator_tag {}; struct _Nonscalar_ptr_iterator_tag {}; struct _Scalar_ptr_iterator_tag {}; template struct iterator { typedef _Category iterator_category; typedef _Ty value_type; typedef _Difference difference_type; typedef _Pointer pointer; typedef _Reference reference; }; template struct _Bidit : public iterator {}; template struct _Ranit : public iterator {}; struct _Outit : public iterator {}; template struct iterator_traits { typedef typename _Iter::iterator_category iterator_category; typedef typename _Iter::value_type value_type; typedef typename _Iter::difference_type difference_type; typedef typename _Iter::pointer pointer; typedef typename _Iter::reference reference; }; template struct iterator_traits<_Ty *> { typedef random_access_iterator_tag iterator_category; typedef _Ty value_type; typedef ptrdiff_t difference_type; typedef _Ty *pointer; typedef _Ty& reference; }; template struct iterator_traits { typedef random_access_iterator_tag iterator_category; typedef _Ty value_type; typedef ptrdiff_t difference_type; typedef const _Ty *pointer; typedef const _Ty& reference; }; template<> struct iterator_traits<_Bool> { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template<> struct iterator_traits { typedef _Int_iterator_tag iterator_category; }; template inline typename iterator_traits<_Iter>::iterator_category _Iter_cat(const _Iter&) { typename iterator_traits<_Iter>::iterator_category _Cat; return (_Cat); } template inline _Nonscalar_ptr_iterator_tag _Ptr_cat(const _T1&, _T2&) { _Nonscalar_ptr_iterator_tag _Cat; return (_Cat); } template inline _Scalar_ptr_iterator_tag _Ptr_cat(const _Ty **, _Ty **) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const _Bool *, _Bool *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const char *, char *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const signed char *, signed char *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const unsigned char *, unsigned char *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const wchar_t *, wchar_t *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const short *, short *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const unsigned short *, unsigned short *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const int *, int *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const unsigned int *, unsigned int *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const long *, long *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const unsigned long *, unsigned long *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const float *, float *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const double *, double *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const long double *, long double *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const long long *, long long *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } inline _Scalar_ptr_iterator_tag _Ptr_cat(const unsigned long long *, unsigned long long *) { _Scalar_ptr_iterator_tag _Cat; return (_Cat); } template inline typename iterator_traits<_InIt>::difference_type distance(_InIt _First, _InIt _Last) { typename iterator_traits<_InIt>::difference_type _Off = 0; _Distance2(_First, _Last, _Off, _Iter_cat(_First)); return (_Off); } template inline void _Distance(_InIt _First, _InIt _Last, _Diff& _Off) { _Distance2(_First, _Last, _Off, _Iter_cat(_First)); } template inline void _Distance2(_InIt _First, _InIt _Last, _Diff& _Off, input_iterator_tag) { for (; _First != _Last; ++_First) ++_Off; } template inline void _Distance2(_FwdIt _First, _FwdIt _Last, _Diff& _Off, forward_iterator_tag) { for (; _First != _Last; ++_First) ++_Off; } template inline void _Distance2(_BidIt _First, _BidIt _Last, _Diff& _Off, bidirectional_iterator_tag) { for (; _First != _Last; ++_First) ++_Off; } template inline void _Distance2(_RanIt _First, _RanIt _Last, _Diff& _Off, random_access_iterator_tag) { _Off += _Last - _First; } template class _Ptrit : public _Ranit<_Ty, _Diff, _Pointer, _Reference> { public: typedef _Ptrit<_Ty, _Diff, _Pointer, _Reference, _Pointer2, _Reference2> _Myt; _Ptrit() {} explicit _Ptrit(_Pointer _Ptr) : current(_Ptr) {} _Ptrit(const _Ptrit<_Ty, _Diff, _Pointer2, _Reference2, _Pointer2, _Reference2>& _Iter) : current(_Iter.base()) {} _Pointer base() const { return (current); } _Reference operator*() const { return (*current); } _Pointer operator->() const { return (&**this); } _Myt& operator++() { ++current; return (*this); } _Myt operator++(int) { _Myt _Tmp = *this; ++current; return (_Tmp); } _Myt& operator--() { --current; return (*this); } _Myt operator--(int) { _Myt _Tmp = *this; --current; return (_Tmp); } bool operator==(int _Right) const { return (current == (_Pointer)_Right); } bool operator==(const _Myt& _Right) const { return (current == _Right.current); } bool operator!=(const _Myt& _Right) const { return (!(*this == _Right)); } _Myt& operator+=(_Diff _Off) { current += _Off; return (*this); } _Myt operator+(_Diff _Off) const { return (_Myt(current + _Off)); } _Myt& operator-=(_Diff _Off) { current -= _Off; return (*this); } _Myt operator-(_Diff _Off) const { return (_Myt(current - _Off)); } _Reference operator[](_Diff _Off) const { return (*(*this + _Off)); } bool operator<(const _Myt& _Right) const { return (current < _Right.current); } bool operator>(const _Myt& _Right) const { return (_Right < *this); } bool operator<=(const _Myt& _Right) const { return (!(_Right < *this)); } bool operator>=(const _Myt& _Right) const { return (!(*this < _Right)); } _Diff operator-(const _Myt& _Right) const { return (current - _Right.current); } protected: _Pointer current; }; template inline _Ptrit<_Ty, _Diff, _Pointer, _Reference, _Pointer2, _Reference2> operator+(_Diff _Off, const _Ptrit<_Ty, _Diff, _Pointer, _Reference, _Pointer2, _Reference2>& _Right) { return (_Right + _Off); } template class reverse_iterator : public iterator< typename iterator_traits<_RanIt>::iterator_category, typename iterator_traits<_RanIt>::value_type, typename iterator_traits<_RanIt>::difference_type, typename iterator_traits<_RanIt>::pointer, typename iterator_traits<_RanIt>::reference> { public: typedef reverse_iterator<_RanIt> _Myt; typedef typename iterator_traits<_RanIt>::difference_type _Diff; typedef typename iterator_traits<_RanIt>::pointer _Pointer; typedef typename iterator_traits<_RanIt>::reference _Reference; typedef _RanIt iterator_type; reverse_iterator() {} explicit reverse_iterator(_RanIt _First) : current(_First) {} template reverse_iterator(const reverse_iterator<_Other>& _First) : current(_First.base()) {} _RanIt base() const { return (current); } _Reference operator*() const { _RanIt _Tmp = current; return (*--_Tmp); } _Pointer operator->() const { return (&**this); } _Myt& operator++() { --current; return (*this); } _Myt operator++(int) { _Myt _Tmp = *this; --current; return (_Tmp); } _Myt& operator--() { ++current; return (*this); } _Myt operator--(int) { _Myt _Tmp = *this; ++current; return (_Tmp); } bool _Equal(const _Myt& _Right) const { return (current == _Right.current); } _Myt& operator+=(_Diff _Off) { current -= _Off; return (*this); } _Myt operator+(_Diff _Off) const { return (_Myt(current - _Off)); } _Myt& operator-=(_Diff _Off) { current += _Off; return (*this); } _Myt operator-(_Diff _Off) const { return (_Myt(current + _Off)); } _Reference operator[](_Diff _Off) const { return (*(*this + _Off)); } bool _Less(const _Myt& _Right) const { return (_Right.current < current); } _Diff _Minus(const _Myt& _Right) const { return (_Right.current - current); } protected: _RanIt current; }; template inline reverse_iterator<_RanIt> operator+(_Diff _Off, const reverse_iterator<_RanIt>& _Right) { return (_Right + _Off); } template inline typename reverse_iterator<_RanIt>::_Diff operator-(const reverse_iterator<_RanIt>& _Left, const reverse_iterator<_RanIt>& _Right) { return (_Left._Minus(_Right)); } template inline bool operator==(const reverse_iterator<_RanIt>& _Left, const reverse_iterator<_RanIt>& _Right) { return (_Left._Equal(_Right)); } template inline bool operator!=(const reverse_iterator<_RanIt>& _Left, const reverse_iterator<_RanIt>& _Right) { return (!(_Left == _Right)); } template inline bool operator<(const reverse_iterator<_RanIt>& _Left, const reverse_iterator<_RanIt>& _Right) { return (_Left._Less(_Right)); } template inline bool operator>(const reverse_iterator<_RanIt>& _Left, const reverse_iterator<_RanIt>& _Right) { return (_Right < _Left); } template inline bool operator<=(const reverse_iterator<_RanIt>& _Left, const reverse_iterator<_RanIt>& _Right) { return (!(_Right < _Left)); } template inline bool operator>=(const reverse_iterator<_RanIt>& _Left, const reverse_iterator<_RanIt>& _Right) { return (!(_Left < _Right)); } template class _Revbidit : public iterator< typename iterator_traits<_BidIt>::iterator_category, typename iterator_traits<_BidIt>::value_type, typename iterator_traits<_BidIt>::difference_type, typename iterator_traits<_BidIt>::pointer, typename iterator_traits<_BidIt>::reference> { public: typedef _Revbidit<_BidIt, _BidIt2> _Myt; typedef typename iterator_traits<_BidIt>::difference_type _Diff; typedef typename iterator_traits<_BidIt>::pointer _Pointer; typedef typename iterator_traits<_BidIt>::reference _Reference; typedef _BidIt iterator_type; _Revbidit() {} explicit _Revbidit(_BidIt _First) : current(_First) {} _Revbidit(const _Revbidit<_BidIt2>& _Other) : current (_Other.base()) {} _BidIt base() const { return (current); } _Reference operator*() const { _BidIt _Tmp = current; return (*--_Tmp); } _Pointer operator->() const { _Reference _Tmp = **this; return (&_Tmp); } _Myt& operator++() { --current; return (*this); } _Myt operator++(int) { _Myt _Tmp = *this; --current; return (_Tmp); } _Myt& operator--() { ++current; return (*this); } _Myt operator--(int) { _Myt _Tmp = *this; ++current; return (_Tmp); } bool operator==(const _Myt& _Right) const { return (current == _Right.current); } bool operator!=(const _Myt& _Right) const { return (!(*this == _Right)); } protected: _BidIt current; }; template class istreambuf_iterator : public iterator { public: typedef istreambuf_iterator<_Elem, _Traits> _Myt; typedef _Elem char_type; typedef _Traits traits_type; typedef basic_streambuf<_Elem, _Traits> streambuf_type; typedef basic_istream<_Elem, _Traits> istream_type; typedef typename traits_type::int_type int_type; istreambuf_iterator(streambuf_type *_Sb = 0) throw () : _Strbuf(_Sb), _Got(_Sb == 0) {} istreambuf_iterator(istream_type& _Istr) throw () : _Strbuf(_Istr.rdbuf()), _Got(_Istr.rdbuf() == 0) {} const _Elem& operator*() const { if (!_Got) ((_Myt *)this)->_Peek(); return (_Val); } const _Elem *operator->() const { return (&**this); } _Myt& operator++() { _Inc(); return (*this); } _Myt operator++(int) { if (!_Got) _Peek(); _Myt _Tmp = *this; _Inc(); return (_Tmp); } bool equal(const _Myt& _Right) const { if (!_Got) ((_Myt *)this)->_Peek(); if (!_Right._Got) ((_Myt *)&_Right)->_Peek(); return (_Strbuf == 0 && _Right._Strbuf == 0 || _Strbuf != 0 && _Right._Strbuf != 0); } private: void _Inc() { if (_Strbuf == 0 || traits_type::eq_int_type(traits_type::eof(), _Strbuf->sbumpc())) _Strbuf = 0, _Got = true; else _Got = false; } _Elem _Peek() { int_type _Meta; if (_Strbuf == 0 || traits_type::eq_int_type(traits_type::eof(), _Meta = _Strbuf->sgetc())) _Strbuf = 0; else _Val = traits_type::to_char_type(_Meta); _Got = true; return (_Val); } streambuf_type *_Strbuf; bool _Got; _Elem _Val; }; template inline bool operator==( const istreambuf_iterator<_Elem, _Traits>& _Left, const istreambuf_iterator<_Elem, _Traits>& _Right) { return (_Left.equal(_Right)); } template inline bool operator!=( const istreambuf_iterator<_Elem, _Traits>& _Left, const istreambuf_iterator<_Elem, _Traits>& _Right) { return (!(_Left == _Right)); } template class ostreambuf_iterator : public _Outit { typedef ostreambuf_iterator<_Elem, _Traits> _Myt; public: typedef _Elem char_type; typedef _Traits traits_type; typedef basic_streambuf<_Elem, _Traits> streambuf_type; typedef basic_ostream<_Elem, _Traits> ostream_type; ostreambuf_iterator(streambuf_type *_Sb) throw () : _Failed(false), _Strbuf(_Sb) {} ostreambuf_iterator(ostream_type& _Ostr) throw () : _Failed(false), _Strbuf(_Ostr.rdbuf()) {} _Myt& operator=(_Elem _Right) { if (_Strbuf == 0 || traits_type::eq_int_type(_Traits::eof(), _Strbuf->sputc(_Right))) _Failed = true; return (*this); } _Myt& operator*() { return (*this); } _Myt& operator++() { return (*this); } _Myt& operator++(int) { return (*this); } bool failed() const throw () { return (_Failed); } private: bool _Failed; streambuf_type *_Strbuf; }; template inline _OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest) { return (_Copy_opt(_First, _Last, _Dest, _Ptr_cat(_First, _Dest))); } template inline _OutIt _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest, _Nonscalar_ptr_iterator_tag) { for (; _First != _Last; ++_Dest, ++_First) *_Dest = *_First; return (_Dest); } template inline _OutIt _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest, _Scalar_ptr_iterator_tag) { ptrdiff_t _Off = _Last - _First; return ((_OutIt)memmove(&*_Dest, &*_First, _Off * sizeof (*_First)) + _Off); } template inline _BidIt2 copy_backward(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest) { return (_Copy_backward_opt(_First, _Last, _Dest, _Ptr_cat(_First, _Dest))); } template inline _BidIt2 _Copy_backward_opt(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest, _Nonscalar_ptr_iterator_tag) { while (_First != _Last) *--_Dest = *--_Last; return (_Dest); } template inline _OutIt _Copy_backward_opt(_InIt _First, _InIt _Last, _OutIt _Dest, _Scalar_ptr_iterator_tag) { ptrdiff_t _Off = _Last - _First; return ((_OutIt)memmove(&*_Dest - _Off, &*_First, _Off * sizeof (*_First))); } template inline bool equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2) { return (mismatch(_First1, _Last1, _First2).first == _Last1); } inline bool equal(const char *_First1, const char *_Last1, const char *_First2) { return (memcmp(_First1, _First2, _Last1 - _First1) == 0); } inline bool equal(const signed char *_First1, const signed char *_Last1, const signed char *_First2) { return (memcmp(_First1, _First2, _Last1 - _First1) == 0); } inline bool equal(const unsigned char *_First1, const unsigned char *_Last1, const unsigned char *_First2) { return (memcmp(_First1, _First2, _Last1 - _First1) == 0); } template inline bool equal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred) { return (mismatch(_First1, _Last1, _First2, _Pred).first == _Last1); } template inline void fill(_FwdIt _First, _FwdIt _Last, const _Ty& _Src) { for (; _First != _Last; ++_First) *_First = _Src; } inline void fill(char *_First, char *_Last, int _Src) { memset(_First, _Src, _Last - _First); } inline void fill(signed char *_First, signed char *_Last, int _Src) { memset(_First, _Src, _Last - _First); } inline void fill(unsigned char *_First, unsigned char *_Last, int _Src) { memset(_First, _Src, _Last - _First); } template inline void fill_n(_OutIt _First, _Diff _Num, const _Ty& _Src) { for (; 0 < _Num; --_Num, ++_First) *_First = _Src; } inline void fill_n(char *_First, size_t _Num, int _Src) { memset(_First, _Src, _Num); } inline void fill_n(signed char *_First, size_t _Num, int _Src) { memset(_First, _Src, _Num); } inline void fill_n(unsigned char *_First, size_t _Num, int _Src) { memset(_First, _Src, _Num); } template inline bool lexicographical_compare(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2) { for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, ++_First2) if (*_First1 < *_First2) return (true); else if (*_First2 < *_First1) return (false); return (_First1 == _Last1 && _First2 != _Last2); } inline bool lexicographical_compare( const unsigned char *_First1, const unsigned char *_Last1, const unsigned char *_First2, const unsigned char *_Last2) { ptrdiff_t _Num1 = _Last1 - _First1; ptrdiff_t _Num2 = _Last2 - _First2; int _Ans = memcmp(_First1, _First2, _Num1 < _Num2 ? _Num1 : _Num2); return (_Ans < 0 || _Ans == 0 && _Num1 < _Num2); } #line 996 "/usr/include/CC/xutility" template inline bool lexicographical_compare(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr _Pred) { for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, ++_First2) if (_Pred(*_First1, *_First2)) return (true); else if (_Pred(*_First2, *_First1)) return (false); return (_First1 == _Last1 && _First2 != _Last2); } template inline const _Ty& (max)(const _Ty& _Left, const _Ty& _Right) { return (_Left < _Right ? _Right : _Left); } template inline const _Ty& (max)(const _Ty& _Left, const _Ty& _Right, _Pr _Pred) { return (_Pred(_Left, _Right) ? _Right : _Left); } template inline const _Ty& (min)(const _Ty& _Left, const _Ty& _Right) { return (_Right < _Left ? _Right : _Left); } template inline const _Ty& (min)(const _Ty& _Left, const _Ty& _Right, _Pr _Pred) { return (_Pred(_Right, _Left) ? _Right : _Left); } template inline pair<_InIt1, _InIt2> mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2) { for (; _First1 != _Last1 && *_First1 == *_First2; ) ++_First1, ++_First2; return (pair<_InIt1, _InIt2>(_First1, _First2)); } template inline pair<_InIt1, _InIt2> mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred) { for (; _First1 != _Last1 && _Pred(*_First1, *_First2); ) ++_First1, ++_First2; return (pair<_InIt1, _InIt2>(_First1, _First2)); } } #line 5 "/usr/include/CC/iterator" namespace std { template class back_insert_iterator : public _Outit { public: typedef _Container container_type; typedef typename _Container::reference reference; explicit back_insert_iterator(_Container& _Cont) : container(&_Cont) {} back_insert_iterator<_Container>& operator=( typename _Container::const_reference _Val) { container->push_back(_Val); return (*this); } back_insert_iterator<_Container>& operator*() { return (*this); } back_insert_iterator<_Container>& operator++() { return (*this); } back_insert_iterator<_Container> operator++(int) { return (*this); } protected: _Container *container; }; template inline back_insert_iterator<_Container> back_inserter(_Container& _Cont) { return (back_insert_iterator<_Container>(_Cont)); } template class front_insert_iterator : public _Outit { public: typedef _Container container_type; typedef typename _Container::reference reference; explicit front_insert_iterator(_Container& _Cont) : container(&_Cont) {} front_insert_iterator<_Container>& operator=( typename _Container::const_reference _Val) { container->push_front(_Val); return (*this); } front_insert_iterator<_Container>& operator*() { return (*this); } front_insert_iterator<_Container>& operator++() { return (*this); } front_insert_iterator<_Container> operator++(int) { return (*this); } protected: _Container *container; }; template inline front_insert_iterator<_Container> front_inserter(_Container& _Cont) { return (front_insert_iterator<_Container>(_Cont)); } template class insert_iterator : public _Outit { public: typedef _Container container_type; typedef typename _Container::reference reference; insert_iterator(_Container& _Cont, typename _Container::iterator _Where) : container(&_Cont), iter(_Where) {} insert_iterator<_Container>& operator=( typename _Container::const_reference _Val) { iter = container->insert(iter, _Val); ++iter; return (*this); } insert_iterator<_Container>& operator*() { return (*this); } insert_iterator<_Container>& operator++() { return (*this); } insert_iterator<_Container>& operator++(int) { return (*this); } protected: _Container *container; typename _Container::iterator iter; }; template inline insert_iterator<_Container> inserter(_Container& _Cont, _Iter _Where) { return (insert_iterator<_Container>(_Cont, _Container::iterator(_Where))); } template, class _Dist = ptrdiff_t> class istream_iterator : public iterator { public: typedef istream_iterator<_Ty, _Elem, _Traits, _Dist> _Myt; typedef _Elem char_type; typedef _Traits traits_type; typedef basic_istream<_Elem, _Traits> istream_type; istream_iterator() : _Myistr(0) {} istream_iterator(istream_type& _Istr) : _Myistr(&_Istr) { _Getval(); } const _Ty& operator*() const { return (_Myval); } const _Ty *operator->() const { return (&**this); } _Myt& operator++() { _Getval(); return (*this); } _Myt operator++(int) { _Myt _Tmp = *this; _Getval(); return (_Tmp); } bool _Equal(const _Myt& _Right) const { return (_Myistr == _Right._Myistr); } protected: void _Getval() { if (_Myistr != 0 && !(*_Myistr >> _Myval)) _Myistr = 0; } istream_type *_Myistr; _Ty _Myval; }; template inline bool operator==( const istream_iterator<_Ty, _Elem, _Traits, _Dist>& _Left, const istream_iterator<_Ty, _Elem, _Traits, _Dist>& _Right) { return (_Left._Equal(_Right)); } template inline bool operator!=( const istream_iterator<_Ty, _Elem, _Traits, _Dist>& _Left, const istream_iterator<_Ty, _Elem, _Traits, _Dist>& _Right) { return (!(_Left == _Right)); } template > class ostream_iterator : public _Outit { public: typedef _Elem char_type; typedef _Traits traits_type; typedef basic_ostream<_Elem, _Traits> ostream_type; ostream_iterator(ostream_type& _Ostr, const _Elem *_Delim = 0) : _Myostr(&_Ostr), _Mydelim(_Delim) {} ostream_iterator<_Ty, _Elem, _Traits>& operator=(const _Ty& _Val) { *_Myostr << _Val; if (_Mydelim != 0) *_Myostr << _Mydelim; return (*this); } ostream_iterator<_Ty, _Elem, _Traits>& operator*() { return (*this); } ostream_iterator<_Ty, _Elem, _Traits>& operator++() { return (*this); } ostream_iterator<_Ty, _Elem, _Traits> operator++(int) { return (*this); } protected: const _Elem *_Mydelim; ostream_type *_Myostr; }; template inline typename iterator_traits<_Iter>::value_type *_Val_type(_Iter) { return (0); } template inline void advance(_InIt& _Where, _Diff _Off) { _Advance(_Where, _Off, _Iter_cat(_Where)); } template inline void _Advance(_InIt& _Where, _Diff _Off, input_iterator_tag) { for (; 0 < _Off; --_Off) ++_Where; } template inline void _Advance(_FI& _Where, _Diff _Off, forward_iterator_tag) { for (; 0 < _Off; --_Off) ++_Where; } template inline void _Advance(_BI& _Where, _Diff _Off, bidirectional_iterator_tag) { for (; 0 < _Off; --_Off) ++_Where; for (; _Off < 0; ++_Off) --_Where; } template inline void _Advance(_RI& _Where, _Diff _Off, random_access_iterator_tag) { _Where += _Off; } template inline typename iterator_traits<_Iter>::difference_type *_Dist_type(_Iter) { return (0); } } #line 31 "../../include/QtCore/../../src/corelib/tools/qlist.h" #line 1 "/usr/include/CC/list" #line 1 "/usr/include/CC/functional" namespace std { template struct unary_function { typedef _Arg argument_type; typedef _Result result_type; }; template struct binary_function { typedef _Arg1 first_argument_type; typedef _Arg2 second_argument_type; typedef _Result result_type; }; template struct plus : public binary_function<_Ty, _Ty, _Ty> { _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left + _Right); } }; template struct minus : public binary_function<_Ty, _Ty, _Ty> { _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left - _Right); } }; template struct multiplies : public binary_function<_Ty, _Ty, _Ty> { _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left * _Right); } }; template struct divides : public binary_function<_Ty, _Ty, _Ty> { _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left / _Right); } }; template struct modulus : public binary_function<_Ty, _Ty, _Ty> { _Ty operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left % _Right); } }; template struct negate : public unary_function<_Ty, _Ty> { _Ty operator()(const _Ty& _Left) const { return (-_Left); } }; template struct equal_to : public binary_function<_Ty, _Ty, bool> { bool operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left == _Right); } }; template struct not_equal_to : public binary_function<_Ty, _Ty, bool> { bool operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left != _Right); } }; template struct greater : public binary_function<_Ty, _Ty, bool> { bool operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left > _Right); } }; template struct less : public binary_function<_Ty, _Ty, bool> { bool operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left < _Right); } }; template struct greater_equal : public binary_function<_Ty, _Ty, bool> { bool operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left >= _Right); } }; template struct less_equal : public binary_function<_Ty, _Ty, bool> { bool operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left <= _Right); } }; template struct logical_and : public binary_function<_Ty, _Ty, bool> { bool operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left && _Right); } }; template struct logical_or : public binary_function<_Ty, _Ty, bool> { bool operator()(const _Ty& _Left, const _Ty& _Right) const { return (_Left || _Right); } }; template struct logical_not : public unary_function<_Ty, bool> { bool operator()(const _Ty& _Left) const { return (!_Left); } }; template class unary_negate : public unary_function { public: explicit unary_negate(const _Ufn& _Fn) : _Functor(_Fn) {} bool operator()(const typename _Ufn::argument_type& _Left) const { return (!_Functor(_Left)); } protected: _Ufn _Functor; }; template inline unary_negate<_Ufn> not1(const _Ufn& _Left) { return (unary_negate<_Ufn>(_Left)); } template class binary_negate : public binary_function { public: explicit binary_negate(const _Bfn& _Fn) : _Functor(_Fn) {} bool operator()(const typename _Bfn::first_argument_type& _Left, const typename _Bfn::second_argument_type& _Right) const { return (!_Functor(_Left, _Right)); } protected: _Bfn _Functor; }; template inline binary_negate<_Bfn> not2(const _Bfn& _Left) { return (binary_negate<_Bfn>(_Left)); } template class binder1st : public unary_function { public: typedef unary_function _Base; typedef typename _Base::argument_type argument_type; typedef typename _Base::result_type result_type; binder1st(const _Bfn& _Fn, const typename _Bfn::first_argument_type& _Left) : op(_Fn), value(_Left) {} result_type operator()(const argument_type& _Left) const { return (op(value, _Left)); } protected: _Bfn op; typename _Bfn::first_argument_type value; }; template inline binder1st<_Bfn> bind1st(const _Bfn& _Left, const _Ty& _Right) { typename _Bfn::first_argument_type _Val(_Right); return (binder1st<_Bfn>(_Left, _Val)); } template class binder2nd : public unary_function { public: typedef unary_function _Base; typedef typename _Base::argument_type argument_type; typedef typename _Base::result_type result_type; binder2nd(const _Bfn& _Fn, const typename _Bfn::second_argument_type& _Right) : op(_Fn), value(_Right) {} result_type operator()(const argument_type& _Left) const { return (op(_Left, value)); } protected: _Bfn op; typename _Bfn::second_argument_type value; }; template inline binder2nd<_Bfn> bind2nd(const _Bfn& _Left, const _Ty& _Right) { typename _Bfn::second_argument_type _Val(_Right); return (binder2nd<_Bfn>(_Left, _Val)); } template class pointer_to_unary_function : public unary_function<_Arg, _Result> { public: explicit pointer_to_unary_function(_Result (*_Left)(_Arg)) : _Pfun(_Left) {} _Result operator()(_Arg _Left) const { return (_Pfun(_Left)); } protected: _Result (*_Pfun)(_Arg); }; template class pointer_to_binary_function : public binary_function<_Arg1, _Arg2, _Result> { public: explicit pointer_to_binary_function( _Result (*_Left)(_Arg1, _Arg2)) : _Pfun(_Left) {} _Result operator()(_Arg1 _Left, _Arg2 _Right) const { return (_Pfun(_Left, _Right)); } protected: _Result (*_Pfun)(_Arg1, _Arg2); }; template inline pointer_to_unary_function<_Arg, _Result> ptr_fun(_Result (*_Left)(_Arg)) { return (pointer_to_unary_function<_Arg, _Result>(_Left)); } template inline pointer_to_binary_function<_Arg1, _Arg2, _Result> ptr_fun(_Result (*_Left)(_Arg1, _Arg2)) { return (pointer_to_binary_function<_Arg1, _Arg2, _Result>(_Left)); } template class mem_fun_t : public unary_function<_Ty *, _Result> { public: explicit mem_fun_t(_Result (_Ty::*_Pm)()) : _Pmemfun(_Pm) {} _Result operator()(_Ty *_Pobject) const { return ((_Pobject->*_Pmemfun)()); } private: _Result (_Ty::*_Pmemfun)(); }; template class mem_fun1_t : public binary_function<_Ty *, _Arg, _Result> { public: explicit mem_fun1_t(_Result (_Ty::*_Pm)(_Arg)) : _Pmemfun(_Pm) {} _Result operator()(_Ty *_Pobject, _Arg _Val) const { return ((_Pobject->*_Pmemfun)(_Val)); } private: _Result (_Ty::*_Pmemfun)(_Arg); }; template class const_mem_fun_t : public unary_function { public: explicit const_mem_fun_t(_Result (_Ty::*_Pm)() const) : _Pmemfun(_Pm) {} _Result operator()(const _Ty *_Pobject) const { return ((_Pobject->*_Pmemfun)()); } private: _Result (_Ty::*_Pmemfun)() const; }; template class const_mem_fun1_t : public binary_function<_Ty *, _Arg, _Result> { public: explicit const_mem_fun1_t(_Result (_Ty::*_Pm)(_Arg) const) : _Pmemfun(_Pm) {} _Result operator()(const _Ty *_Pobject, _Arg _Val) const { return ((_Pobject->*_Pmemfun)(_Val)); } private: _Result (_Ty::*_Pmemfun)(_Arg) const; }; template inline mem_fun_t<_Result, _Ty> mem_fun(_Result (_Ty::*_Pm)()) { return (mem_fun_t<_Result, _Ty>(_Pm)); } template inline mem_fun1_t<_Result, _Ty, _Arg> mem_fun(_Result (_Ty::*_Pm)(_Arg)) { return (mem_fun1_t<_Result, _Ty, _Arg>(_Pm)); } template inline const_mem_fun_t<_Result, _Ty> mem_fun(_Result (_Ty::*_Pm)() const) { return (const_mem_fun_t<_Result, _Ty>(_Pm)); } template inline const_mem_fun1_t<_Result, _Ty, _Arg> mem_fun(_Result (_Ty::*_Pm)(_Arg) const) { return (const_mem_fun1_t<_Result, _Ty, _Arg>(_Pm)); } template class mem_fun_ref_t : public unary_function<_Ty, _Result> { public: explicit mem_fun_ref_t(_Result (_Ty::*_Pm)()) : _Pmemfun(_Pm) {} _Result operator()(_Ty& _Left) const { return ((_Left.*_Pmemfun)()); } private: _Result (_Ty::*_Pmemfun)(); }; template class mem_fun1_ref_t : public binary_function<_Ty, _Arg, _Result> { public: explicit mem_fun1_ref_t(_Result (_Ty::*_Pm)(_Arg)) : _Pmemfun(_Pm) {} _Result operator()(_Ty& _Left, _Arg _Val) const { return ((_Left.*_Pmemfun)(_Val)); } private: _Result (_Ty::*_Pmemfun)(_Arg); }; template class const_mem_fun_ref_t : public unary_function<_Ty, _Result> { public: explicit const_mem_fun_ref_t(_Result (_Ty::*_Pm)() const) : _Pmemfun(_Pm) {} _Result operator()(const _Ty& _Left) const { return ((_Left.*_Pmemfun)()); } private: _Result (_Ty::*_Pmemfun)() const; }; template class const_mem_fun1_ref_t : public binary_function<_Ty, _Arg, _Result> { public: explicit const_mem_fun1_ref_t(_Result (_Ty::*_Pm)(_Arg) const) : _Pmemfun(_Pm) {} _Result operator()(const _Ty& _Left, _Arg _Val) const { return ((_Left.*_Pmemfun)(_Val)); } private: _Result (_Ty::*_Pmemfun)(_Arg) const; }; template inline mem_fun_ref_t<_Result, _Ty> mem_fun_ref(_Result (_Ty::*_Pm)()) { return (mem_fun_ref_t<_Result, _Ty>(_Pm)); } template inline mem_fun1_ref_t<_Result, _Ty, _Arg> mem_fun_ref(_Result (_Ty::*_Pm)(_Arg)) { return (mem_fun1_ref_t<_Result, _Ty, _Arg>(_Pm)); } template inline const_mem_fun_ref_t<_Result, _Ty> mem_fun_ref(_Result (_Ty::*_Pm)() const) { return (const_mem_fun_ref_t<_Result, _Ty>(_Pm)); } template inline const_mem_fun1_ref_t<_Result, _Ty, _Arg> mem_fun_ref(_Result (_Ty::*_Pm)(_Arg) const) { return (const_mem_fun1_ref_t<_Result, _Ty, _Arg>(_Pm)); } } #line 5 "/usr/include/CC/list" #line 1 "/usr/include/CC/memory" #line 1 "/usr/include/CC/xmemory" #line 1 "/usr/include/CC/cstdlib" #line 1 "/usr/include/stdlib.h" #ident "@(#)unixsrc:usr/src/i386/head/stdlib.h /main/1" typedef struct { int quot; int rem; } div_t; typedef struct { long quot; long rem; } ldiv_t; #line 45 "/usr/include/stdlib.h" #line 67 "/usr/include/stdlib.h" extern "C" { extern unsigned char __ctype[]; extern double atof(const char *); extern int atoi(const char *); extern long atol(const char *); extern double strtod(const char *, char **); extern float strtof(const char *, char **); extern long strtol(const char *, char **, int); long double strtold(const char *, char **); long long strtoll(const char *, char **, int); unsigned long strtoul(const char *, char **, int); unsigned long long strtoull(const char *, char **, int); extern int rand(void); extern void srand(unsigned int); extern void *calloc(size_t, size_t); extern void free(void *); extern void *malloc(size_t); extern void *realloc(void *, size_t); extern void _Exit(int); extern char *getenv(const char *); extern int system(const char *); #line 113 "/usr/include/stdlib.h" extern int abs(int); extern div_t div(int, int); extern long labs(long); extern ldiv_t ldiv(long, long); extern int mbtowc(wchar_t *, const char *, size_t); extern int mblen(const char *, size_t); extern int wctomb(char *, wchar_t); extern size_t mbstowcs(wchar_t *, const char *, size_t); extern size_t wcstombs(char *, const wchar_t *, size_t); extern double drand48(void); extern double erand48(unsigned short *); extern long jrand48(unsigned short *); extern void lcong48(unsigned short *); extern long lrand48(void); extern long mrand48(void); extern long nrand48(unsigned short *); extern int putenv(char *); unsigned short *seed48(unsigned short *); extern void setkey(const char *); extern void srand48(long); extern long a64l(const char *); extern char *ecvt(double, int, int *, int *); extern char *fcvt(double, int, int *, int *); extern char *gcvt(double, int, char *); extern int getsubopt(char **, char *const *, char **); extern int grantpt(int); extern char *initstate(unsigned, char * , int); extern char *l64a(long); extern int mkstemp(char *); extern char *mktemp(char *); extern char *ptsname(int); extern long random(void); extern char *realpath(const char *, char *); extern char *setstate(char *); extern void srandom(unsigned); extern int ttyslot(void); extern int unlockpt(int); extern void *valloc(size_t); extern int rand_r(unsigned int *); typedef struct { long long quot; long long rem; } lldiv_t; struct mallinfo { size_t arena; size_t ordblks; size_t smblks; size_t hblks; size_t hblkhd; size_t usmblks; size_t fsmblks; size_t uordblks; size_t fordblks; size_t keepcost; }; long long atoll(const char *); extern int dup2(int, int); extern char *ecvtl(long double, int, int *, int *); extern char *fcvtl(long double, int, int *, int *); extern char *gcvtl(long double, int, char *); extern char *getcwd(char *, size_t); extern char *getlogin(void); extern int getopt(int, char *const *, const char *); extern char *optarg; extern int optind, opterr, optopt; extern char *getpass(const char *); extern int getpw(int, char *); extern int isatty(int); extern void l3tol(long *, const char *, int); extern char *l64a_r(long, char *, size_t); long long llabs(long long); extern lldiv_t lldiv(long long, long long); extern void ltol3(char *, const long *, int); struct mallinfo mallinfo(void); extern void *memalign(size_t, size_t); extern void swab(const void *, void *, ssize_t); extern char *ttyname(int); extern double wcstod(const wchar_t *, wchar_t **); extern float wcstof(const wchar_t *, wchar_t **); extern long wcstol(const wchar_t *, wchar_t **, int); long double wcstold(const wchar_t *, wchar_t **); long long wcstoll(const wchar_t *, wchar_t **, int); unsigned long wcstoul(const wchar_t *, wchar_t **, int); unsigned long long wcstoull(const wchar_t *, wchar_t **, int); extern int _xgetlogin_r(char *, size_t); extern int _xttyname_r(int, char *, size_t); #line 248 "/usr/include/stdlib.h" static int getlogin_r(char *__1, size_t __2) { return _xgetlogin_r(__1, __2); } static int ttyname_r(int __1, char *__2, size_t __3) { return _xttyname_r(__1, __2, __3); } } extern "C++" { inline long abs(long __1){ return labs(__1); } inline ldiv_t div(long __1, long __2){ return ldiv(__1, __2); } inline long long abs(long long __1){ return llabs(__1); } inline lldiv_t div(long long __1, long long __2){ return lldiv(__1, __2); } } #line 1 "/usr/include/CC/cstdlib" #line 65 "/usr/include/CC/cstdlib" #line 288 "/usr/include/stdlib.h" #line 5 "/usr/include/CC/cstdlib" namespace std { using ::size_t; using ::div_t; using ::ldiv_t; using ::abs; using ::atof; using ::atoi; using ::atol; using ::calloc; using ::div; using ::free; using ::getenv; using ::labs; using ::ldiv; using ::malloc; using ::mblen; using ::mbstowcs; using ::mbtowc; using ::rand; using ::realloc; using ::srand; using ::strtod; using ::strtol; using ::strtoul; using ::system; using ::wcstombs; using ::wctomb; extern "C" typedef void (*_P_C_AF)(void); extern "C++" typedef void (*_P_CPLUSPLUS_AF)(void); extern "C" typedef int (*_P_C_CF)(const void *, const void *); extern "C++" void exit(int); extern "C++" int atexit(void (*_f)(void)); extern "C++" inline int atexit(_P_C_AF _f) { return std::atexit(reinterpret_cast<_P_CPLUSPLUS_AF>(_f)); } extern "C++" void abort(void); extern "C" void* bsearch(const void* _key, const void* _base, size_t _nmemb, size_t _size, int (*_compar)(const void*, const void*)); extern "C++" inline void* bsearch(const void* _key, const void* _base, size_t _nmemb, size_t _size, int (*_compar)(const void*, const void*)) { return std::bsearch(_key, _base, _nmemb, _size, reinterpret_cast<_P_C_CF>(_compar)); } extern "C" void qsort(void* _base, size_t _nel, size_t _width, int (*_compar)(const void*, const void*)); extern "C++" inline void qsort(void* _base, size_t _nel, size_t _width, int (*_compar)(const void*, const void*)) { std::qsort(_base, _nel, _width, reinterpret_cast<_P_C_CF>(_compar)); } } using std::exit; using std::atexit; using std::abort; using std::bsearch; using std::qsort; #line 5 "/usr/include/CC/xmemory" #line 1 "/usr/include/CC/new" #ident "@(#)unixsrc:usr/src/common/lib/libC/new /main/1" #line 1 "/usr/include/CC/exception" #ident "@(#)unixsrc:usr/src/common/lib/libC/exception /main/1" namespace std { class exception { public: exception() throw(); exception(const exception&) throw(); exception& operator=(const exception&) throw(); virtual ~exception() throw(); virtual const char* what() const throw(); protected: exception(const char*); private: char* _Desc; }; class bad_exception : public exception { public: bad_exception() throw(); bad_exception(const bad_exception&) throw(); bad_exception& operator=(const bad_exception&) throw(); virtual ~bad_exception() throw(); virtual const char* what() const throw(); }; typedef void (*unexpected_handler)(); unexpected_handler set_unexpected(unexpected_handler) throw(); void unexpected(); typedef void (*terminate_handler)(); terminate_handler set_terminate(terminate_handler) throw(); void terminate(); bool uncaught_exception(); } #line 13 "/usr/include/CC/new" namespace std { class bad_alloc : public exception { public: bad_alloc() throw(); bad_alloc(const bad_alloc&) throw(); bad_alloc& operator=(const bad_alloc&) throw(); virtual ~bad_alloc() throw(); virtual const char* what() const throw(); }; typedef void (*new_handler)(); new_handler set_new_handler(new_handler); struct nothrow_t {}; extern const nothrow_t nothrow; } void *operator new(size_t) throw(std::bad_alloc); void *operator new(size_t, const std::nothrow_t&) throw(); void operator delete(void*) throw(); void *operator new[](size_t) throw(std::bad_alloc); void *operator new[](size_t, const std::nothrow_t&) throw(); void operator delete[](void*) throw(); void *operator new(size_t, void*) throw(); void *operator new[](size_t, void*) throw(); #line 6 "/usr/include/CC/xmemory" #line 22 "/usr/include/CC/xmemory" namespace std { template inline _Ty *_Allocate(size_t _Count, _Ty *) { return ((_Ty *)operator new(_Count * sizeof (_Ty))); } template inline void _Construct(_T1 *_Ptr, const _T2& _Val) { new ((void *)_Ptr) _T1(_Val); } template inline void _Destroy(_Ty *_Ptr) { (_Ptr)->~_Ty(); } template<> inline void _Destroy(char *) {} template<> inline void _Destroy(wchar_t *) {} template class allocator { public: typedef size_t size_type; typedef ptrdiff_t difference_type; typedef _Ty *pointer; typedef const _Ty *const_pointer; typedef _Ty & reference; typedef const _Ty & const_reference; typedef _Ty value_type; template struct rebind { typedef allocator<_Other> other; }; pointer address(reference _Val) const { return (&_Val); } const_pointer address(const_reference _Val) const { return (&_Val); } allocator() {} allocator(const allocator<_Ty>&) {} template allocator(const allocator<_Other>&) {} template allocator<_Ty>& operator=(const allocator<_Other>&) { return (*this); } template pointer allocate(size_type _Count, const _Other *) { return (_Allocate(_Count, (pointer)0)); } pointer allocate(size_type _Count) { return (_Allocate(_Count, (pointer)0)); } void deallocate(pointer _Ptr, size_type) { operator delete(_Ptr); } void construct(pointer _Ptr, const _Ty& _Val) { _Construct(_Ptr, _Val); } void destroy(pointer _Ptr) { _Destroy(_Ptr); } size_t max_size() const { size_t _Count = (size_t)(-1) / sizeof (_Ty); return (0 < _Count ? _Count : 1); } }; template inline bool operator==(const allocator<_Ty>&, const allocator<_Other>&) { return (true); } template inline bool operator!=(const allocator<_Ty>&, const allocator<_Other>&) { return (false); } template<> class allocator { public: typedef void _Ty; typedef _Ty *pointer; typedef const _Ty *const_pointer; typedef _Ty value_type; template struct rebind { typedef allocator<_Other> other; }; allocator() {} allocator(const allocator<_Ty>&) {} template allocator(const allocator<_Other>&) {} template allocator<_Ty>& operator=(const allocator<_Other>&) { return (*this); } }; template inline void _Destroy_range(_Ty *_First, _Ty *_Last, _Alloc& _Al) { _Destroy_range(_First, _Last, _Al, _Ptr_cat(_First, _Last)); } template inline void _Destroy_range(_Ty *_First, _Ty *_Last, _Alloc& _Al, _Nonscalar_ptr_iterator_tag) { for (; _First != _Last; ++_First) _Al.destroy(_First); } template inline void _Destroy_range(_Ty *_First, _Ty *_Last, allocator<_Ty>& _Al, _Scalar_ptr_iterator_tag) {} } #line 6 "/usr/include/CC/memory" namespace std { template inline pair<_Ty *, ptrdiff_t> get_temporary_buffer(ptrdiff_t _Count) { _Ty *_Pbuf; for (_Pbuf = 0; 0 < _Count; _Count /= 2) if ((_Pbuf = (_Ty *)operator new( (size_t)_Count * sizeof (_Ty), nothrow)) != 0) break; return (pair<_Ty *, ptrdiff_t>(_Pbuf, _Count)); } template inline void return_temporary_buffer(_Ty *_Pbuf) { operator delete(_Pbuf); } template inline _FwdIt uninitialized_copy(_InIt _First, _InIt _Last, _FwdIt _Dest) { _FwdIt _Next = _Dest; try { for (; _First != _Last; ++_Dest, ++_First) _Construct(&*_Dest, *_First); } catch (...) { for (; _Next != _Dest; ++_Next) _Destroy(&*_Next); throw; } return (_Dest); } template inline _FwdIt uninitialized_copy(_InIt _First, _InIt _Last, _FwdIt _Dest, _Alloc& _Al) { return (_Uninit_copy(_First, _Last, _Dest, _Al, _Ptr_cat(_First, _Dest))); } template inline _FwdIt _Uninit_copy(_InIt _First, _InIt _Last, _FwdIt _Dest, _Alloc& _Al, _Nonscalar_ptr_iterator_tag) { _FwdIt _Next = _Dest; try { for (; _First != _Last; ++_Dest, ++_First) _Al.construct(&*_Dest, *_First); } catch (...) { for (; _Next != _Dest; ++_Next) _Al.destroy(&*_Next); throw; } return (_Dest); } template inline _Ty *_Uninit_copy(_Ty *_First, _Ty *_Last, _Ty *_Dest, allocator<_Ty>&, _Scalar_ptr_iterator_tag) { size_t _Count = (size_t)(_Last - _First); return ((_Ty *)memmove(&*_Dest, &*_First, _Count * sizeof (*_First)) + _Count); } template inline void uninitialized_fill(_FwdIt _First, _FwdIt _Last, const _Tval& _Val) { _Uninit_fill(_First, _Last, _Val, _Ptr_cat(_First, _First)); } template inline void _Uninit_fill(_FwdIt _First, _FwdIt _Last, const _Tval& _Val, _Nonscalar_ptr_iterator_tag) { _FwdIt _Next = _First; try { for (; _First != _Last; ++_First) _Construct(&*_First, _Val); } catch (...) { for (; _Next != _First; ++_Next) _Destroy(&*_Next); throw; }} template inline void _Uninit_fill(_Ty *_First, _Ty *_Last, const _Tval& _Val, _Scalar_ptr_iterator_tag) { fill(_First, _Last, _Val); } template inline void uninitialized_fill(_FwdIt _First, _FwdIt _Last, const _Tval& _Val, _Alloc& _Al) { _Uninit_fill(_First, _Last, _Val, _Al, _Ptr_cat(_First, _First)); } template inline void _Uninit_fill(_FwdIt _First, _FwdIt _Last, const _Tval& _Val, _Alloc& _Al, _Nonscalar_ptr_iterator_tag) { _FwdIt _Next = _First; try { for (; _First != _Last; ++_First) _Al.construct(&*_First, _Val); } catch (...) { for (; _Next != _First; ++_Next) _Al.destroy(&*_Next); throw; }} template inline void _Uninit_fill(_Ty *_First, _Ty *_Last, const _Tval& _Val, allocator<_Ty>&, _Scalar_ptr_iterator_tag) { fill(_First, _Last, _Val); } template inline void uninitialized_fill_n(_FwdIt _First, _Diff _Count, const _Tval& _Val) { _Uninit_fill_n(_First, _Count, _Val, _Ptr_cat(_First, _First)); } template inline void _Uninit_fill_n(_FwdIt _First, _Diff _Count, const _Tval& _Val, _Nonscalar_ptr_iterator_tag) { _FwdIt _Next = _First; try { for (; 0 < _Count; --_Count, ++_First) _Construct(&*_First, _Val); } catch (...) { for (; _Next != _First; ++_Next) _Destroy(&*_Next); throw; }} template inline void _Uninit_fill_n(_Ty *_First, _Diff _Count, const _Tval& _Val, _Scalar_ptr_iterator_tag) { fill_n(_First, _Count, _Val); } template inline void uninitialized_fill_n(_FwdIt _First, _Diff _Count, const _Tval& _Val, _Alloc& _Al) { _Uninit_fill_n(_First, _Count, _Val, _Al, _Ptr_cat(_First, _First)); } template inline void _Uninit_fill_n(_FwdIt _First, _Diff _Count, const _Tval& _Val, _Alloc& _Al, _Nonscalar_ptr_iterator_tag) { _FwdIt _Next = _First; try { for (; 0 < _Count; --_Count, ++_First) _Al.construct(&*_First, _Val); } catch (...) { for (; _Next != _First; ++_Next) _Al.destroy(&*_Next); throw; }} template inline void _Uninit_fill_n(_Ty *_First, _Diff _Count, const _Tval& _Val, allocator<_Ty>&, _Scalar_ptr_iterator_tag) { fill_n(_First, _Count, _Val); } template class raw_storage_iterator : public _Outit { public: typedef _FwdIt iter_type; typedef _Ty element_type; explicit raw_storage_iterator(_FwdIt _First) : _Next(_First) {} raw_storage_iterator<_FwdIt, _Ty>& operator*() { return (*this); } raw_storage_iterator<_FwdIt, _Ty>& operator=(const _Ty& _Val) { _Construct(&*_Next, _Val); return (*this); } raw_storage_iterator<_FwdIt, _Ty>& operator++() { ++_Next; return (*this); } raw_storage_iterator<_FwdIt, _Ty> operator++(int) { raw_storage_iterator<_FwdIt, _Ty> _Ans = *this; ++_Next; return (_Ans); } private: _FwdIt _Next; }; template class _Temp_iterator : public _Outit { public: typedef _Ty *_Pty; _Temp_iterator(ptrdiff_t _Count = 0) { pair<_Pty, ptrdiff_t> _Pair = get_temporary_buffer<_Ty>(_Count); _Buf._Begin = _Pair.first; _Buf._Current = _Pair.first; _Buf._Hiwater = _Pair.first; _Buf._Size = _Pair.second; _Pbuf = &_Buf; } _Temp_iterator(const _Temp_iterator<_Ty>& _Right) { _Buf._Begin = 0; _Buf._Current = 0; _Buf._Hiwater = 0; _Buf._Size = 0; *this = _Right; } ~_Temp_iterator() { if (_Buf._Begin != 0) { for (_Pty _Next = _Buf._Begin; _Next != _Buf._Hiwater; ++_Next) _Destroy(&*_Next); return_temporary_buffer(_Buf._Begin); }} _Temp_iterator<_Ty>& operator=(const _Temp_iterator<_Ty>& _Right) { _Pbuf = _Right._Pbuf; return (*this); } _Temp_iterator<_Ty>& operator=(const _Ty& _Val) { if (_Pbuf->_Current < _Pbuf->_Hiwater) *_Pbuf->_Current++ = _Val; else { _Construct(&*_Pbuf->_Current, _Val); _Pbuf->_Hiwater = ++_Pbuf->_Current; } return (*this); } _Temp_iterator<_Ty>& operator*() { return (*this); } _Temp_iterator<_Ty>& operator++() { return (*this); } _Temp_iterator<_Ty>& operator++(int) { return (*this); } _Temp_iterator<_Ty>& _Init() { _Pbuf->_Current = _Pbuf->_Begin; return (*this); } _Pty _First() const { return (_Pbuf->_Begin); } _Pty _Last() const { return (_Pbuf->_Current); } ptrdiff_t _Maxlen() const { return (_Pbuf->_Size); } private: struct _Bufpar { _Pty _Begin; _Pty _Current; _Pty _Hiwater; ptrdiff_t _Size; }; _Bufpar _Buf; _Bufpar *_Pbuf; }; template class auto_ptr { template struct auto_ptr_ref { auto_ptr_ref(auto_ptr<_Other>& _Right) : _Ref(_Right) {} auto_ptr<_Other>& _Ref; }; public: typedef _Ty element_type; explicit auto_ptr(_Ty *_Ptr = 0) throw () : _Myptr(_Ptr) {} auto_ptr(auto_ptr<_Ty>& _Right) throw () : _Myptr(_Right.release()) {} auto_ptr(auto_ptr_ref<_Ty> _Right) throw () : _Myptr(_Right._Ref.release()) {} template operator auto_ptr<_Other>() throw () { return (auto_ptr<_Other>(*this)); } template operator auto_ptr_ref<_Other>() throw () { return (auto_ptr_ref<_Other>(*this)); } template auto_ptr<_Ty>& operator=(auto_ptr<_Other>& _Right) throw () { reset(_Right.release()); return (*this); } template auto_ptr(auto_ptr<_Other>& _Right) throw () : _Myptr(_Right.release()) {} auto_ptr<_Ty>& operator=(auto_ptr<_Ty>& _Right) throw () { reset(_Right.release()); return (*this); } ~auto_ptr() { delete _Myptr; } _Ty& operator*() const throw () { return (*get()); } _Ty *operator->() const throw () { return (get()); } _Ty *get() const throw () { return (_Myptr); } _Ty *release() throw () { _Ty *_Tmp = _Myptr; _Myptr = 0; return (_Tmp); } void reset(_Ty* _Ptr = 0) { if (_Ptr != _Myptr) delete _Myptr; _Myptr = _Ptr; } private: _Ty *_Myptr; }; } #line 6 "/usr/include/CC/list" #line 1 "/usr/include/CC/stdexcept" #ident "@(#)unixsrc:usr/src/common/lib/libC/stdexcept /main/1" #line 1 "/usr/include/CC/exception" #ident "@(#)unixsrc:usr/src/common/lib/libC/exception /main/1" #line 7 "/usr/include/CC/stdexcept" #line 1 "/usr/include/CC/xstring" namespace std { class _String_base { public: void _Xlen() const; void _Xran() const; }; template class _String_val : public _String_base { protected: typedef typename _Alloc::template rebind<_Ty>::other _Alty; _String_val(_Alty _Al = _Alty()) : _Alval(_Al) {} _Alty _Alval; }; template, class _Ax = allocator<_Elem> > class basic_string : public _String_val<_Elem, _Ax> { public: typedef basic_string<_Elem, _Traits, _Ax> _Myt; typedef _String_val<_Elem, _Ax> _Mybase; typedef typename _Mybase::_Alty _Alloc; typedef typename _Alloc::size_type size_type; typedef typename _Alloc::difference_type difference_type; typedef typename _Alloc::pointer _Tptr; typedef typename _Alloc::const_pointer _Ctptr; typedef _Tptr pointer; typedef _Ctptr const_pointer; typedef typename _Alloc::reference reference; typedef typename _Alloc::const_reference const_reference; typedef typename _Alloc::value_type value_type; typedef _Ptrit iterator; typedef _Ptrit const_iterator; typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; basic_string() : _Mybase() { _Tidy(); } explicit basic_string(const _Alloc& _Al) : _Mybase(_Al) { _Tidy(); } basic_string(const _Myt& _Right) : _Mybase(_Right._Alval) { _Tidy(), assign(_Right, 0, npos); } basic_string(const _Myt& _Right, size_type _Roff, size_type _Count = npos) : _Mybase() { _Tidy(), assign(_Right, _Roff, _Count); } basic_string(const _Myt& _Right, size_type _Roff, size_type _Count, const _Alloc& _Al) : _Mybase(_Al) { _Tidy(), assign(_Right, _Roff, _Count); } basic_string(const _Elem *_Ptr, size_type _Count) : _Mybase() { _Tidy(), assign(_Ptr, _Count); } basic_string(const _Elem *_Ptr, size_type _Count, const _Alloc& _Al) : _Mybase(_Al) { _Tidy(), assign(_Ptr, _Count); } basic_string(const _Elem *_Ptr) : _Mybase() { _Tidy(), assign(_Ptr); } basic_string(const _Elem *_Ptr, const _Alloc& _Al) : _Mybase(_Al) { _Tidy(), assign(_Ptr); } basic_string(size_type _Count, _Elem _Char) : _Mybase() { _Tidy(), assign(_Count, _Char); } basic_string(size_type _Count, _Elem _Char, const _Alloc& _Al) : _Mybase(_Al) { _Tidy(), assign(_Count, _Char); } template basic_string(_It _First, _It _Last) : _Mybase() { _Construct(_First, _Last, _Iter_cat(_First)); } template basic_string(_It _First, _It _Last, const _Alloc& _Al) : _Mybase(_Al) { _Construct(_First, _Last, _Iter_cat(_First)); } template void _Construct(_It _Count, _It _Char, _Int_iterator_tag) { _Tidy(), assign((size_type)_Count, (_Elem)_Char); } template void _Construct(_It _First, _It _Last, input_iterator_tag) { _Tidy(); for (; _First != _Last; ++_First) append((size_type)1, (_Elem)*_First); } template void _Construct(_It _First, _It _Last, forward_iterator_tag) { _Tidy(); size_type _Count = 0; _Distance(_First, _Last, _Count); reserve(_Count); for (; _First != _Last; ++_First) append((size_type)1, (_Elem)*_First); } basic_string(const_pointer _First, const_pointer _Last) : _Mybase() { _Tidy(); if (_First != _Last) assign(&*_First, _Last - _First); } basic_string(const_iterator _First, const_iterator _Last) : _Mybase() { _Tidy(); if (_First != _Last) assign(&*_First, _Last - _First); } ~basic_string() { _Tidy(true); } typedef _Traits traits_type; typedef _Alloc allocator_type; static const size_type npos; _Myt& operator=(const _Myt& _Right) { return (assign(_Right)); } _Myt& operator=(const _Elem *_Ptr) { return (assign(_Ptr)); } _Myt& operator=(_Elem _Char) { return (assign(1, _Char)); } _Myt& operator+=(const _Myt& _Right) { return (append(_Right)); } _Myt& operator+=(const _Elem *_Ptr) { return (append(_Ptr)); } _Myt& operator+=(_Elem _Char) { return (append((size_type)1, _Char)); } _Myt& append(const _Myt& _Right) { return (append(_Right, 0, npos)); } _Myt& append(const _Myt& _Right, size_type _Roff, size_type _Count) { if (_Right.size() < _Roff) _String_base::_Xran(); size_type _Num = _Right.size() - _Roff; if (_Num < _Count) _Count = _Num; if (npos - _Mysize <= _Count) _String_base::_Xlen(); if (0 < _Count && _Grow(_Num = _Mysize + _Count)) { _Traits::copy(_Myptr() + _Mysize, _Right._Myptr() + _Roff, _Count); _Eos(_Num); } return (*this); } _Myt& append(const _Elem *_Ptr, size_type _Count) { if (_Inside(_Ptr)) return (append(*this, _Ptr - _Myptr(), _Count)); if (npos - _Mysize <= _Count) _String_base::_Xlen(); size_type _Num; if (0 < _Count && _Grow(_Num = _Mysize + _Count)) { _Traits::copy(_Myptr() + _Mysize, _Ptr, _Count); _Eos(_Num); } return (*this); } _Myt& append(const _Elem *_Ptr) { return (append(_Ptr, _Traits::length(_Ptr))); } _Myt& append(size_type _Count, _Elem _Char) { if (npos - _Mysize <= _Count) _String_base::_Xlen(); size_type _Num; if (0 < _Count && _Grow(_Num = _Mysize + _Count)) { _Traits::assign(_Myptr() + _Mysize, _Count, _Char); _Eos(_Num); } return (*this); } template _Myt& append(_It _First, _It _Last) { return (_Append(_First, _Last, _Iter_cat(_First))); } template _Myt& _Append(_It _Count, _It _Char, _Int_iterator_tag) { return (append((size_type)_Count, (_Elem)_Char)); } template _Myt& _Append(_It _First, _It _Last, input_iterator_tag) { return (replace(end(), end(), _First, _Last)); } _Myt& append(const_pointer _First, const_pointer _Last) { return (replace(end(), end(), _First, _Last)); } _Myt& append(const_iterator _First, const_iterator _Last) { return (replace(end(), end(), _First, _Last)); } _Myt& assign(const _Myt& _Right) { return (assign(_Right, 0, npos)); } _Myt& assign(const _Myt& _Right, size_type _Roff, size_type _Count) { if (_Right.size() < _Roff) _String_base::_Xran(); size_type _Num = _Right.size() - _Roff; if (_Count < _Num) _Num = _Count; if (this == &_Right) erase((size_type)(_Roff + _Num)), erase(0, _Roff); else if (_Grow(_Num, true)) { _Traits::copy(_Myptr(), _Right._Myptr() + _Roff, _Num); _Eos(_Num); } return (*this); } _Myt& assign(const _Elem *_Ptr, size_type _Num) { if (_Inside(_Ptr)) return (assign(*this, _Ptr - _Myptr(), _Num)); if (_Grow(_Num, true)) { _Traits::copy(_Myptr(), _Ptr, _Num); _Eos(_Num); } return (*this); } _Myt& assign(const _Elem *_Ptr) { return (assign(_Ptr, _Traits::length(_Ptr))); } _Myt& assign(size_type _Count, _Elem _Char) { if (_Count == npos) _String_base::_Xlen(); if (_Grow(_Count, true)) { _Traits::assign(_Myptr(), _Count, _Char); _Eos(_Count); } return (*this); } template _Myt& assign(_It _First, _It _Last) { return (_Assign(_First, _Last, _Iter_cat(_First))); } template _Myt& _Assign(_It _Count, _It _Char, _Int_iterator_tag) { return (assign((size_type)_Count, (_Elem)_Char)); } template _Myt& _Assign(_It _First, _It _Last, input_iterator_tag) { return (replace(begin(), end(), _First, _Last)); } _Myt& assign(const_pointer _First, const_pointer _Last) { return (replace(begin(), end(), _First, _Last)); } _Myt& assign(const_iterator _First, const_iterator _Last) { return (replace(begin(), end(), _First, _Last)); } _Myt& insert(size_type _Off, const _Myt& _Right) { return (insert(_Off, _Right, 0, npos)); } _Myt& insert(size_type _Off, const _Myt& _Right, size_type _Roff, size_type _Count) { if (_Mysize < _Off || _Right.size() < _Roff) _String_base::_Xran(); size_type _Num = _Right.size() - _Roff; if (_Num < _Count) _Count = _Num; if (npos - _Mysize <= _Count) _String_base::_Xlen(); if (0 < _Count && _Grow(_Num = _Mysize + _Count)) { _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off, _Mysize - _Off); if (this == &_Right) _Traits::move(_Myptr() + _Off, _Myptr() + (_Off < _Roff ? _Roff + _Count : _Roff), _Count); else _Traits::copy(_Myptr() + _Off, _Right._Myptr() + _Roff, _Count); _Eos(_Num); } return (*this); } _Myt& insert(size_type _Off, const _Elem *_Ptr, size_type _Count) { if (_Inside(_Ptr)) return (insert(_Off, *this, _Ptr - _Myptr(), _Count)); if (_Mysize < _Off) _String_base::_Xran(); if (npos - _Mysize <= _Count) _String_base::_Xlen(); size_type _Num; if (0 < _Count && _Grow(_Num = _Mysize + _Count)) { _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off, _Mysize - _Off); _Traits::copy(_Myptr() + _Off, _Ptr, _Count); _Eos(_Num); } return (*this); } _Myt& insert(size_type _Off, const _Elem *_Ptr) { return (insert(_Off, _Ptr, _Traits::length(_Ptr))); } _Myt& insert(size_type _Off, size_type _Count, _Elem _Char) { if (_Mysize < _Off) _String_base::_Xran(); if (npos - _Mysize <= _Count) _String_base::_Xlen(); size_type _Num; if (0 < _Count && _Grow(_Num = _Mysize + _Count)) { _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off, _Mysize - _Off); _Traits::assign(_Myptr() + _Off, _Count, _Char); _Eos(_Num); } return (*this); } iterator insert(iterator _Where) { return (insert(_Where, _Elem())); } iterator insert(iterator _Where, _Elem _Char) { size_type _Off = _Pdif(_Where, begin()); insert(_Off, 1, _Char); return (begin() + _Off); } void insert(iterator _Where, size_type _Count, _Elem _Char) { size_type _Off = _Pdif(_Where, begin()); insert(_Off, _Count, _Char); } template void insert(iterator _Where, _It _First, _It _Last) { _Insert(_Where, _First, _Last, _Iter_cat(_First)); } template void _Insert(iterator _Where, _It _Count, _It _Char, _Int_iterator_tag) { insert(_Where, (size_type)_Count, (_Elem)_Char); } template void _Insert(iterator _Where, _It _First, _It _Last, input_iterator_tag) { replace(_Where, _Where, _First, _Last); } void insert(iterator _Where, const_pointer _First, const_pointer _Last) { replace(_Where, _Where, _First, _Last); } void insert(iterator _Where, const_iterator _First, const_iterator _Last) { replace(_Where, _Where, _First, _Last); } _Myt& erase(size_type _Off = 0, size_type _Count = npos) { if (_Mysize < _Off) _String_base::_Xran(); if (_Mysize - _Off < _Count) _Count = _Mysize - _Off; if (0 < _Count) { _Traits::move(_Myptr() + _Off, _Myptr() + _Off + _Count, _Mysize - _Off - _Count); size_type _Newsize = _Mysize - _Count; if (_Grow(_Newsize)) _Eos(_Newsize); } return (*this); } iterator erase(iterator _Where) { size_type _Count = _Pdif(_Where, begin()); erase(_Count, 1); return (iterator(_Myptr() + _Count)); } iterator erase(iterator _First, iterator _Last) { size_type _Count = _Pdif(_First, begin()); erase(_Count, _Pdif(_Last, _First)); return (iterator(_Myptr() + _Count)); } void clear() { erase(begin(), end()); } _Myt& replace(size_type _Off, size_type _N0, const _Myt& _Right) { return (replace(_Off, _N0, _Right, 0, npos)); } _Myt& replace(size_type _Off, size_type _N0, const _Myt& _Right, size_type _Roff, size_type _Count) { if (_Mysize < _Off || _Right.size() < _Roff) _String_base::_Xran(); if (_Mysize - _Off < _N0) _N0 = _Mysize - _Off; size_type _Num = _Right.size() - _Roff; if (_Num < _Count) _Count = _Num; if (npos - _Count <= _Mysize - _N0) _String_base::_Xlen(); size_type _Nm = _Mysize - _N0 - _Off; size_type _Newsize = _Mysize + _Count - _N0; if (_Mysize < _Newsize) _Grow(_Newsize); if (this != &_Right) { _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off + _N0, _Nm); _Traits::copy(_Myptr() + _Off, _Right._Myptr() + _Roff, _Count); } else if (_Count <= _N0) { _Traits::move(_Myptr() + _Off, _Myptr() + _Roff, _Count); _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off + _N0, _Nm); } else if (_Roff <= _Off) { _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off + _N0, _Nm); _Traits::move(_Myptr() + _Off, _Myptr() + _Roff, _Count); } else if (_Off + _N0 <= _Roff) { _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off + _N0, _Nm); _Traits::move(_Myptr() + _Off, _Myptr() + (_Roff + _Count - _N0), _Count); } else { _Traits::move(_Myptr() + _Off, _Myptr() + _Roff, _N0); _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off + _N0, _Nm); _Traits::move(_Myptr() + _Off + _N0, _Myptr() + _Roff + _Count, _Count - _N0); } if (_Mysize < _Newsize || _Grow(_Newsize)) _Eos(_Newsize); return (*this); } _Myt& replace(size_type _Off, size_type _N0, const _Elem *_Ptr, size_type _Count) { if (_Inside(_Ptr)) return (replace(_Off, _N0, *this, _Ptr - _Myptr(), _Count)); if (_Mysize < _Off) _String_base::_Xran(); if (_Mysize - _Off < _N0) _N0 = _Mysize - _Off; if (npos - _Count <= _Mysize - _N0) _String_base::_Xlen(); size_type _Nm = _Mysize - _N0 - _Off; if (_Count < _N0) _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off + _N0, _Nm); size_type _Num; if ((0 < _Count || 0 < _N0) && _Grow(_Num = _Mysize + _Count - _N0)) { if (_N0 < _Count) _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off + _N0, _Nm); _Traits::copy(_Myptr() + _Off, _Ptr, _Count); _Eos(_Num); } return (*this); } _Myt& replace(size_type _Off, size_type _N0, const _Elem *_Ptr) { return (replace(_Off, _N0, _Ptr, _Traits::length(_Ptr))); } _Myt& replace(size_type _Off, size_type _N0, size_type _Count, _Elem _Char) { if (_Mysize < _Off) _String_base::_Xran(); if (_Mysize - _Off < _N0) _N0 = _Mysize - _Off; if (npos - _Count <= _Mysize - _N0) _String_base::_Xlen(); size_type _Nm = _Mysize - _N0 - _Off; if (_Count < _N0) _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off + _N0, _Nm); size_type _Num; if ((0 < _Count || 0 < _N0) && _Grow(_Num = _Mysize + _Count - _N0)) { if (_N0 < _Count) _Traits::move(_Myptr() + _Off + _Count, _Myptr() + _Off + _N0, _Nm); _Traits::assign(_Myptr() + _Off, _Count, _Char); _Eos(_Num); } return (*this); } _Myt& replace(iterator _First, iterator _Last, const _Myt& _Right) { return (replace( _Pdif(_First, begin()), _Pdif(_Last, _First), _Right)); } _Myt& replace(iterator _First, iterator _Last, const _Elem *_Ptr, size_type _Count) { return (replace( _Pdif(_First, begin()), _Pdif(_Last, _First), _Ptr, _Count)); } _Myt& replace(iterator _First, iterator _Last, const _Elem *_Ptr) { return (replace( _Pdif(_First, begin()), _Pdif(_Last, _First), _Ptr)); } _Myt& replace(iterator _First, iterator _Last, size_type _Count, _Elem _Char) { return (replace( _Pdif(_First, begin()), _Pdif(_Last, _First), _Count, _Char)); } template _Myt& replace(iterator _First, iterator _Last, _It _First2, _It _Last2) { return (_Replace(_First, _Last, _First2, _Last2, _Iter_cat(_First2))); } template _Myt& _Replace(iterator _First, iterator _Last, _It _Count, _It _Char, _Int_iterator_tag) { return (replace(_First, _Last, (size_type)_Count, (_Elem)_Char)); } template _Myt& _Replace(iterator _First, iterator _Last, _It _First2, _It _Last2, input_iterator_tag) { _Myt _Right(_First2, _Last2); replace(_First, _Last, _Right); return (*this); } _Myt& replace(iterator _First, iterator _Last, const_pointer _First2, const_pointer _Last2) { if (_First2 == _Last2) erase(_Pdif(_First, begin()), _Pdif(_Last, _First)); else replace(_Pdif(_First, begin()), _Pdif(_Last, _First), &*_First2, _Last2 - _First2); return (*this); } _Myt& replace(iterator _First, iterator _Last, const_iterator _First2, const_iterator _Last2) { if (_First2 == _Last2) erase(_Pdif(_First, begin()), _Pdif(_Last, _First)); else replace(_Pdif(_First, begin()), _Pdif(_Last, _First), &*_First2, _Last2 - _First2); return (*this); } iterator begin() { return (iterator(_Myptr())); } const_iterator begin() const { return (const_iterator(_Myptr())); } iterator end() { return (iterator(_Myptr() + _Mysize)); } const_iterator end() const { return (const_iterator(_Myptr() + _Mysize)); } reverse_iterator rbegin() { return (reverse_iterator(end())); } const_reverse_iterator rbegin() const { return (const_reverse_iterator(end())); } reverse_iterator rend() { return (reverse_iterator(begin())); } const_reverse_iterator rend() const { return (const_reverse_iterator(begin())); } reference at(size_type _Off) { if (_Mysize <= _Off) _String_base::_Xran(); return (_Myptr()[_Off]); } const_reference at(size_type _Off) const { if (_Mysize <= _Off) _String_base::_Xran(); return (_Myptr()[_Off]); } reference operator[](size_type _Off) { return (_Myptr()[_Off]); } const_reference operator[](size_type _Off) const { return (_Myptr()[_Off]); } void push_back(_Elem _Char) { insert(end(), _Char); } const _Elem *c_str() const { return (_Myptr()); } const _Elem *data() const { return (c_str()); } size_type length() const { return (_Mysize); } size_type size() const { return (_Mysize); } size_type max_size() const { size_type _Num = _Mybase::_Alval.max_size(); return (_Num <= 1 ? 1 : _Num - 1); } void resize(size_type _Newsize) { resize(_Newsize, _Elem()); } void resize(size_type _Newsize, _Elem _Char) { if (_Newsize <= _Mysize) erase(_Newsize); else append(_Newsize - _Mysize, _Char); } size_type capacity() const { return (_Myres); } void reserve(size_type _Newcap = 0) { if (_Myres < _Newcap) _Grow(_Newcap); } bool empty() const { return (_Mysize == 0); } size_type copy(_Elem *_Ptr, size_type _Count, size_type _Off = 0) const { if (_Mysize < _Off) _String_base::_Xran(); if (_Mysize - _Off < _Count) _Count = _Mysize - _Off; _Traits::copy(_Ptr, _Myptr() + _Off, _Count); return (_Count); } void swap(_Myt& _Right) { if (_Mybase::_Alval == _Right._Alval) { _Bxty _Tbx = _Bx; _Bx = _Right._Bx, _Right._Bx = _Tbx; size_type _Tlen = _Mysize; _Mysize = _Right._Mysize, _Right._Mysize = _Tlen; size_type _Tres = _Myres; _Myres = _Right._Myres, _Right._Myres = _Tres; } else { _Myt _Tmp = *this; *this = _Right, _Right = _Tmp; }} size_type find(const _Myt& _Right, size_type _Off = 0) const { return (find(_Right._Myptr(), _Off, _Right.size())); } size_type find(const _Elem *_Ptr, size_type _Off, size_type _Count) const { if (_Count == 0 && _Off <= _Mysize) return (_Off); size_type _Nm; if (_Off < _Mysize && _Count <= (_Nm = _Mysize - _Off)) { const _Elem *_Uptr, *_Vptr; for (_Nm -= _Count - 1, _Vptr = _Myptr() + _Off; (_Uptr = _Traits::find(_Vptr, _Nm, *_Ptr)) != 0; _Nm -= _Uptr - _Vptr + 1, _Vptr = _Uptr + 1) if (_Traits::compare(_Uptr, _Ptr, _Count) == 0) return (_Uptr - _Myptr()); } return (npos); } size_type find(const _Elem *_Ptr, size_type _Off = 0) const { return (find(_Ptr, _Off, _Traits::length(_Ptr))); } size_type find(_Elem _Char, size_type _Off = 0) const { return (find((const _Elem *)&_Char, _Off, 1)); } size_type rfind(const _Myt& _Right, size_type _Off = npos) const { return (rfind(_Right._Myptr(), _Off, _Right.size())); } size_type rfind(const _Elem *_Ptr, size_type _Off, size_type _Count) const { if (_Count == 0) return (_Off < _Mysize ? _Off : _Mysize); if (_Count <= _Mysize) { const _Elem *_Uptr = _Myptr() + (_Off < _Mysize - _Count ? _Off : _Mysize - _Count); for (; ; --_Uptr) if (_Traits::eq(*_Uptr, *_Ptr) && _Traits::compare(_Uptr, _Ptr, _Count) == 0) return (_Uptr - _Myptr()); else if (_Uptr == _Myptr()) break; } return (npos); } size_type rfind(const _Elem *_Ptr, size_type _Off = npos) const { return (rfind(_Ptr, _Off, _Traits::length(_Ptr))); } size_type rfind(_Elem _Char, size_type _Off = npos) const { return (rfind((const _Elem *)&_Char, _Off, 1)); } size_type find_first_of(const _Myt& _Right, size_type _Off = 0) const { return (find_first_of(_Right._Myptr(), _Off, _Right.size())); } size_type find_first_of(const _Elem *_Ptr, size_type _Off, size_type _Count) const { if (0 < _Count && _Off < _Mysize) { const _Elem *const _Vptr = _Myptr() + _Mysize; for (const _Elem *_Uptr = _Myptr() + _Off; _Uptr < _Vptr; ++_Uptr) if (_Traits::find(_Ptr, _Count, *_Uptr) != 0) return (_Uptr - _Myptr()); } return (npos); } size_type find_first_of(const _Elem *_Ptr, size_type _Off = 0) const { return (find_first_of(_Ptr, _Off, _Traits::length(_Ptr))); } size_type find_first_of(_Elem _Char, size_type _Off = 0) const { return (find((const _Elem *)&_Char, _Off, 1)); } size_type find_last_of(const _Myt& _Right, size_type _Off = npos) const { return (find_last_of(_Right._Myptr(), _Off, _Right.size())); } size_type find_last_of(const _Elem *_Ptr, size_type _Off, size_type _Count) const { if (0 < _Count && 0 < _Mysize) for (const _Elem *_Uptr = _Myptr() + (_Off < _Mysize ? _Off : _Mysize - 1); ; --_Uptr) if (_Traits::find(_Ptr, _Count, *_Uptr) != 0) return (_Uptr - _Myptr()); else if (_Uptr == _Myptr()) break; return (npos); } size_type find_last_of(const _Elem *_Ptr, size_type _Off = npos) const { return (find_last_of(_Ptr, _Off, _Traits::length(_Ptr))); } size_type find_last_of(_Elem _Char, size_type _Off = npos) const { return (rfind((const _Elem *)&_Char, _Off, 1)); } size_type find_first_not_of(const _Myt& _Right, size_type _Off = 0) const { return (find_first_not_of(_Right._Myptr(), _Off, _Right.size())); } size_type find_first_not_of(const _Elem *_Ptr, size_type _Off, size_type _Count) const { if (_Off < _Mysize) { const _Elem *const _Vptr = _Myptr() + _Mysize; for (const _Elem *_Uptr = _Myptr() + _Off; _Uptr < _Vptr; ++_Uptr) if (_Traits::find(_Ptr, _Count, *_Uptr) == 0) return (_Uptr - _Myptr()); } return (npos); } size_type find_first_not_of(const _Elem *_Ptr, size_type _Off = 0) const { return (find_first_not_of(_Ptr, _Off, _Traits::length(_Ptr))); } size_type find_first_not_of(_Elem _Char, size_type _Off = 0) const { return (find_first_not_of((const _Elem *)&_Char, _Off, 1)); } size_type find_last_not_of(const _Myt& _Right, size_type _Off = npos) const { return (find_last_not_of(_Right._Myptr(), _Off, _Right.size())); } size_type find_last_not_of(const _Elem *_Ptr, size_type _Off, size_type _Count) const { if (0 < _Mysize) for (const _Elem *_Uptr = _Myptr() + (_Off < _Mysize ? _Off : _Mysize - 1); ; --_Uptr) if (_Traits::find(_Ptr, _Count, *_Uptr) == 0) return (_Uptr - _Myptr()); else if (_Uptr == _Myptr()) break; return (npos); } size_type find_last_not_of(const _Elem *_Ptr, size_type _Off = npos) const { return (find_last_not_of(_Ptr, _Off, _Traits::length(_Ptr))); } size_type find_last_not_of(_Elem _Char, size_type _Off = npos) const { return (find_last_not_of((const _Elem *)&_Char, _Off, 1)); } _Myt substr(size_type _Off = 0, size_type _Count = npos) const { return (_Myt(*this, _Off, _Count)); } int compare(const _Myt& _Right) const { return (compare(0, _Mysize, _Right._Myptr(), _Right.size())); } int compare(size_type _Off, size_type _N0, const _Myt& _Right) const { return (compare(_Off, _N0, _Right, 0, npos)); } int compare(size_type _Off, size_type _N0, const _Myt& _Right, size_type _Roff, size_type _Count) const { if (_Right.size() < _Roff) _String_base::_Xran(); if (_Right._Mysize - _Roff < _Count) _Count = _Right._Mysize - _Roff; return (compare(_Off, _N0, _Right._Myptr() + _Roff, _Count)); } int compare(const _Elem *_Ptr) const { return (compare(0, _Mysize, _Ptr, _Traits::length(_Ptr))); } int compare(size_type _Off, size_type _N0, const _Elem *_Ptr) const { return (compare(_Off, _N0, _Ptr, _Traits::length(_Ptr))); } int compare(size_type _Off, size_type _N0, const _Elem *_Ptr, size_type _Count) const { if (_Mysize < _Off) _String_base::_Xran(); if (_Mysize - _Off < _N0) _N0 = _Mysize - _Off; size_type _Ans = _N0 == 0 ? 0 : _Traits::compare(_Myptr() + _Off, _Ptr, _N0 < _Count ? _N0 : _Count); return (_Ans != 0 ? _Ans : _N0 < _Count ? -1 : _N0 == _Count ? 0 : +1); } allocator_type get_allocator() const { return (_Mybase::_Alval); } enum { _BUF_SIZE = 16 / sizeof (_Elem) < 1 ? 1 : 16 / sizeof(_Elem)}; private: enum { _ALLOC_MASK = sizeof (_Elem) <= 1 ? 15 : sizeof (_Elem) <= 2 ? 7 : sizeof (_Elem) <= 4 ? 3 : sizeof (_Elem) <= 8 ? 1 : 0}; void _Copy(size_type _Newsize, size_type _Oldlen) { size_type _Newres = _Newsize | _ALLOC_MASK; if (max_size() < _Newres) _Newres = _Newsize; _Elem *_Ptr; try { _Ptr = _Mybase::_Alval.allocate(_Newres + 1, (void *)0); } catch (...) { _Newres = _Newsize; _Ptr = _Mybase::_Alval.allocate(_Newres + 1, (void *)0); } if (0 < _Oldlen) _Traits::copy(_Ptr, _Myptr(), _Oldlen); _Tidy(true); _Bx._Ptr = _Ptr; _Myres = _Newres; _Eos(_Oldlen); } void _Eos(size_type _Newsize) { _Traits::assign(_Myptr()[_Mysize = _Newsize], _Elem()); } bool _Grow(size_type _Newsize, bool _Trim = false) { if (max_size() < _Newsize) _String_base::_Xlen(); if (_Myres < _Newsize) _Copy(_Newsize, _Trim ? 0 : _Mysize); else if (_Trim && _Newsize < _BUF_SIZE) _Tidy(true); else if (_Newsize == 0) _Eos(0); return (0 < _Newsize); } bool _Inside(const _Elem *_Ptr) { return (_Myptr() <= _Ptr && _Ptr < _Myptr() + _Mysize); } static size_type _Pdif(const_iterator _P2, const_iterator _P1) { return (_P2.base() == 0 ? 0 : _P2 - _P1); } _Elem *_Myptr() { return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf); } const _Elem *_Myptr() const { return (_BUF_SIZE <= _Myres ? _Bx._Ptr : _Bx._Buf); } void _Tidy(bool _Built = false) { if (!_Built) ; else if (_BUF_SIZE <= _Myres) _Mybase::_Alval.deallocate(_Myptr(), _Myres + 1); _Myres = _BUF_SIZE - 1; _Eos(0); } union _Bxty { _Elem _Buf[_BUF_SIZE]; _Elem *_Ptr; } _Bx; size_type _Mysize; size_type _Myres; }; template const basic_string<_Elem, _Traits, _Alloc>::size_type basic_string<_Elem, _Traits, _Alloc>::npos = (basic_string<_Elem, _Traits, _Alloc>::size_type)(-1); template inline void swap(basic_string<_Elem, _Traits, _Alloc>& _Left, basic_string<_Elem, _Traits, _Alloc>& _Right) { _Left.swap(_Right); } typedef basic_string, allocator > string; typedef basic_string, allocator > wstring; } #line 8 "/usr/include/CC/stdexcept" namespace std { class logic_error : public exception { public: explicit logic_error(const string&); }; class domain_error : public logic_error { public: explicit domain_error(const string&); }; class invalid_argument : public logic_error { public: explicit invalid_argument(const string&); }; class length_error : public logic_error { public: explicit length_error(const string&); }; class out_of_range : public logic_error { public: explicit out_of_range(const string&); }; class runtime_error : public exception { public: explicit runtime_error(const string&); }; class range_error : public runtime_error { public: explicit range_error(const string&); }; class underflow_error : public runtime_error { public: explicit underflow_error(const string&); }; class overflow_error : public runtime_error { public: explicit overflow_error(const string&); }; } #line 7 "/usr/include/CC/list" namespace std { template class _List_nod { protected: typedef typename _Alloc::template rebind::other::pointer _Genptr; struct _Node; friend struct _Node; struct _Node { _Genptr _Next; _Genptr _Prev; _Ty _Myval; }; _List_nod(_Alloc _Al) : _Alnod(_Al) {} typename _Alloc::template rebind<_Node>::other _Alnod; }; template class _List_ptr : public _List_nod<_Ty, _Alloc> { protected: typedef typename _List_nod<_Ty, _Alloc>::_Node _Node; typedef typename _Alloc::template rebind<_Node>::other::pointer _Nodeptr; _List_ptr(_Alloc _Al) : _List_nod<_Ty, _Alloc>(_Al), _Alptr(_Al) {} typename _Alloc::template rebind<_Nodeptr>::other _Alptr; }; template class _List_val : public _List_ptr<_Ty, _Alloc> { protected: typedef typename _Alloc::template rebind<_Ty>::other _Alty; _List_val(_Alloc _Al = _Alloc()) : _List_ptr<_Ty, _Alloc>(_Al), _Alval(_Al) {} _Alty _Alval; }; template > class list : public _List_val<_Ty, _Ax> { public: typedef list<_Ty, _Ax> _Myt; typedef _List_val<_Ty, _Ax> _Mybase; typedef typename _Mybase::_Alty _Alloc; protected: typedef typename _List_nod<_Ty, _Alloc>::_Genptr _Genptr; typedef typename _List_nod<_Ty, _Alloc>::_Node _Node; typedef typename _Alloc::template rebind<_Node> ::other::pointer _Nodeptr; typedef typename _Alloc::template rebind<_Nodeptr> ::other::reference _Nodepref; typedef typename _Alloc::reference _Vref; static _Nodepref _Next(_Nodeptr _Pnode) { return ((_Nodepref)(*_Pnode)._Next); } static _Nodepref _Prev(_Nodeptr _Pnode) { return ((_Nodepref)(*_Pnode)._Prev); } static _Vref _Myval(_Nodeptr _Pnode) { return ((_Vref)(*_Pnode)._Myval); } public: typedef _Alloc allocator_type; typedef typename _Alloc::size_type size_type; typedef typename _Alloc::difference_type _Dift; typedef _Dift difference_type; typedef typename _Alloc::pointer _Tptr; typedef typename _Alloc::const_pointer _Ctptr; typedef _Tptr pointer; typedef _Ctptr const_pointer; typedef typename _Alloc::reference _Reft; typedef _Reft reference; typedef typename _Alloc::const_reference const_reference; typedef typename _Alloc::value_type value_type; class const_iterator; friend class const_iterator; class const_iterator : public _Bidit<_Ty, _Dift, _Ctptr, const_reference> { public: typedef bidirectional_iterator_tag iterator_category; typedef _Ty value_type; typedef _Dift difference_type; typedef _Ctptr pointer; typedef const_reference reference; const_iterator() : _Ptr(0) {} const_iterator(_Nodeptr _Pnode) : _Ptr(_Pnode) {} const_reference operator*() const { return (_Myval(_Ptr)); } _Ctptr operator->() const { return (&**this); } const_iterator& operator++() { _Ptr = _Next(_Ptr); return (*this); } const_iterator operator++(int) { const_iterator _Tmp = *this; ++*this; return (_Tmp); } const_iterator& operator--() { _Ptr = _Prev(_Ptr); return (*this); } const_iterator operator--(int) { const_iterator _Tmp = *this; --*this; return (_Tmp); } bool operator==(const const_iterator& _Right) const { return (_Ptr == _Right._Ptr); } bool operator!=(const const_iterator& _Right) const { return (!(*this == _Right)); } _Nodeptr _Mynode() const { return (_Ptr); } protected: _Nodeptr _Ptr; }; class iterator; friend class iterator; class iterator : public const_iterator { public: typedef bidirectional_iterator_tag iterator_category; typedef _Ty value_type; typedef _Dift difference_type; typedef _Tptr pointer; typedef _Reft reference; iterator() : const_iterator(0) {} iterator(_Nodeptr _Pnode) : const_iterator(_Pnode) {} reference operator*() const { return (_Myval(_Ptr)); } _Tptr operator->() const { return (&**this); } iterator& operator++() { _Ptr = _Next(_Ptr); return (*this); } iterator operator++(int) { iterator _Tmp = *this; ++*this; return (_Tmp); } iterator& operator--() { _Ptr = _Prev(_Ptr); return (*this); } iterator operator--(int) { iterator _Tmp = *this; --*this; return (_Tmp); } }; typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; list() : _Mybase(), _Head(_Buynode()), _Mysize(0) {} explicit list(const _Alloc& _Al) : _Mybase(_Al), _Head(_Buynode()), _Mysize(0) {} explicit list(size_type _Count) : _Mybase(), _Head(_Buynode()), _Mysize(0) { insert(begin(), _Count, _Ty()); } list(size_type _Count, const _Ty& _Val) : _Mybase(), _Head(_Buynode()), _Mysize(0) { insert(begin(), _Count, _Val); } list(size_type _Count, const _Ty& _Val, const _Alloc& _Al) : _Mybase(_Al), _Head(_Buynode()), _Mysize(0) { insert(begin(), _Count, _Val); } list(const _Myt& _Right) : _Mybase(_Right._Alval), _Head(_Buynode()), _Mysize(0) { insert(begin(), _Right.begin(), _Right.end()); } template list(_Iter _First, _Iter _Last) : _Mybase(), _Head(_Buynode()), _Mysize(0) { _Construct(_First, _Last, _Iter_cat(_First)); } template list(_Iter _First, _Iter _Last, const _Alloc& _Al) : _Mybase(_Al), _Head(_Buynode()), _Mysize(0) { _Construct(_First, _Last, _Iter_cat(_First)); } template void _Construct(_Iter _Count, _Iter _Val, _Int_iterator_tag) { insert(begin(), (size_type)_Count, (_Ty)_Val); } template void _Construct(_Iter _First, _Iter _Last, input_iterator_tag) { insert(begin(), _First, _Last); } ~list() { erase(begin(), end()); _Freenode(_Head); _Head = 0, _Mysize = 0; } _Myt& operator=(const _Myt& _Right) { if (this != &_Right) assign(_Right.begin(), _Right.end()); return (*this); } iterator begin() { return (iterator(_Head == 0 ? 0 : _Next(_Head))); } const_iterator begin() const { return (const_iterator(_Head == 0 ? 0 : _Next(_Head))); } iterator end() { return (iterator(_Head)); } const_iterator end() const { return (const_iterator(_Head)); } reverse_iterator rbegin() { return (reverse_iterator(end())); } const_reverse_iterator rbegin() const { return (const_reverse_iterator(end())); } reverse_iterator rend() { return (reverse_iterator(begin())); } const_reverse_iterator rend() const { return (const_reverse_iterator(begin())); } void resize(size_type _Newsize) { resize(_Newsize, _Ty()); } void resize(size_type _Newsize, _Ty _Val) { if (size() < _Newsize) insert(end(), _Newsize - size(), _Val); else while (_Newsize < size()) pop_back(); } size_type size() const { return (_Mysize); } size_type max_size() const { return (_Mybase::_Alval.max_size()); } bool empty() const { return (_Mysize == 0); } allocator_type get_allocator() const { return (_Mybase::_Alval); } reference front() { return (*begin()); } const_reference front() const { return (*begin()); } reference back() { return (*(--end())); } const_reference back() const { return (*(--end())); } void push_front(const _Ty& _Val) { _Insert(begin(), _Val); } void pop_front() { erase(begin()); } void push_back(const _Ty& _Val) { _Insert(end(), _Val); } void pop_back() { erase(--end()); } template void assign(_Iter _First, _Iter _Last) { _Assign(_First, _Last, _Iter_cat(_First)); } template void _Assign(_Iter _Count, _Iter _Val, _Int_iterator_tag) { assign((size_type)_Count, (_Ty)_Val); } template void _Assign(_Iter _First, _Iter _Last, input_iterator_tag) { erase(begin(), end()); insert(begin(), _First, _Last); } void assign(size_type _Count, const _Ty& _Val) { _Ty _Tmp = _Val; erase(begin(), end()); insert(begin(), _Count, _Tmp); } iterator insert(iterator _Where, const _Ty& _Val) { _Insert(_Where, _Val); return (--_Where); } void _Insert(iterator _Where, const _Ty& _Val) { _Nodeptr _Pnode = _Where._Mynode(); _Nodeptr _Newnode = 0; try { _Incsize(1); _Newnode = _Buynode(_Pnode, _Prev(_Pnode)); _Mybase::_Alval.construct(&_Myval(_Newnode), _Val); } catch (...) { if (_Newnode != 0) { --_Mysize; _Freenode(_Newnode); } throw; } _Prev(_Pnode) = _Newnode; _Next(_Prev(_Newnode)) = _Newnode; } void insert(iterator _Where, size_type _Count, const _Ty& _Val) { size_type _Countsave = _Count; try { for (; 0 < _Count; --_Count) _Insert(_Where, _Val); } catch (...) { for (; _Count < _Countsave; ++_Count) { iterator _Before = _Where; erase(--_Before); } throw; }} template void insert(iterator _Where, _Iter _First, _Iter _Last) { _Insert(_Where, _First, _Last, _Iter_cat(_First)); } template void _Insert(iterator _Where, _Iter _Count, _Iter _Val, _Int_iterator_tag) { insert(_Where, (size_type)_Count, (_Ty)_Val); } template void _Insert(iterator _Where, _Iter _First, _Iter _Last, input_iterator_tag) { size_type _Num = 0; try { for (; _First != _Last; ++_First, ++_Num) _Insert(_Where, *_First); } catch (...) { for (; 0 < _Num; --_Num) { iterator _Before = _Where; erase(--_Before); } throw; }} template void _Insert(iterator _Where, _Iter _First, _Iter _Last, forward_iterator_tag) { _Iter _Next = _First; try { for (; _First != _Last; ++_First) _Insert(_Where, *_First); } catch (...) { for (; _Next != _First; ++_Next) { iterator _Before = _Where; erase(--_Before); } throw; }} iterator erase(iterator _Where) { _Nodeptr _Pnode = (_Where++)._Mynode(); if (_Pnode != _Head) { _Next(_Prev(_Pnode)) = _Next(_Pnode); _Prev(_Next(_Pnode)) = _Prev(_Pnode); _Mybase::_Alval.destroy(&_Myval(_Pnode)); _Freenode(_Pnode); --_Mysize; } return (_Where); } iterator erase(iterator _First, iterator _Last) { while (_First != _Last) erase(_First++); return (_First); } void clear() { erase(begin(), end()); } void swap(_Myt& _Right) { if (_Mybase::_Alval == _Right._Alval) { std::swap(_Head, _Right._Head); std::swap(_Mysize, _Right._Mysize); } else { iterator _Where = begin(); splice(_Where, _Right); _Right.splice(_Right.begin(), *this, _Where, end()); }} void splice(iterator _Where, _Myt& _Right) { if (this != &_Right && !_Right.empty()) { _Splice(_Where, _Right, _Right.begin(), _Right.end(), _Right._Mysize); }} void splice(iterator _Where, _Myt& _Right, iterator _First) { iterator _Last = _First; if (_First != _Right.end() && _Where != _First && _Where != ++_Last) { _Splice(_Where, _Right, _First, _Last, 1); }} void splice(iterator _Where, _Myt& _Right, iterator _First, iterator _Last) { if (_First != _Last && _Where != _Last) { size_type _Count = 0; if (this == &_Right) ; else if (_First == _Right.begin() && _Last == _Right.end()) _Count = _Right.size(); else _Distance(_First, _Last, _Count); _Splice(_Where, _Right, _First, _Last, _Count); }} void remove(const _Ty& _Val) { iterator _Last = end(); for (iterator _First = begin(); _First != _Last; ) if (*_First == _Val) erase(_First++); else ++_First; } template void remove_if(_Pr1 _Pred) { iterator _Last = end(); for (iterator _First = begin(); _First != _Last; ) if (_Pred(*_First)) erase(_First++); else ++_First; } void unique() { iterator _First = begin(), _Last = end(); if (_First != _Last) for (iterator _Next = _First; ++_Next != _Last; _Next = _First) if (*_First == *_Next) erase(_Next); else _First = _Next; } template void unique(_Pr2 _Pred) { iterator _First = begin(), _Last = end(); if (_First != _Last) for (iterator _Next = _First; ++_Next != _Last; _Next = _First) if (_Pred(*_First, *_Next)) erase(_Next); else _First = _Next; } void merge(_Myt& _Right) { if (&_Right != this) { iterator _First1 = begin(), _Last1 = end(); iterator _First2 = _Right.begin(), _Last2 = _Right.end(); while (_First1 != _Last1 && _First2 != _Last2) if (*_First2 < *_First1) { iterator _Mid2 = _First2; _Splice(_First1, _Right, _First2, ++_Mid2, 1); _First2 = _Mid2; } else ++_First1; if (_First2 != _Last2) _Splice(_Last1, _Right, _First2, _Last2, _Right._Mysize); }} template void merge(_Myt& _Right, _Pr3 _Pred) { if (&_Right != this) { iterator _First1 = begin(), _Last1 = end(); iterator _First2 = _Right.begin(), _Last2 = _Right.end(); while (_First1 != _Last1 && _First2 != _Last2) if (_Pred(*_First2, *_First1)) { iterator _Mid2 = _First2; _Splice(_First1, _Right, _First2, ++_Mid2, 1); _First2 = _Mid2; } else ++_First1; if (_First2 != _Last2) _Splice(_Last1, _Right, _First2, _Last2, _Right._Mysize); }} void sort() { if (2 <= size()) { const size_t _MAXBINS = 25; _Myt _Templist(_Mybase::_Alval), _Binlist[_MAXBINS + 1]; size_t _Maxbin = 0; while (!empty()) { _Templist.splice(_Templist.begin(), *this, begin()); size_t _Bin; for (_Bin = 0; _Bin < _Maxbin && !_Binlist[_Bin].empty(); ++_Bin) { _Binlist[_Bin].merge(_Templist); _Binlist[_Bin].swap(_Templist); } if (_Bin == _MAXBINS) _Binlist[_Bin - 1].merge(_Templist); else { _Binlist[_Bin].swap(_Templist); if (_Bin == _Maxbin) ++_Maxbin; }} for (size_t _Bin = 1; _Bin < _Maxbin; ++_Bin) _Binlist[_Bin].merge(_Binlist[_Bin - 1]); swap(_Binlist[_Maxbin - 1]); }} template void sort(_Pr3 _Pred) { if (2 <= size()) { const size_t _MAXBINS = 25; _Myt _Templist(_Mybase::_Alval), _Binlist[_MAXBINS + 1]; size_t _Maxbin = 0; while (!empty()) { _Templist.splice(_Templist.begin(), *this, begin()); size_t _Bin; for (_Bin = 0; _Bin < _Maxbin && !_Binlist[_Bin].empty(); ++_Bin) { _Binlist[_Bin].merge(_Templist, _Pred); _Binlist[_Bin].swap(_Templist); } if (_Bin == _MAXBINS) _Binlist[_Bin - 1].merge(_Templist, _Pred); else { _Binlist[_Bin].swap(_Templist); if (_Bin == _Maxbin) ++_Maxbin; }} for (size_t _Bin = 1; _Bin < _Maxbin; ++_Bin) _Binlist[_Bin].merge(_Binlist[_Bin - 1], _Pred); swap(_Binlist[_Maxbin - 1]); }} void reverse() { if (2 <= size()) { iterator _Last = end(); for (iterator _Next = ++begin(); _Next != _Last; ) { iterator _Before = _Next; _Splice(begin(), *this, _Before, ++_Next, 1); }}} protected: _Nodeptr _Buynode(_Nodeptr _Narg = 0, _Nodeptr _Parg = 0) { _Nodeptr _Pnode = _Alnod.allocate(1, (void *)0); _Alptr.construct(&_Next(_Pnode), _Narg != 0 ? _Narg : _Pnode); _Alptr.construct(&_Prev(_Pnode), _Parg != 0 ? _Parg : _Pnode); return (_Pnode); } void _Freenode(_Nodeptr _Pnode) { _Alptr.destroy(&_Next(_Pnode)); _Alptr.destroy(&_Prev(_Pnode)); _Alnod.deallocate(_Pnode, 1); } void _Splice(iterator _Where, _Myt& _Right, iterator _First, iterator _Last, size_type _Count) { if (_Mybase::_Alval == _Right._Alval) { if (this != &_Right) { _Incsize(_Count); _Right._Mysize -= _Count; } _Next(_Prev(_First._Mynode())) = _Last._Mynode(); _Next(_Prev(_Last._Mynode())) = _Where._Mynode(); _Next(_Prev(_Where._Mynode())) = _First._Mynode(); _Nodeptr _Pnode = _Prev(_Where._Mynode()); _Prev(_Where._Mynode()) = _Prev(_Last._Mynode()); _Prev(_Last._Mynode()) = _Prev(_First._Mynode()); _Prev(_First._Mynode()) = _Pnode; } else { insert(_Where, _First, _Last); _Right.erase(_First, _Last); }} void _Incsize(size_type _Count) { if (max_size() - size() < _Count) throw length_error("list too long"); _Mysize += _Count; } _Nodeptr _Head; size_type _Mysize; }; template inline void swap(list<_Ty, _Alloc>& _Left, list<_Ty, _Alloc>& _Right) { _Left.swap(_Right); } template inline bool operator==(const list<_Ty, _Alloc>& _Left, const list<_Ty, _Alloc>& _Right) { return (_Left.size() == _Right.size() && equal(_Left.begin(), _Left.end(), _Right.begin())); } template inline bool operator!=(const list<_Ty, _Alloc>& _Left, const list<_Ty, _Alloc>& _Right) { return (!(_Left == _Right)); } template inline bool operator<(const list<_Ty, _Alloc>& _Left, const list<_Ty, _Alloc>& _Right) { return (lexicographical_compare(_Left.begin(), _Left.end(), _Right.begin(), _Right.end())); } template inline bool operator>(const list<_Ty, _Alloc>& _Left, const list<_Ty, _Alloc>& _Right) { return (_Right < _Left); } template inline bool operator<=(const list<_Ty, _Alloc>& _Left, const list<_Ty, _Alloc>& _Right) { return (!(_Right < _Left)); } template inline bool operator>=(const list<_Ty, _Alloc>& _Left, const list<_Ty, _Alloc>& _Right) { return (!(_Left < _Right)); } } #line 32 "../../include/QtCore/../../src/corelib/tools/qlist.h" #line 1 "/usr/include/CC/new" #ident "@(#)unixsrc:usr/src/common/lib/libC/new /main/1" #line 35 "../../include/QtCore/../../src/corelib/tools/qlist.h" typedef QtValidLicenseForCoreModule QtCoreModule; template class QVector; template class QSet; struct QListData { struct Data { QBasicAtomic ref; int alloc, begin, end; uint sharable : 1; void *array[1]; }; enum { DataHeaderSize = sizeof(Data) - sizeof(void *) }; Data *detach(); void realloc(int alloc); static Data shared_null; Data *d; void **erase(void **xi); void **append(); void **append(const QListData &l); void **prepend(); void **insert(int i); void remove(int i); void remove(int i, int n); void move(int from, int to); inline int size() const { return d->end - d->begin; } inline bool isEmpty() const { return d->end == d->begin; } inline void **at(int i) const { return d->array + d->begin + i; } inline void **begin() const { return d->array + d->begin; } inline void **end() const { return d->array + d->end; } }; template class QList { struct Node { void *v; inline T &t() { return *reinterpret_cast(QTypeInfo::isLarge || QTypeInfo::isStatic ? v : this); } }; union { QListData p; QListData::Data *d; }; public: inline QList() : d(&QListData::shared_null) { d->ref.ref(); } inline QList(const QList &l) : d(l.d) { d->ref.ref(); if (!d->sharable) detach_helper(); } ~QList(); QList &operator=(const QList &l); bool operator==(const QList &l) const; inline bool operator!=(const QList &l) const { return !(*this == l); } inline int size() const { return p.size(); } inline void detach() { if (d->ref != 1) detach_helper(); } inline bool isDetached() const { return d->ref == 1; } inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; } inline bool isEmpty() const { return p.isEmpty(); } void clear(); const T &at(int i) const; const T &operator[](int i) const; T &operator[](int i); void append(const T &t); void prepend(const T &t); void insert(int i, const T &t); void replace(int i, const T &t); void removeAt(int i); int removeAll(const T &t); T takeAt(int i); T takeFirst(); T takeLast(); void move(int from, int to); void swap(int i, int j); int indexOf(const T &t, int from = 0) const; int lastIndexOf(const T &t, int from = -1) const; QBool contains(const T &t) const; int count(const T &t) const; class const_iterator; class iterator { public: Node *i; typedef std::random_access_iterator_tag iterator_category; typedef ptrdiff_t difference_type; typedef T value_type; typedef T *pointer; typedef T &reference; inline iterator() : i(0) {} inline iterator(Node *n) : i(n) {} inline iterator(const iterator &o): i(o.i){} inline T &operator*() const { return i->t(); } inline T *operator->() const { return &i->t(); } inline T &operator[](int j) const { return i[j].t(); } inline bool operator==(const iterator &o) const { return i == o.i; } inline bool operator!=(const iterator &o) const { return i != o.i; } inline bool operator<(const iterator& other) const { return i < other.i; } inline bool operator<=(const iterator& other) const { return i <= other.i; } inline bool operator>(const iterator& other) const { return i > other.i; } inline bool operator>=(const iterator& other) const { return i >= other.i; } inline bool operator==(const const_iterator &o) const { return i == reinterpret_cast(o).i; } inline bool operator!=(const const_iterator &o) const { return i != reinterpret_cast(o).i; } inline bool operator<(const const_iterator& other) const { return i < reinterpret_cast(other).i; } inline bool operator<=(const const_iterator& other) const { return i <= reinterpret_cast(other).i; } inline bool operator>(const const_iterator& other) const { return i > reinterpret_cast(other).i; } inline bool operator>=(const const_iterator& other) const { return i >= reinterpret_cast(other).i; } inline iterator &operator++() { ++i; return *this; } inline iterator operator++(int) { Node *n = i; ++i; return n; } inline iterator &operator--() { i--; return *this; } inline iterator operator--(int) { Node *n = i; i--; return n; } inline iterator &operator+=(int j) { i+=j; return *this; } inline iterator &operator-=(int j) { i-=j; return *this; } inline iterator operator+(int j) const { return iterator(i+j); } inline iterator operator-(int j) const { return iterator(i-j); } inline int operator-(iterator j) const { return i - j.i; } }; friend class iterator; class const_iterator { public: Node *i; typedef std::random_access_iterator_tag iterator_category; typedef ptrdiff_t difference_type; typedef T value_type; typedef const T *pointer; typedef const T &reference; inline const_iterator() : i(0) {} inline const_iterator(Node *n) : i(n) {} inline const_iterator(const const_iterator &o): i(o.i) {} inline const_iterator(const iterator &o): i(o.i) {} inline const T &operator*() const { return i->t(); } inline const T *operator->() const { return &i->t(); } inline const T &operator[](int j) const { return i[j].t(); } inline bool operator==(const const_iterator &o) const { return i == o.i; } inline bool operator!=(const const_iterator &o) const { return i != o.i; } inline bool operator<(const const_iterator& other) const { return i < other.i; } inline bool operator<=(const const_iterator& other) const { return i <= other.i; } inline bool operator>(const const_iterator& other) const { return i > other.i; } inline bool operator>=(const const_iterator& other) const { return i >= other.i; } inline const_iterator &operator++() { ++i; return *this; } inline const_iterator operator++(int) { Node *n = i; ++i; return n; } inline const_iterator &operator--() { i--; return *this; } inline const_iterator operator--(int) { Node *n = i; i--; return n; } inline const_iterator &operator+=(int j) { i+=j; return *this; } inline const_iterator &operator-=(int j) { i+=j; return *this; } inline const_iterator operator+(int j) const { return const_iterator(i+j); } inline const_iterator operator-(int j) const { return const_iterator(i-j); } inline int operator-(const_iterator j) const { return i - j.i; } }; friend class const_iterator; inline iterator begin() { detach(); return reinterpret_cast(p.begin()); } inline const_iterator begin() const { return reinterpret_cast(p.begin()); } inline const_iterator constBegin() const { return reinterpret_cast(p.begin()); } inline iterator end() { detach(); return reinterpret_cast(p.end()); } inline const_iterator end() const { return reinterpret_cast(p.end()); } inline const_iterator constEnd() const { return reinterpret_cast(p.end()); } iterator insert(iterator before, const T &t); iterator erase(iterator pos); iterator erase(iterator first, iterator last); typedef iterator Iterator; typedef const_iterator ConstIterator; inline int count() const { return p.size(); } inline T& first() { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qlist.h",220);} while (0); return *begin(); } inline const T& first() const { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qlist.h",221);} while (0); return *begin(); } T& last() { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qlist.h",222);} while (0); return *(--end()); } const T& last() const { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qlist.h",223);} while (0); return *(--end()); } inline void removeFirst() { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qlist.h",224);} while (0); erase(begin()); } inline void removeLast() { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qlist.h",225);} while (0); erase(--end()); } QList mid(int pos, int length = -1) const; T value(int i) const; T value(int i, const T &defaultValue) const; inline void push_back(const T &t) { append(t); } inline void push_front(const T &t) { prepend(t); } inline T& front() { return first(); } inline const T& front() const { return first(); } inline T& back() { return last(); } inline const T& back() const { return last(); } inline void pop_front() { removeFirst(); } inline void pop_back() { removeLast(); } inline bool empty() const { return isEmpty(); } typedef int size_type; typedef T value_type; typedef value_type *pointer; typedef const value_type *const_pointer; typedef value_type &reference; typedef const value_type &const_reference; inline iterator remove(iterator pos) { return erase(pos); } inline int remove(const T &t) { return removeAll(t); } inline int findIndex(const T& t) const { return indexOf(t); } inline iterator find(const T& t) { int i = indexOf(t); return (i == -1 ? end() : (begin()+i)); } inline const_iterator find (const T& t) const { int i = indexOf(t); return (i == -1 ? end() : (begin()+i)); } inline iterator find(iterator from, const T& t) { int i = indexOf(t, from - begin()); return i == -1 ? end() : begin()+i; } inline const_iterator find(const_iterator from, const T& t) const { int i = indexOf(t, from - begin()); return i == -1 ? end() : begin()+i; } QList &operator+=(const QList &l); inline QList operator+(const QList &l) const { QList n = *this; n += l; return n; } inline QList &operator+=(const T &t) { append(t); return *this; } inline QList &operator<< (const T &t) { append(t); return *this; } inline QList &operator<<(const QList &l) { *this += l; return *this; } QVector toVector() const; QSet toSet() const; static QList fromVector(const QVector &vector); static QList fromSet(const QSet &set); static inline QList fromStdList(const std::list &list) { QList tmp; qCopy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; } inline std::list toStdList() const { std::list tmp; qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; } private: void detach_helper(); void free(QListData::Data *d); void node_construct(Node *n, const T &t); void node_destruct(Node *n); void node_copy(Node *from, Node *to, Node *src); void node_destruct(Node *from, Node *to); }; template inline void QList::node_construct(Node *n, const T &t) { if (QTypeInfo::isLarge || QTypeInfo::isStatic) n->v = new T(t); else if (QTypeInfo::isComplex) new (n) T(t); else *reinterpret_cast(n) = t; } template inline void QList::node_destruct(Node *n) { if (QTypeInfo::isLarge || QTypeInfo::isStatic) delete reinterpret_cast(n->v); else if (QTypeInfo::isComplex) reinterpret_cast(n)->~T(); } template inline void QList::node_copy(Node *from, Node *to, Node *src) { if (QTypeInfo::isLarge || QTypeInfo::isStatic) while(from != to) (from++)->v = new T(*reinterpret_cast((src++)->v)); else if (QTypeInfo::isComplex) while(from != to) new (from++) T(*reinterpret_cast(src++)); } template inline void QList::node_destruct(Node *from, Node *to) { if (QTypeInfo::isLarge || QTypeInfo::isStatic) while(from != to) --to, delete reinterpret_cast(to->v); else if (QTypeInfo::isComplex) while (from != to) --to, reinterpret_cast(to)->~T(); } template inline QList &QList::operator=(const QList &l) { if (d != l.d) { QListData::Data *x = l.d; x->ref.ref(); x = qAtomicSetPtr(&d, x); if (!x->ref.deref()) free(x); if (!d->sharable) detach_helper(); } return *this; } template inline typename QList::iterator QList::insert(iterator before, const T &t) { Node *n = reinterpret_cast(p.insert(before.i-reinterpret_cast(p.begin()))); node_construct(n,t); return n; } template inline typename QList::iterator QList::erase(iterator it) { node_destruct(it.i); return reinterpret_cast(p.erase(reinterpret_cast(it.i))); } template inline const T &QList::at(int i) const { do {if(!(i >= 0 && i < p . size()))qt_assert_x("QList::at", "index out of range","../../include/QtCore/../../src/corelib/tools/qlist.h",361);} while (0); return reinterpret_cast(p.at(i))->t(); } template inline const T &QList::operator[](int i) const { do {if(!(i >= 0 && i < p . size()))qt_assert_x("QList::operator[]", "index out of range","../../include/QtCore/../../src/corelib/tools/qlist.h",365);} while (0); return reinterpret_cast(p.at(i))->t(); } template inline T &QList::operator[](int i) { do {if(!(i >= 0 && i < p . size()))qt_assert_x("QList::operator[]", "index out of range","../../include/QtCore/../../src/corelib/tools/qlist.h",369);} while (0); detach(); return reinterpret_cast(p.at(i))->t(); } template inline void QList::removeAt(int i) { if(i >= 0 && i < p.size()) { detach(); node_destruct(reinterpret_cast(p.at(i))); p.remove(i); } } template inline T QList::takeAt(int i) { do {if(!(i >= 0 && i < p . size()))qt_assert_x("QList::take", "index out of range","../../include/QtCore/../../src/corelib/tools/qlist.h",377);} while (0); detach(); Node *n = reinterpret_cast(p.at(i)); T t = n->t(); node_destruct(n); p.remove(i); return t; } template inline T QList::takeFirst() { T t = first(); removeFirst(); return t; } template inline T QList::takeLast() { T t = last(); removeLast(); return t; } template void QList::append(const T &t) { detach(); if (QTypeInfo::isLarge || QTypeInfo::isStatic) { node_construct(reinterpret_cast(p.append()), t); } else { const T cpy(t); node_construct(reinterpret_cast(p.append()), cpy); } } template inline void QList::prepend(const T &t) { detach(); if (QTypeInfo::isLarge || QTypeInfo::isStatic) { node_construct(reinterpret_cast(p.prepend()), t); } else { const T cpy(t); node_construct(reinterpret_cast(p.prepend()), cpy); } } template inline void QList::insert(int i, const T &t) { detach(); if (QTypeInfo::isLarge || QTypeInfo::isStatic) { node_construct(reinterpret_cast(p.insert(i)), t); } else { const T cpy(t); node_construct(reinterpret_cast(p.insert(i)), cpy); } } template inline void QList::replace(int i, const T &t) { do {if(!(i >= 0 && i < p . size()))qt_assert_x("QList::replace", "index out of range","../../include/QtCore/../../src/corelib/tools/qlist.h",426);} while (0); detach(); if (QTypeInfo::isLarge || QTypeInfo::isStatic) { reinterpret_cast(p.at(i))->t() = t; } else { const T cpy(t); reinterpret_cast(p.at(i))->t() = cpy; } } template inline void QList::swap(int i, int j) { do {if(!(i >= 0 && i < p . size() && j >= 0 && j < p . size()))qt_assert_x("QList::swap", "index out of range","../../include/QtCore/../../src/corelib/tools/qlist.h",439);} while (0); detach(); void *t = d->array[d->begin + i]; d->array[d->begin + i] = d->array[d->begin + j]; d->array[d->begin + j] = t; } template inline void QList::move(int from, int to) { do {if(!(from >= 0 && from < p . size() && to >= 0 && to < p . size()))qt_assert_x("QList::move", "index out of range","../../include/QtCore/../../src/corelib/tools/qlist.h",450);} while (0); detach(); p.move(from, to); } template QList QList::mid(int pos, int length) const { if (length < 0) length = size() - pos; if (pos == 0 && length == size()) return *this; QList cpy; if (pos + length > size()) length = size() - pos; for (int i = pos; i < pos + length; ++i) cpy += at(i); return cpy; } template T QList::value(int i) const { if (i < 0 || i >= p.size()) { return T(); } return reinterpret_cast(p.at(i))->t(); } template T QList::value(int i, const T& defaultValue) const { return ((i < 0 || i >= p.size()) ? defaultValue : reinterpret_cast(p.at(i))->t()); } template void QList::detach_helper() { Node *n = reinterpret_cast(p.begin()); QListData::Data *x = p.detach(); if (x) free(x); node_copy(reinterpret_cast(p.begin()), reinterpret_cast(p.end()), n); } template QList::~QList() { if (!d) return; QListData::Data *x = &QListData::shared_null; x = qAtomicSetPtr(&d, x); if (!x->ref.deref()) free(x); } template bool QList::operator==(const QList &l) const { if (p.size() != l.p.size()) return false; if (d == l.d) return true; Node *i = reinterpret_cast(p.end()); Node *b = reinterpret_cast(p.begin()); Node *li = reinterpret_cast(l.p.end()); while (i != b) { --i; --li; if (!(i->t() == li->t())) return false; } return true; } template void QList::free(QListData::Data *data) { node_destruct(reinterpret_cast(data->array + data->begin), reinterpret_cast(data->array + data->end)); if (data->ref == 0) qFree(data); } template void QList::clear() { *this = QList(); } template int QList::removeAll(const T &_t) { detach(); const T t = _t; int removedCount=0, i=0; Node *n; while (i < p.size()) if ((n = reinterpret_cast(p.at(i)))->t() == t) { node_destruct(n); p.remove(i); ++removedCount; } else { ++i; } return removedCount; } template typename QList::iterator QList::erase(typename QList::iterator afirst, typename QList::iterator alast) { for (Node *n = afirst.i; n < alast.i; ++n) node_destruct(n); int idx = afirst - begin(); p.remove(idx, alast - afirst); return begin() + idx; } template QList &QList::operator+=(const QList &l) { detach(); Node *n = reinterpret_cast(p.append(l.p)); node_copy(n, reinterpret_cast(p.end()), reinterpret_cast(l.p.begin())); return *this; } template int QList::indexOf(const T &t, int from) const { if (from < 0) from = qMax(from + p.size(), 0); if (from < p.size()) { Node *n = reinterpret_cast(p.at(from -1)); Node *e = reinterpret_cast(p.end()); while (++n != e) if (n->t() == t) return n - reinterpret_cast(p.begin()); } return -1; } template int QList::lastIndexOf(const T &t, int from) const { if (from < 0) from += p.size(); else if (from >= p.size()) from = p.size()-1; if (from >= 0) { Node *b = reinterpret_cast(p.begin()); Node *n = reinterpret_cast(p.at(from + 1)); while (n-- != b) { if (n->t() == t) return n - b; } } return -1; } template QBool QList::contains(const T &t) const { Node *b = reinterpret_cast(p.begin()); Node *i = reinterpret_cast(p.end()); while (i-- != b) if (i->t() == t) return QBool(true); return QBool(false); } template int QList::count(const T &t) const { int c = 0; Node *b = reinterpret_cast(p.begin()); Node *i = reinterpret_cast(p.end()); while (i-- != b) if (i->t() == t) ++c; return c; } template class QListIterator { typedef typename QList ::const_iterator const_iterator; QList c; const_iterator i; public: inline QListIterator(const QList &container) : c(container), i(c . constBegin()) {} inline QListIterator &operator=(const QList &container) { c = container; i = c . constBegin(); return *this; } inline void toFront() { i = c . constBegin(); } inline void toBack() { i = c . constEnd(); } inline bool hasNext() const { return i != c . constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c . constBegin(); } inline const T &previous() { return * --i; } inline const T &peekPrevious() const { const_iterator p = i; return * --p; } inline bool findNext(const T &t) { while (i != c . constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c . constBegin()) if (*(--i) == t) return true; return false; } }; template class QMutableListIterator { typedef typename QList ::iterator iterator; QList *c; iterator i, n; inline bool item_exists() const { return n != c->constEnd(); } public: inline QMutableListIterator(QList &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableListIterator() { c->setSharable(true); } inline QMutableListIterator &operator=(QList &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = i; } inline bool hasNext() const { return c->constEnd() != i; } inline T &next() { n = i++; return *n; } inline T &peekNext() const { return *i; } inline bool hasPrevious() const { return c->constBegin() != i; } inline T &previous() { n = --i; return *n; } inline T &peekPrevious() const { iterator p = i; return * --p; } inline void remove() { if (c->constEnd() != n) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) const { if (c->constEnd() != n) *n = t; } inline T &value() { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qlist.h",636);} while (0); return *n; } inline const T &value() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qlist.h",636);} while (0); return *n; } inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } inline bool findNext(const T &t) { while (c->constEnd() != (n = i)) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (c->constBegin() != i) if (*(n = --i) == t) return true; n = c->end(); return false; } }; #line 2 "../../include/QtCore/qlist.h" #line 29 "../../include/QtCore/../../src/corelib/tools/qhash.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QByteArray; class QString; inline uint qHash(char key) { return uint(key); } inline uint qHash(uchar key) { return uint(key); } inline uint qHash(signed char key) { return uint(key); } inline uint qHash(ushort key) { return uint(key); } inline uint qHash(short key) { return uint(key); } inline uint qHash(uint key) { return key; } inline uint qHash(int key) { return uint(key); } inline uint qHash(ulong key) { if (sizeof(ulong) > sizeof(uint)) { return uint((key >> (8 * sizeof(uint) - 1)) ^ key); } else { return uint(key); } } inline uint qHash(long key) { return qHash(ulong(key)); } inline uint qHash(quint64 key) { if (sizeof(quint64) > sizeof(uint)) { return uint((key >> (8 * sizeof(uint) - 1)) ^ key); } else { return uint(key); } } inline uint qHash(qint64 key) { return qHash(quint64(key)); } inline uint qHash(QChar key) { return qHash(key.unicode()); } uint qHash(const QByteArray &key); uint qHash(const QString &key); template inline uint qHash(const T *key) { if (sizeof(const T *) > sizeof(uint)) return qHash(reinterpret_cast(key)); else return uint(reinterpret_cast(key)); } struct QHashData { struct Node { Node *next; uint h; }; Node *fakeNext; Node **buckets; QBasicAtomic ref; int size; int nodeSize; short userNumBits; short numBits; int numBuckets; uint sharable : 1; void *allocateNode(); void freeNode(void *node); QHashData *detach_helper(void (*node_duplicate)(Node *, void *), int nodeSize); void mightGrow(); void hasShrunk(); void rehash(int hint); void destroyAndFree(); Node *firstNode(); static Node *nextNode(Node *node); static Node *previousNode(Node *node); static QHashData shared_null; }; inline void QHashData::mightGrow() { if (size >= numBuckets) rehash(numBits + 1); } inline void QHashData::hasShrunk() { if (size <= (numBuckets >> 3) && numBits > userNumBits) rehash(qMax(int(numBits) - 2, int(userNumBits))); } inline QHashData::Node *QHashData::firstNode() { Node *e = reinterpret_cast(this); Node **bucket = buckets; int n = numBuckets; while (n--) { if (*bucket != e) return *bucket; ++bucket; } return e; } struct QHashDummyValue { }; inline bool operator==(const QHashDummyValue & , const QHashDummyValue & ) { return true; } template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QHashDummyValue)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QHashDummyValue"; } }; template struct QHashDummyNode { QHashDummyNode *next; uint h; Key key; inline QHashDummyNode(const Key &key0) : key(key0) {} }; template struct QHashNode { QHashNode *next; uint h; Key key; T value; inline QHashNode(const Key &key0) : key(key0) {} inline QHashNode(const Key &key0, const T &value0) : key(key0), value(value0) {} inline bool same_key(uint h0, const Key &key0) { return h0 == h && key0 == key; } }; #line 191 "../../include/QtCore/../../src/corelib/tools/qhash.h" template struct QHashDummyNode { QHashDummyNode *next; union { uint h; short key; }; inline QHashDummyNode(short ) {} }; template struct QHashNode { QHashNode *next; union { uint h; short key; }; T value; inline QHashNode(short ) {} inline QHashNode(short , const T &value0) : value(value0) {} inline bool same_key(uint h0, short) { return h0 == h; } }; template struct QHashDummyNode { QHashDummyNode *next; union { uint h; ushort key; }; inline QHashDummyNode(ushort ) {} }; template struct QHashNode { QHashNode *next; union { uint h; ushort key; }; T value; inline QHashNode(ushort ) {} inline QHashNode(ushort , const T &value0) : value(value0) {} inline bool same_key(uint h0, ushort) { return h0 == h; } }; template struct QHashDummyNode { QHashDummyNode *next; union { uint h; int key; }; inline QHashDummyNode(int ) {} }; template struct QHashNode { QHashNode *next; union { uint h; int key; }; T value; inline QHashNode(int ) {} inline QHashNode(int , const T &value0) : value(value0) {} inline bool same_key(uint h0, int) { return h0 == h; } }; template struct QHashDummyNode { QHashDummyNode *next; union { uint h; uint key; }; inline QHashDummyNode(uint ) {} }; template struct QHashNode { QHashNode *next; union { uint h; uint key; }; T value; inline QHashNode(uint ) {} inline QHashNode(uint , const T &value0) : value(value0) {} inline bool same_key(uint h0, uint) { return h0 == h; } }; template class QHash { typedef QHashDummyNode DummyNode; typedef QHashNode Node; union { QHashData *d; QHashNode *e; }; static inline Node *concrete(QHashData::Node *node) { return reinterpret_cast(node); } public: inline QHash() : d(&QHashData::shared_null) { d->ref.ref(); } inline QHash(const QHash &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); } inline ~QHash() { if (!d->ref.deref()) freeData(d); } QHash &operator=(const QHash &other); bool operator==(const QHash &other) const; inline bool operator!=(const QHash &other) const { return !(*this == other); } inline int size() const { return d->size; } inline bool isEmpty() const { return d->size == 0; } inline int capacity() const { return d->numBuckets; } void reserve(int size); inline void squeeze() { reserve(1); } inline void detach() { if (d->ref != 1) detach_helper(); } inline bool isDetached() const { return d->ref == 1; } inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; } void clear(); int remove(const Key &key); T take(const Key &key); bool contains(const Key &key) const; const Key key(const T &value) const; const T value(const Key &key) const; const T value(const Key &key, const T &defaultValue) const; T &operator[](const Key &key); const T operator[](const Key &key) const; QList keys() const; QList keys(const T &value) const; QList values() const; QList values(const Key &key) const; int count(const Key &key) const; class const_iterator; class iterator { QHashData::Node *i; public: typedef std::bidirectional_iterator_tag iterator_category; typedef ptrdiff_t difference_type; typedef T value_type; typedef T *pointer; typedef T &reference; inline operator Node *() const { return concrete(i); } inline iterator() : i(0) { } explicit inline iterator(void *node) : i(reinterpret_cast(node)) { } inline const Key &key() const { return concrete(i)->key; } inline T &value() const { return concrete(i)->value; } inline T &operator*() const { return concrete(i)->value; } inline T *operator->() const { return &concrete(i)->value; } inline bool operator==(const iterator &o) const { return i == o.i; } inline bool operator!=(const iterator &o) const { return i != o.i; } inline bool operator==(const const_iterator &o) const { return i == reinterpret_cast(o).i; } inline bool operator!=(const const_iterator &o) const { return i != reinterpret_cast(o).i; } inline iterator &operator++() { i = QHashData::nextNode(i); return *this; } inline iterator operator++(int) { iterator r = *this; i = QHashData::nextNode(i); return r; } inline iterator &operator--() { i = QHashData::previousNode(i); return *this; } inline iterator operator--(int) { iterator r = *this; i = QHashData::previousNode(i); return r; } inline iterator operator+(int j) const { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } inline iterator operator-(int j) const { return operator+(-j); } inline iterator &operator+=(int j) { return *this = *this + j; } inline iterator &operator-=(int j) { return *this = *this - j; } }; friend class iterator; class const_iterator { QHashData::Node *i; public: typedef std::bidirectional_iterator_tag iterator_category; typedef ptrdiff_t difference_type; typedef T value_type; typedef const T *pointer; typedef const T &reference; inline operator Node *() const { return concrete(i); } inline const_iterator() : i(0) { } explicit inline const_iterator(void *node) : i(reinterpret_cast(node)) { } inline const_iterator(const iterator &o) { i = reinterpret_cast(o).i; } inline const Key &key() const { return concrete(i)->key; } inline const T &value() const { return concrete(i)->value; } inline const T &operator*() const { return concrete(i)->value; } inline const T *operator->() const { return &concrete(i)->value; } inline bool operator==(const const_iterator &o) const { return i == o.i; } inline bool operator!=(const const_iterator &o) const { return i != o.i; } inline const_iterator &operator++() { i = QHashData::nextNode(i); return *this; } inline const_iterator operator++(int) { const_iterator r = *this; i = QHashData::nextNode(i); return r; } inline const_iterator &operator--() { i = QHashData::previousNode(i); return *this; } inline const_iterator operator--(int) { const_iterator r = *this; i = QHashData::previousNode(i); return r; } inline const_iterator operator+(int j) const { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } inline const_iterator operator-(int j) const { return operator+(-j); } inline const_iterator &operator+=(int j) { return *this = *this + j; } inline const_iterator &operator-=(int j) { return *this = *this - j; } }; friend class const_iterator; inline iterator begin() { detach(); return iterator(d->firstNode()); } inline const_iterator begin() const { return const_iterator(d->firstNode()); } inline const_iterator constBegin() const { return const_iterator(d->firstNode()); } inline iterator end() { detach(); return iterator(e); } inline const_iterator end() const { return const_iterator(e); } inline const_iterator constEnd() const { return const_iterator(e); } iterator erase(iterator it); typedef iterator Iterator; typedef const_iterator ConstIterator; inline int count() const { return d->size; } iterator find(const Key &key); const_iterator find(const Key &key) const; const_iterator constFind(const Key &key) const; iterator insert(const Key &key, const T &value); iterator insertMulti(const Key &key, const T &value); QHash &unite(const QHash &other); inline bool empty() const { return isEmpty(); } private: void detach_helper(); void freeData(QHashData *d); Node **findNode(const Key &key, uint *hp = 0) const; Node *createNode(uint h, const Key &key, const T &value, Node **nextNode); void deleteNode(Node *node); static void duplicateNode(QHashData::Node *originalNode, void *newNode); }; template inline void QHash::deleteNode(Node *node) { node->~Node(); d->freeNode(node); } template inline void QHash::duplicateNode(QHashData::Node *node, void *newNode) { Node *concreteNode = concrete(node); if (QTypeInfo::isDummy) { (void) new (newNode) DummyNode(concreteNode->key); } else { (void) new (newNode) Node(concreteNode->key, concreteNode->value); } } template inline typename QHash::Node * QHash::createNode(uint ah, const Key &akey, const T &avalue, Node **anextNode) { Node *node; if (QTypeInfo::isDummy) { node = reinterpret_cast(new (d->allocateNode()) DummyNode(akey)); } else { node = new (d->allocateNode()) Node(akey, avalue); } node->h = ah; node->next = *anextNode; *anextNode = node; ++d->size; return node; } template inline QHash &QHash::unite(const QHash &other) { QHash copy(other); const_iterator it = copy.constEnd(); while (it != copy.constBegin()) { --it; insertMulti(it.key(), it.value()); } return *this; } template void QHash::freeData(QHashData *x) { Node *e_for_x = reinterpret_cast(x); Node **bucket = reinterpret_cast(x->buckets); int n = x->numBuckets; while (n--) { Node *cur = *bucket++; while (cur != e_for_x) { Node *next = cur->next; deleteNode(cur); cur = next; } } x->destroyAndFree(); } template inline void QHash::clear() { *this = QHash(); } template void QHash::detach_helper() { size_t asize; if (QTypeInfo::isDummy) { asize = reinterpret_cast(&reinterpret_cast(&QHashData::shared_null)->value) - reinterpret_cast(&QHashData::shared_null); } else { asize = sizeof(Node); } QHashData *x = d->detach_helper(duplicateNode, int(asize)); x = qAtomicSetPtr(&d, x); if (!x->ref.deref()) freeData(x); } template inline QHash &QHash::operator=(const QHash &other) { if (d != other.d) { QHashData *x = other.d; x->ref.ref(); x = qAtomicSetPtr(&d, x); if (!x->ref.deref()) freeData(x); if (!d->sharable) detach_helper(); } return *this; } template inline const T QHash::value(const Key &akey) const { Node *node = *findNode(akey); if (node == e) { return T(); } else { return node->value; } } template inline const T QHash::value(const Key &akey, const T &adefaultValue) const { Node *node = *findNode(akey); if (node == e) { return adefaultValue; } else { return node->value; } } template QList QHash::keys() const { QList res; const_iterator i = begin(); while (i != end()) { res.append(i.key()); ++i; } return res; } template QList QHash::keys(const T &avalue) const { QList res; const_iterator i = begin(); while (i != end()) { if (i.value() == avalue) res.append(i.key()); ++i; } return res; } template const Key QHash::key(const T &avalue) const { const_iterator i = begin(); while (i != end()) { if (i.value() == avalue) return i.key(); ++i; } return Key(); } template QList QHash::values() const { QList res; const_iterator i = begin(); while (i != end()) { res.append(i.value()); ++i; } return res; } template QList QHash::values(const Key &akey) const { QList res; Node *node = *findNode(akey); if (node != e) { do { res.append(node->value); } while ((node = node->next) != e && node->key == akey); } return res; } template int QHash::count(const Key &akey) const { int cnt = 0; Node *node = *findNode(akey); if (node != e) { do { ++cnt; } while ((node = node->next) != e && node->key == akey); } return cnt; } template inline const T QHash::operator[](const Key &akey) const { return value(akey); } template inline T &QHash::operator[](const Key &akey) { detach(); d->mightGrow(); uint h; Node **node = findNode(akey, &h); if (*node == e) return createNode(h, akey, T(), node)->value; return (*node)->value; } template inline typename QHash::iterator QHash::insert(const Key &akey, const T &avalue) { detach(); d->mightGrow(); uint h; Node **node = findNode(akey, &h); if (*node == e) return iterator(createNode(h, akey, avalue, node)); if (!QTypeInfo::isDummy) (*node)->value = avalue; return iterator(*node); } template inline typename QHash::iterator QHash::insertMulti(const Key &akey, const T &avalue) { detach(); d->mightGrow(); uint h; Node **nextNode = findNode(akey, &h); return iterator(createNode(h, akey, avalue, nextNode)); } template int QHash::remove(const Key &akey) { detach(); int oldSize = d->size; Node **node = findNode(akey); if (*node != e) { bool deleteNext = true; do { Node *next = (*node)->next; deleteNext = (next != e && next->key == (*node)->key); deleteNode(*node); *node = next; --d->size; } while (deleteNext); d->hasShrunk(); } return oldSize - d->size; } template T QHash::take(const Key &akey) { detach(); Node **node = findNode(akey); if (*node != e) { T t = (*node)->value; Node *next = (*node)->next; deleteNode(*node); *node = next; --d->size; d->hasShrunk(); return t; } return T(); } template typename QHash::iterator QHash::erase(iterator it) { if (it == iterator(e)) return it; iterator ret = it; ++ret; Node *node = it; Node **node_ptr = reinterpret_cast(&d->buckets[node->h % d->numBuckets]); while (*node_ptr != node) node_ptr = &(*node_ptr)->next; *node_ptr = node->next; deleteNode(node); --d->size; return ret; } template inline void QHash::reserve(int asize) { detach(); d->rehash(-qMax(asize, 1)); } template inline typename QHash::const_iterator QHash::find(const Key &akey) const { return const_iterator(*findNode(akey)); } template inline typename QHash::const_iterator QHash::constFind(const Key &akey) const { return const_iterator(*findNode(akey)); } template inline typename QHash::iterator QHash::find(const Key &akey) { detach(); return iterator(*findNode(akey)); } template inline bool QHash::contains(const Key &akey) const { return *findNode(akey) != e; } template typename QHash::Node **QHash::findNode(const Key &akey, uint *ahp) const { Node **node; uint h = qHash(akey); if (d->numBuckets) { node = reinterpret_cast(&d->buckets[h % d->numBuckets]); while (*node != e && !(*node)->same_key(h, akey)) node = &(*node)->next; } else { node = const_cast(reinterpret_cast(&e)); } if (ahp) *ahp = h; return node; } template bool QHash::operator==(const QHash &other) const { if (size() != other.size()) return false; if (d == other.d) return true; const_iterator it = begin(); while (it != end()) { const Key &akey = it.key(); const_iterator it2 = other.find(akey); do { if (it2 == other.end() || !(it2.key() == akey)) return false; if (!QTypeInfo::isDummy && !(it.value() == it2.value())) return false; ++it; ++it2; } while (it != end() && it.key() == akey); } return true; } template class QMultiHash : public QHash { public: QMultiHash() {} QMultiHash(const QHash &other) : QHash(other) {} inline typename QHash::iterator replace(const Key &key, const T &value); inline typename QHash::iterator insert(const Key &key, const T &value); inline QMultiHash &operator+=(const QMultiHash &other) { unite(other); return *this; } inline QMultiHash operator+(const QMultiHash &other) const { QMultiHash result = *this; result += other; return result; } private: T &operator[](const Key &key); const T operator[](const Key &key) const; }; template inline typename QHash::iterator QMultiHash::replace(const Key &akey, const T &avalue) { return QHash::insert(akey, avalue); } template inline typename QHash::iterator QMultiHash::insert(const Key &akey, const T &avalue) { return QHash::insertMulti(akey, avalue); } template class QHashIterator { typedef typename QHash ::const_iterator const_iterator; typedef const_iterator Item; QHash c; const_iterator i, n; inline bool item_exists() const { return n != c . constEnd(); } public: inline QHashIterator(const QHash &container) : c(container), i(c . constBegin()), n(c . constEnd()) {} inline QHashIterator &operator=(const QHash &container) { c = container; i = c . constBegin(); n = c . constEnd(); return *this; } inline void toFront() { i = c . constBegin(); n = c . constEnd(); } inline void toBack() { i = c . constEnd(); n = c . constEnd(); } inline bool hasNext() const { return i != c . constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c . constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { const_iterator p = i; return --p; } inline const T &value() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qhash.h",812);} while (0); return *n; } inline const Key &key() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qhash.h",812);} while (0); return n . key(); } inline bool findNext(const T &t) { while ((n = i) != c . constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c . constBegin()) if (*(n = --i) == t) return true; n = c . constEnd(); return false; } }; template class QMutableHashIterator { typedef typename QHash ::iterator iterator; typedef iterator Item; QHash *c; iterator i, n; inline bool item_exists() const { return n != c->constEnd(); } public: inline QMutableHashIterator(QHash &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableHashIterator() { c->setSharable(true); } inline QMutableHashIterator &operator=(QHash &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = c->end(); } inline bool hasNext() const { return i != c->constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c->constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { iterator p = i; return --p; } inline void remove() { if (n != c->constEnd()) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) { if (n != c->constEnd()) *n = t; } inline T &value() { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qhash.h",813);} while (0); return *n; } inline const T &value() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qhash.h",813);} while (0); return *n; } inline const Key &key() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qhash.h",813);} while (0); return n . key(); } inline bool findNext(const T &t) { while ((n = i) != c->constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c->constBegin()) if (*(n = --i) == t) return true; n = c->end(); return false; } }; #line 2 "../../include/QtCore/qhash.h" #line 27 "../../include/QtCore/../../src/corelib/io/qdebug.h" #line 1 "../../include/QtCore/qlist.h" #line 28 "../../include/QtCore/../../src/corelib/io/qdebug.h" #line 1 "../../include/QtCore/qmap.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qmap.h" #line 1 "../../include/QtCore/qatomic.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qmap.h" #line 1 "../../include/QtCore/qiterator.h" #line 27 "../../include/QtCore/../../src/corelib/tools/qmap.h" #line 1 "../../include/QtCore/qlist.h" #line 28 "../../include/QtCore/../../src/corelib/tools/qmap.h" #line 1 "/usr/include/CC/map" #line 1 "/usr/include/CC/xtree" #line 1 "/usr/include/CC/stdexcept" #ident "@(#)unixsrc:usr/src/common/lib/libC/stdexcept /main/1" #line 7 "/usr/include/CC/xtree" namespace std { template class _Tree_nod : public _Traits { protected: typedef typename _Traits::allocator_type allocator_type; typedef typename _Traits::key_compare key_compare; typedef typename _Traits::value_type value_type; typedef typename allocator_type::template rebind::other::pointer _Genptr; struct _Node; friend struct _Node; struct _Node { _Genptr _Left; _Genptr _Parent; _Genptr _Right; value_type _Myval; char _Color; char _Isnil; }; _Tree_nod(const key_compare& _Parg, allocator_type _Al) : _Traits(_Parg), _Alnod(_Al) {} typename allocator_type::template rebind<_Node>::other _Alnod; }; template class _Tree_ptr : public _Tree_nod<_Traits> { protected: typedef typename _Tree_nod<_Traits>::_Node _Node; typedef typename _Traits::allocator_type allocator_type; typedef typename _Traits::key_compare key_compare; typedef typename allocator_type::template rebind<_Node>::other::pointer _Nodeptr; _Tree_ptr(const key_compare& _Parg, allocator_type _Al) : _Tree_nod<_Traits>(_Parg, _Al), _Alptr(_Al) {} typename allocator_type::template rebind<_Nodeptr>::other _Alptr; }; template class _Tree_val : public _Tree_ptr<_Traits> { protected: typedef typename _Traits::allocator_type allocator_type; typedef typename _Traits::key_compare key_compare; _Tree_val(const key_compare& _Parg, allocator_type _Al) : _Tree_ptr<_Traits>(_Parg, _Al), _Alval(_Al) {} allocator_type _Alval; }; template class _Tree : public _Tree_val<_Traits> { public: typedef _Tree<_Traits> _Myt; typedef _Tree_val<_Traits> _Mybase; typedef typename _Traits::key_type key_type; typedef typename _Traits::key_compare key_compare; typedef typename _Traits::value_compare value_compare; typedef typename _Traits::value_type value_type; typedef typename _Traits::allocator_type allocator_type; typedef typename _Traits::_ITptr _ITptr; typedef typename _Traits::_IReft _IReft; protected: typedef typename _Tree_nod<_Traits>::_Genptr _Genptr; typedef typename _Tree_nod<_Traits>::_Node _Node; enum _Redbl { _Red, _Black}; typedef typename allocator_type::template rebind<_Node> ::other::pointer _Nodeptr; typedef typename allocator_type::template rebind<_Nodeptr> ::other::reference _Nodepref; typedef typename allocator_type::template rebind ::other::const_reference _Keyref; typedef typename allocator_type::template rebind ::other::reference _Charref; typedef typename allocator_type::template rebind ::other::reference _Vref; static _Charref _Color(_Nodeptr _Pnode) { return ((_Charref)(*_Pnode)._Color); } static _Charref _Isnil(_Nodeptr _Pnode) { return ((_Charref)(*_Pnode)._Isnil); } static _Keyref _Key(_Nodeptr _Pnode) { return (_Kfn()(_Myval(_Pnode))); } static _Nodepref _Left(_Nodeptr _Pnode) { return ((_Nodepref)(*_Pnode)._Left); } static _Nodepref _Parent(_Nodeptr _Pnode) { return ((_Nodepref)(*_Pnode)._Parent); } static _Nodepref _Right(_Nodeptr _Pnode) { return ((_Nodepref)(*_Pnode)._Right); } static _Vref _Myval(_Nodeptr _Pnode) { return ((_Vref)(*_Pnode)._Myval); } public: typedef typename allocator_type::size_type size_type; typedef typename allocator_type::difference_type _Dift; typedef _Dift difference_type; typedef typename allocator_type::template rebind ::other::pointer _Tptr; typedef typename allocator_type::template rebind ::other::const_pointer _Ctptr; typedef typename allocator_type::template rebind ::other::reference _Reft; typedef _Tptr pointer; typedef _Ctptr const_pointer; typedef _Reft reference; typedef typename allocator_type::template rebind ::other::const_reference const_reference; class const_iterator; friend class const_iterator; class const_iterator : public _Bidit { public: typedef bidirectional_iterator_tag iterator_category; typedef _Dift difference_type; typedef _Ctptr pointer; typedef const_reference reference; const_iterator() : _Ptr(0) {} const_iterator(_Nodeptr _Pnode) : _Ptr(_Pnode) {} const_reference operator*() const { return (_Myval(_Ptr)); } _Ctptr operator->() const { return (&**this); } const_iterator& operator++() { _Inc(); return (*this); } const_iterator operator++(int) { const_iterator _Tmp = *this; ++*this; return (_Tmp); } const_iterator& operator--() { _Dec(); return (*this); } const_iterator operator--(int) { const_iterator _Tmp = *this; --*this; return (_Tmp); } bool operator==(const const_iterator& _Right) const { return (_Ptr == _Right._Ptr); } bool operator!=(const const_iterator& _Right) const { return (!(*this == _Right)); } void _Dec() { if (_Isnil(_Ptr)) _Ptr = _Right(_Ptr); else if (!_Isnil(_Left(_Ptr))) _Ptr = _Max(_Left(_Ptr)); else { _Nodeptr _Pnode; while (!_Isnil(_Pnode = _Parent(_Ptr)) && _Ptr == _Left(_Pnode)) _Ptr = _Pnode; if (!_Isnil(_Pnode)) _Ptr = _Pnode; }} void _Inc() { if (_Isnil(_Ptr)) ; else if (!_Isnil(_Right(_Ptr))) _Ptr = _Min(_Right(_Ptr)); else { _Nodeptr _Pnode; while (!_Isnil(_Pnode = _Parent(_Ptr)) && _Ptr == _Right(_Pnode)) _Ptr = _Pnode; _Ptr = _Pnode; }} _Nodeptr _Mynode() const { return (_Ptr); } protected: _Nodeptr _Ptr; }; class iterator; friend class iterator; class iterator : public const_iterator { public: typedef bidirectional_iterator_tag iterator_category; typedef _Dift difference_type; typedef _ITptr pointer; typedef _IReft reference; iterator() : const_iterator(0) {} iterator(_Nodeptr _Pnode) : const_iterator(_Pnode) {} reference operator*() const { return (_Myval(_Ptr)); } pointer operator->() const { return (&**this); } iterator& operator++() { _Inc(); return (*this); } iterator operator++(int) { iterator _Tmp = *this; ++*this; return (_Tmp); } iterator& operator--() { _Dec(); return (*this); } iterator operator--(int) { iterator _Tmp = *this; --*this; return (_Tmp); } }; typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; typedef pair _Pairib; typedef pair _Pairii; typedef pair _Paircc; explicit _Tree(const key_compare& _Parg, const allocator_type& _Al) : _Mybase(_Parg, _Al) { _Init(); } _Tree(const value_type *_First, const value_type *_Last, const key_compare& _Parg, const allocator_type& _Al) : _Mybase(_Parg, _Al) { _Init(); insert(_First, _Last); } _Tree(const _Myt& _Right) : _Mybase(_Right.key_comp(), _Right.get_allocator()) { _Init(); _Copy(_Right); } ~_Tree() { erase(begin(), end()); _Freenode(_Myhead); _Myhead = 0, _Mysize = 0; } _Myt& operator=(const _Myt& _Right) { if (this != &_Right) { erase(begin(), end()); comp = _Right.comp; _Copy(_Right); } return (*this); } iterator begin() { return (iterator(_Lmost())); } const_iterator begin() const { return (const_iterator(_Lmost())); } iterator end() { return (iterator(_Myhead)); } const_iterator end() const { return (const_iterator(_Myhead)); } reverse_iterator rbegin() { return (reverse_iterator(end())); } const_reverse_iterator rbegin() const { return (const_reverse_iterator(end())); } reverse_iterator rend() { return (reverse_iterator(begin())); } const_reverse_iterator rend() const { return (const_reverse_iterator(begin())); } size_type size() const { return (_Mysize); } size_type max_size() const { return (_Alval.max_size()); } bool empty() const { return (size() == 0); } allocator_type get_allocator() const { return (_Alval); } key_compare key_comp() const { return (comp); } value_compare value_comp() const { return (value_compare(key_comp())); } _Pairib insert(const value_type& _Val) { _Nodeptr _Trynode = _Root(); _Nodeptr _Wherenode = _Myhead; bool _Addleft = true; while (!_Isnil(_Trynode)) { _Wherenode = _Trynode; _Addleft = comp(_Kfn()(_Val), _Key(_Trynode)); _Trynode = _Addleft ? _Left(_Trynode) : _Right(_Trynode); } if (_Multi) return (_Pairib(_Insert(_Addleft, _Wherenode, _Val), true)); else { iterator _Where = iterator(_Wherenode); if (!_Addleft) ; else if (_Where == begin()) return (_Pairib(_Insert(true, _Wherenode, _Val), true)); else --_Where; if (comp(_Key(_Where._Mynode()), _Kfn()(_Val))) return (_Pairib(_Insert(_Addleft, _Wherenode, _Val), true)); else return (_Pairib(_Where, false)); }} iterator insert(iterator _Where, const value_type& _Val) { if (size() == 0) return (_Insert(true, _Myhead, _Val)); else if (_Multi) { if (_Where == begin()) { if (!comp(_Key(_Where._Mynode()), _Kfn()(_Val))) return (_Insert(true, _Where._Mynode(), _Val)); } else if (_Where == end()) { if (!comp(_Kfn()(_Val), _Key(_Rmost()))) return (_Insert(false, _Rmost(), _Val)); } else { iterator _Before = _Where; if ((comp(_Kfn()(_Val), _Key((_Before)._Mynode())) || comp(_Key(_Where._Mynode()), _Kfn()(_Val))) && (comp(_Kfn()(_Val), _Key((--_Before)._Mynode())) || comp(_Key(_Where._Mynode()), _Kfn()(_Val)))) ; else if (_Isnil(_Right(_Before._Mynode()))) return (_Insert(false, _Before._Mynode(), _Val)); else return (_Insert(true, _Where._Mynode(), _Val)); }} else { if (_Where == begin()) { if (comp(_Kfn()(_Val), _Key(_Where._Mynode()))) return (_Insert(true, _Where._Mynode(), _Val)); } else if (_Where == end()) { if (comp(_Key(_Rmost()), _Kfn()(_Val))) return (_Insert(false, _Rmost(), _Val)); } else { iterator _Before = _Where; if (!comp(_Key((--_Before)._Mynode()), _Kfn()(_Val)) || !comp(_Kfn()(_Val), _Key(_Where._Mynode()))) ; else if (_Isnil(_Right(_Before._Mynode()))) return (_Insert(false, _Before._Mynode(), _Val)); else return (_Insert(true, _Where._Mynode(), _Val)); }} return (insert(_Val).first); } template void insert(_Iter _First, _Iter _Last) { for (; _First != _Last; ++_First) insert(*_First); } iterator erase(iterator _Where) { if (_Isnil(_Where._Mynode())) throw out_of_range("invalid map/set iterator"); _Nodeptr _Fixnode; _Nodeptr _Fixnodeparent; _Nodeptr _Erasednode = _Where._Mynode(); _Nodeptr _Pnode = _Erasednode; ++_Where; if (_Isnil(_Left(_Pnode))) _Fixnode = _Right(_Pnode); else if (_Isnil(_Right(_Pnode))) _Fixnode = _Left(_Pnode); else { _Pnode = _Where._Mynode(); _Fixnode = _Right(_Pnode); } if (_Pnode == _Erasednode) { _Fixnodeparent = _Parent(_Erasednode); if (!_Isnil(_Fixnode)) _Parent(_Fixnode) = _Fixnodeparent; if (_Root() == _Erasednode) _Root() = _Fixnode; else if (_Left(_Fixnodeparent) == _Erasednode) _Left(_Fixnodeparent) = _Fixnode; else _Right(_Fixnodeparent) = _Fixnode; if (_Lmost() == _Erasednode) _Lmost() = _Isnil(_Fixnode) ? _Fixnodeparent : _Min(_Fixnode); if (_Rmost() == _Erasednode) _Rmost() = _Isnil(_Fixnode) ? _Fixnodeparent : _Max(_Fixnode); } else { _Parent(_Left(_Erasednode)) = _Pnode; _Left(_Pnode) = _Left(_Erasednode); if (_Pnode == _Right(_Erasednode)) _Fixnodeparent = _Pnode; else { _Fixnodeparent = _Parent(_Pnode); if (!_Isnil(_Fixnode)) _Parent(_Fixnode) = _Fixnodeparent; _Left(_Fixnodeparent) = _Fixnode; _Right(_Pnode) = _Right(_Erasednode); _Parent(_Right(_Erasednode)) = _Pnode; } if (_Root() == _Erasednode) _Root() = _Pnode; else if (_Left(_Parent(_Erasednode)) == _Erasednode) _Left(_Parent(_Erasednode)) = _Pnode; else _Right(_Parent(_Erasednode)) = _Pnode; _Parent(_Pnode) = _Parent(_Erasednode); std::swap(_Color(_Pnode), _Color(_Erasednode)); } if (_Color(_Erasednode) == _Black) { for (; _Fixnode != _Root() && _Color(_Fixnode) == _Black; _Fixnodeparent = _Parent(_Fixnode)) if (_Fixnode == _Left(_Fixnodeparent)) { _Pnode = _Right(_Fixnodeparent); if (_Color(_Pnode) == _Red) { _Color(_Pnode) = _Black; _Color(_Fixnodeparent) = _Red; _Lrotate(_Fixnodeparent); _Pnode = _Right(_Fixnodeparent); } if (_Isnil(_Pnode)) _Fixnode = _Fixnodeparent; else if (_Color(_Left(_Pnode)) == _Black && _Color(_Right(_Pnode)) == _Black) { _Color(_Pnode) = _Red; _Fixnode = _Fixnodeparent; } else { if (_Color(_Right(_Pnode)) == _Black) { _Color(_Left(_Pnode)) = _Black; _Color(_Pnode) = _Red; _Rrotate(_Pnode); _Pnode = _Right(_Fixnodeparent); } _Color(_Pnode) = _Color(_Fixnodeparent); _Color(_Fixnodeparent) = _Black; _Color(_Right(_Pnode)) = _Black; _Lrotate(_Fixnodeparent); break; }} else { _Pnode = _Left(_Fixnodeparent); if (_Color(_Pnode) == _Red) { _Color(_Pnode) = _Black; _Color(_Fixnodeparent) = _Red; _Rrotate(_Fixnodeparent); _Pnode = _Left(_Fixnodeparent); } if (_Isnil(_Pnode)) _Fixnode = _Fixnodeparent; else if (_Color(_Right(_Pnode)) == _Black && _Color(_Left(_Pnode)) == _Black) { _Color(_Pnode) = _Red; _Fixnode = _Fixnodeparent; } else { if (_Color(_Left(_Pnode)) == _Black) { _Color(_Right(_Pnode)) = _Black; _Color(_Pnode) = _Red; _Lrotate(_Pnode); _Pnode = _Left(_Fixnodeparent); } _Color(_Pnode) = _Color(_Fixnodeparent); _Color(_Fixnodeparent) = _Black; _Color(_Left(_Pnode)) = _Black; _Rrotate(_Fixnodeparent); break; }} _Color(_Fixnode) = _Black; } _Destval(&_Myval(_Erasednode)); _Freenode(_Erasednode); if (0 < _Mysize) --_Mysize; return (_Where); } iterator erase(iterator _First, iterator _Last) { if (_First == begin() && _Last == end()) { clear(); return (begin()); } else { while (_First != _Last) erase(_First++); return (_First); }} size_type erase(const key_type& _Keyval) { _Pairii _Where = equal_range(_Keyval); size_type _Num = 0; _Distance(_Where.first, _Where.second, _Num); erase(_Where.first, _Where.second); return (_Num); } void erase(const key_type *_First, const key_type *_Last) { while (_First != _Last) erase(*_First++); } void clear() { _Erase(_Root()); _Root() = _Myhead, _Mysize = 0; _Lmost() = _Myhead, _Rmost() = _Myhead; } iterator find(const key_type& _Keyval) { iterator _Where = lower_bound(_Keyval); return (_Where == end() || comp(_Keyval, _Key(_Where._Mynode())) ? end() : _Where); } const_iterator find(const key_type& _Keyval) const { const_iterator _Where = lower_bound(_Keyval); return (_Where == end() || comp(_Keyval, _Key(_Where._Mynode())) ? end() : _Where); } size_type count(const key_type& _Keyval) const { _Paircc _Ans = equal_range(_Keyval); size_type _Num = 0; _Distance(_Ans.first, _Ans.second, _Num); return (_Num); } iterator lower_bound(const key_type& _Keyval) { return (iterator(_Lbound(_Keyval))); } const_iterator lower_bound(const key_type& _Keyval) const { return (const_iterator(_Lbound(_Keyval))); } iterator upper_bound(const key_type& _Keyval) { return (iterator(_Ubound(_Keyval))); } const_iterator upper_bound(const key_type& _Keyval) const { return (const_iterator(_Ubound(_Keyval))); } _Pairii equal_range(const key_type& _Keyval) { return (_Pairii(lower_bound(_Keyval), upper_bound(_Keyval))); } _Paircc equal_range(const key_type& _Keyval) const { return (_Paircc(lower_bound(_Keyval), upper_bound(_Keyval))); } void swap(_Myt& _Right) { if (get_allocator() == _Right.get_allocator()) { std::swap(comp, _Right.comp); std::swap(_Myhead, _Right._Myhead); std::swap(_Mysize, _Right._Mysize); } else { _Myt _Tmp = *this; *this = _Right, _Right = _Tmp; }} protected: void _Copy(const _Myt& _Right) { _Root() = _Copy(_Right._Root(), _Myhead); _Mysize = _Right.size(); if (!_Isnil(_Root())) { _Lmost() = _Min(_Root()); _Rmost() = _Max(_Root()); } else _Lmost() = _Myhead, _Rmost() = _Myhead; } _Nodeptr _Copy(_Nodeptr _Rootnode, _Nodeptr _Wherenode) { _Nodeptr _Newroot = _Myhead; if (!_Isnil(_Rootnode)) { _Nodeptr _Pnode = _Buynode(_Wherenode, _Color(_Rootnode)); try { _Consval(&_Myval(_Pnode), _Myval(_Rootnode)); } catch (...) { _Freenode(_Pnode); _Erase(_Newroot); throw; } _Left(_Pnode) = _Myhead; _Right(_Pnode) = _Myhead; if (_Isnil(_Newroot)) _Newroot = _Pnode; try { _Left(_Pnode) = _Copy(_Left(_Rootnode), _Pnode); _Right(_Pnode) = _Copy(_Right(_Rootnode), _Pnode); } catch (...) { _Erase(_Newroot); throw; }} return (_Newroot); } void _Erase(_Nodeptr _Rootnode) { for (_Nodeptr _Pnode = _Rootnode; !_Isnil(_Pnode); _Rootnode = _Pnode) { _Erase(_Right(_Pnode)); _Pnode = _Left(_Pnode); _Destval(&_Myval(_Rootnode)); _Freenode(_Rootnode); }} void _Init() { _Myhead = _Buynode(0, _Black); _Isnil(_Myhead) = true; _Root() = _Myhead; _Lmost() = _Myhead, _Rmost() = _Myhead; _Mysize = 0; } iterator _Insert(bool _Addleft, _Nodeptr _Wherenode, const value_type& _Val) { if (max_size() - 1 <= _Mysize) throw length_error("map/set too long"); _Nodeptr _Newnode = _Buynode(_Wherenode, _Red); _Left(_Newnode) = _Myhead, _Right(_Newnode) = _Myhead; try { _Consval(&_Myval(_Newnode), _Val); } catch (...) { _Freenode(_Newnode); throw; } ++_Mysize; if (_Wherenode == _Myhead) { _Root() = _Newnode; _Lmost() = _Newnode, _Rmost() = _Newnode; } else if (_Addleft) { _Left(_Wherenode) = _Newnode; if (_Wherenode == _Lmost()) _Lmost() = _Newnode; } else { _Right(_Wherenode) = _Newnode; if (_Wherenode == _Rmost()) _Rmost() = _Newnode; } for (_Nodeptr _Pnode = _Newnode; _Color(_Parent(_Pnode)) == _Red; ) if (_Parent(_Pnode) == _Left(_Parent(_Parent(_Pnode)))) { _Wherenode = _Right(_Parent(_Parent(_Pnode))); if (_Color(_Wherenode) == _Red) { _Color(_Parent(_Pnode)) = _Black; _Color(_Wherenode) = _Black; _Color(_Parent(_Parent(_Pnode))) = _Red; _Pnode = _Parent(_Parent(_Pnode)); } else { if (_Pnode == _Right(_Parent(_Pnode))) { _Pnode = _Parent(_Pnode); _Lrotate(_Pnode); } _Color(_Parent(_Pnode)) = _Black; _Color(_Parent(_Parent(_Pnode))) = _Red; _Rrotate(_Parent(_Parent(_Pnode))); }} else { _Wherenode = _Left(_Parent(_Parent(_Pnode))); if (_Color(_Wherenode) == _Red) { _Color(_Parent(_Pnode)) = _Black; _Color(_Wherenode) = _Black; _Color(_Parent(_Parent(_Pnode))) = _Red; _Pnode = _Parent(_Parent(_Pnode)); } else { if (_Pnode == _Left(_Parent(_Pnode))) { _Pnode = _Parent(_Pnode); _Rrotate(_Pnode); } _Color(_Parent(_Pnode)) = _Black; _Color(_Parent(_Parent(_Pnode))) = _Red; _Lrotate(_Parent(_Parent(_Pnode))); }} _Color(_Root()) = _Black; return (iterator(_Newnode)); } _Nodeptr _Lbound(const key_type& _Keyval) const { _Nodeptr _Pnode = _Root(); _Nodeptr _Wherenode = _Myhead; while (!_Isnil(_Pnode)) if (comp(_Key(_Pnode), _Keyval)) _Pnode = _Right(_Pnode); else { _Wherenode = _Pnode; _Pnode = _Left(_Pnode); } return (_Wherenode); } _Nodeptr& _Lmost() { return (_Left(_Myhead)); } _Nodeptr& _Lmost() const { return (_Left(_Myhead)); } void _Lrotate(_Nodeptr _Wherenode) { _Nodeptr _Pnode = _Right(_Wherenode); _Right(_Wherenode) = _Left(_Pnode); if (!_Isnil(_Left(_Pnode))) _Parent(_Left(_Pnode)) = _Wherenode; _Parent(_Pnode) = _Parent(_Wherenode); if (_Wherenode == _Root()) _Root() = _Pnode; else if (_Wherenode == _Left(_Parent(_Wherenode))) _Left(_Parent(_Wherenode)) = _Pnode; else _Right(_Parent(_Wherenode)) = _Pnode; _Left(_Pnode) = _Wherenode; _Parent(_Wherenode) = _Pnode; } static _Nodeptr _Max(_Nodeptr _Pnode) { while (!_Isnil(_Right(_Pnode))) _Pnode = _Right(_Pnode); return (_Pnode); } static _Nodeptr _Min(_Nodeptr _Pnode) { while (!_Isnil(_Left(_Pnode))) _Pnode = _Left(_Pnode); return (_Pnode); } _Nodeptr& _Rmost() { return (_Right(_Myhead)); } _Nodeptr& _Rmost() const { return (_Right(_Myhead)); } _Nodeptr& _Root() { return (_Parent(_Myhead)); } _Nodeptr& _Root() const { return (_Parent(_Myhead)); } void _Rrotate(_Nodeptr _Wherenode) { _Nodeptr _Pnode = _Left(_Wherenode); _Left(_Wherenode) = _Right(_Pnode); if (!_Isnil(_Right(_Pnode))) _Parent(_Right(_Pnode)) = _Wherenode; _Parent(_Pnode) = _Parent(_Wherenode); if (_Wherenode == _Root()) _Root() = _Pnode; else if (_Wherenode == _Right(_Parent(_Wherenode))) _Right(_Parent(_Wherenode)) = _Pnode; else _Left(_Parent(_Wherenode)) = _Pnode; _Right(_Pnode) = _Wherenode; _Parent(_Wherenode) = _Pnode; } _Nodeptr _Ubound(const key_type& _Keyval) const { _Nodeptr _Pnode = _Root(); _Nodeptr _Wherenode = _Myhead; while (!_Isnil(_Pnode)) if (comp(_Keyval, _Key(_Pnode))) { _Wherenode = _Pnode; _Pnode = _Left(_Pnode); } else _Pnode = _Right(_Pnode); return (_Wherenode); } _Nodeptr _Buynode(_Nodeptr _Parg, char _Carg) { _Nodeptr _Wherenode = _Alnod.allocate(1, (void *)0); _Alptr.construct(&_Left(_Wherenode), 0); _Alptr.construct(&_Right(_Wherenode), 0); _Alptr.construct(&_Parent(_Wherenode), _Parg); _Color(_Wherenode) = _Carg; _Isnil(_Wherenode) = false; return (_Wherenode); } void _Consval(_Tptr _Pval, const value_type& _Val) { _Alval.construct(_Pval, _Val); } void _Freenode(_Nodeptr _Wherenode) { _Alptr.destroy(&_Parent(_Wherenode)); _Alptr.destroy(&_Right(_Wherenode)); _Alptr.destroy(&_Left(_Wherenode)); _Alnod.deallocate(_Wherenode, 1); } void _Destval(_Tptr _Pval) { _Alval.destroy(_Pval); } _Nodeptr _Myhead; size_type _Mysize; }; template inline void swap(_Tree<_Traits>& _Left, _Tree<_Traits>& _Right) { _Left.swap(_Right); } template inline bool operator==(const _Tree<_Traits>& _Left, const _Tree<_Traits>& _Right) { return (_Left.size() == _Right.size() && equal(_Left.begin(), _Left.end(), _Right.begin())); } template inline bool operator!=(const _Tree<_Traits>& _Left, const _Tree<_Traits>& _Right) { return (!(_Left == _Right)); } template inline bool operator<(const _Tree<_Traits>& _Left, const _Tree<_Traits>& _Right) { return (lexicographical_compare(_Left.begin(), _Left.end(), _Right.begin(), _Right.end(), _Left.value_comp())); } template inline bool operator>(const _Tree<_Traits>& _Left, const _Tree<_Traits>& _Right) { return (_Right < _Left); } template inline bool operator<=(const _Tree<_Traits>& _Left, const _Tree<_Traits>& _Right) { return (!(_Right < _Left)); } template inline bool operator>=(const _Tree<_Traits>& _Left, const _Tree<_Traits>& _Right) { return (!(_Left < _Right)); } } #line 5 "/usr/include/CC/map" namespace std { template class _Tmap_traits { public: typedef _Kty key_type; typedef pair value_type; typedef _Pr key_compare; typedef typename _Alloc::template rebind::other allocator_type; typedef typename allocator_type::template rebind ::other::pointer _ITptr; typedef typename allocator_type::template rebind ::other::reference _IReft; enum { _Multi = _Mfl}; _Tmap_traits() : comp() {} _Tmap_traits(_Pr _Parg) : comp(_Parg) {} class value_compare : public binary_function { friend class _Tmap_traits<_Kty, _Ty, _Pr, _Alloc, _Mfl>; public: bool operator()(const value_type& _Left, const value_type& _Right) const { return (comp(_Left.first, _Right.first)); } value_compare(key_compare _Pred) : comp(_Pred) {} protected: key_compare comp; }; struct _Kfn { const _Kty& operator()(const value_type& _Val) const { return (_Val.first); } }; _Pr comp; }; template, class _Alloc = allocator > > class map : public _Tree<_Tmap_traits<_Kty, _Ty, _Pr, _Alloc, false> > { public: typedef map<_Kty, _Ty, _Pr, _Alloc> _Myt; typedef _Tree<_Tmap_traits<_Kty, _Ty, _Pr, _Alloc, false> > _Mybase; typedef _Kty key_type; typedef _Ty mapped_type; typedef _Pr key_compare; typedef typename _Mybase::value_compare value_compare; typedef typename _Mybase::allocator_type allocator_type; typedef typename _Mybase::size_type size_type; typedef typename _Mybase::difference_type difference_type; typedef typename _Mybase::pointer pointer; typedef typename _Mybase::const_pointer const_pointer; typedef typename _Mybase::reference reference; typedef typename _Mybase::const_reference const_reference; typedef typename _Mybase::iterator iterator; typedef typename _Mybase::const_iterator const_iterator; typedef typename _Mybase::reverse_iterator reverse_iterator; typedef typename _Mybase::const_reverse_iterator const_reverse_iterator; typedef typename _Mybase::value_type value_type; map() : _Mybase(key_compare(), allocator_type()) {} explicit map(const key_compare& _Pred) : _Mybase(_Pred, allocator_type()) {} map(const key_compare& _Pred, const allocator_type& _Al) : _Mybase(_Pred, _Al) {} template map(_Iter _First, _Iter _Last) : _Mybase(key_compare(), allocator_type()) { for (; _First != _Last; ++_First) insert(*_First); } template map(_Iter _First, _Iter _Last, const key_compare& _Pred) : _Mybase(_Pred, allocator_type()) { for (; _First != _Last; ++_First) insert(*_First); } template map(_Iter _First, _Iter _Last, const key_compare& _Pred, const allocator_type& _Al) : _Mybase(_Pred, _Al) { for (; _First != _Last; ++_First) insert(*_First); } mapped_type& operator[](const key_type& _Keyval) { iterator _Where = insert(value_type(_Keyval, mapped_type())).first; return ((*_Where).second); } }; template, class _Alloc = allocator > > class multimap : public _Tree<_Tmap_traits<_Kty, _Ty, _Pr, _Alloc, true> > { public: typedef multimap<_Kty, _Ty, _Pr, _Alloc> _Myt; typedef _Tree<_Tmap_traits<_Kty, _Ty, _Pr, _Alloc, true> > _Mybase; typedef _Kty key_type; typedef _Ty mapped_type; typedef _Pr key_compare; typedef typename _Mybase::value_compare value_compare; typedef typename _Mybase::allocator_type allocator_type; typedef typename _Mybase::size_type size_type; typedef typename _Mybase::difference_type difference_type; typedef typename _Mybase::pointer pointer; typedef typename _Mybase::const_pointer const_pointer; typedef typename _Mybase::reference reference; typedef typename _Mybase::const_reference const_reference; typedef typename _Mybase::iterator iterator; typedef typename _Mybase::const_iterator const_iterator; typedef typename _Mybase::reverse_iterator reverse_iterator; typedef typename _Mybase::const_reverse_iterator const_reverse_iterator; typedef typename _Mybase::value_type value_type; multimap() : _Mybase(key_compare(), allocator_type()) {} explicit multimap(const key_compare& _Pred) : _Mybase(_Pred, allocator_type()) {} multimap(const key_compare& _Pred, const allocator_type& _Al) : _Mybase(_Pred, _Al) {} template multimap(_Iter _First, _Iter _Last) : _Mybase(key_compare(), allocator_type()) { for (; _First != _Last; ++_First) insert(*_First); } template multimap(_Iter _First, _Iter _Last, const key_compare& _Pred) : _Mybase(_Pred, allocator_type()) { for (; _First != _Last; ++_First) insert(*_First); } template multimap(_Iter _First, _Iter _Last, const key_compare& _Pred, const allocator_type& _Al) : _Mybase(_Pred, _Al) { for (; _First != _Last; ++_First) insert(*_First); } iterator insert(const value_type& _Val) { return (_Mybase::insert(_Val).first); } iterator insert(iterator _Where, const value_type& _Val) { return (_Mybase::insert(_Where, _Val)); } template void insert(_Iter _First, _Iter _Last) { for (; _First != _Last; ++_First) insert(*_First); } }; } #line 31 "../../include/QtCore/../../src/corelib/tools/qmap.h" #line 1 "/usr/include/CC/new" #ident "@(#)unixsrc:usr/src/common/lib/libC/new /main/1" #line 34 "../../include/QtCore/../../src/corelib/tools/qmap.h" typedef QtValidLicenseForCoreModule QtCoreModule; struct QMapData { struct Node { Node *backward; Node *forward[1]; }; enum { LastLevel = 11, Sparseness = 3 }; Node *backward; Node *forward[QMapData::LastLevel + 1]; QBasicAtomic ref; int topLevel; int size; uint randomBits; uint insertInOrder : 1; uint sharable : 1; static QMapData *createData(); void continueFreeData(int offset); Node *node_create(Node *update[], int offset); void node_delete(Node *update[], int offset, Node *node); static QMapData shared_null; }; template inline bool qMapLessThanKey(const Key &key1, const Key &key2) { return key1 < key2; } template inline bool qMapLessThanKey(Ptr *key1, Ptr *key2) { do {if(!(sizeof(ulong) == sizeof(Ptr *)))qt_assert("sizeof(ulong) == sizeof(Ptr *)","../../include/QtCore/../../src/corelib/tools/qmap.h",87);} while (0); return reinterpret_cast(key1) < reinterpret_cast(key2); } template inline bool qMapLessThanKey(const Ptr *key1, const Ptr *key2) { do {if(!(sizeof(ulong) == sizeof(const Ptr *)))qt_assert("sizeof(ulong) == sizeof(const Ptr *)","../../include/QtCore/../../src/corelib/tools/qmap.h",93);} while (0); return reinterpret_cast(key1) < reinterpret_cast(key2); } class QDataStream; template class QMap; template QDataStream &operator>>(QDataStream &in, QMap &map); template class QMap { struct Node { Key key; T value; QMapData::Node *backward; QMapData::Node *forward[1]; }; union { QMapData *d; QMapData::Node *e; }; struct PayloadNode { Key key; T value; QMapData::Node *backward; }; enum { Payload = sizeof(PayloadNode) - sizeof(QMapData::Node *) }; static inline Node *concrete(QMapData::Node *node) { return reinterpret_cast(reinterpret_cast(node) - Payload); } public: inline QMap() : d(&QMapData::shared_null) { d->ref.ref(); } inline QMap(const QMap &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); } inline ~QMap() { if (!d) return; if (!d->ref.deref()) freeData(d); } QMap &operator=(const QMap &other); explicit QMap(const typename std::map &other); std::map toStdMap() const; bool operator==(const QMap &other) const; inline bool operator!=(const QMap &other) const { return !(*this == other); } inline int size() const { return d->size; } inline bool isEmpty() const { return d->size == 0; } inline void detach() { if (d->ref != 1) detach_helper(); } inline bool isDetached() const { return d->ref == 1; } inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; } void clear(); int remove(const Key &key); T take(const Key &key); bool contains(const Key &key) const; const Key key(const T &value) const; const T value(const Key &key) const; const T value(const Key &key, const T &defaultValue) const; T &operator[](const Key &key); const T operator[](const Key &key) const; QList keys() const; QList keys(const T &value) const; QList values() const; QList values(const Key &key) const; int count(const Key &key) const; class const_iterator; class iterator { QMapData::Node *i; public: typedef std::bidirectional_iterator_tag iterator_category; typedef ptrdiff_t difference_type; typedef T value_type; typedef T *pointer; typedef T &reference; inline operator QMapData::Node *() const { return i; } inline iterator() : i(0) { } inline iterator(QMapData::Node *node) : i(node) { } inline const Key &key() const { return concrete(i)->key; } inline T &value() const { return concrete(i)->value; } inline T &data() const { return concrete(i)->value; } inline T &operator*() const { return concrete(i)->value; } inline T *operator->() const { return &concrete(i)->value; } inline bool operator==(const iterator &o) const { return i == o.i; } inline bool operator!=(const iterator &o) const { return i != o.i; } inline bool operator==(const const_iterator &o) const { return i == reinterpret_cast(o).i; } inline bool operator!=(const const_iterator &o) const { return i != reinterpret_cast(o).i; } inline iterator &operator++() { i = i->forward[0]; return *this; } inline iterator operator++(int) { iterator r = *this; i = i->forward[0]; return r; } inline iterator &operator--() { i = i->backward; return *this; } inline iterator operator--(int) { iterator r = *this; i = i->backward; return r; } inline iterator operator+(int j) const { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } inline iterator operator-(int j) const { return operator+(-j); } inline iterator &operator+=(int j) { return *this = *this + j; } inline iterator &operator-=(int j) { return *this = *this - j; } }; friend class iterator; class const_iterator { QMapData::Node *i; public: typedef std::bidirectional_iterator_tag iterator_category; typedef ptrdiff_t difference_type; typedef T value_type; typedef const T *pointer; typedef const T &reference; inline operator QMapData::Node *() const { return i; } inline const_iterator() : i(0) { } inline const_iterator(QMapData::Node *node) : i(node) { } inline const_iterator(const iterator &o) { i = reinterpret_cast(o).i; } inline const Key &key() const { return concrete(i)->key; } inline const T &value() const { return concrete(i)->value; } inline const T &data() const { return concrete(i)->value; } inline const T &operator*() const { return concrete(i)->value; } inline const T *operator->() const { return &concrete(i)->value; } inline bool operator==(const const_iterator &o) const { return i == o.i; } inline bool operator!=(const const_iterator &o) const { return i != o.i; } inline const_iterator &operator++() { i = i->forward[0]; return *this; } inline const_iterator operator++(int) { const_iterator r = *this; i = i->forward[0]; return r; } inline const_iterator &operator--() { i = i->backward; return *this; } inline const_iterator operator--(int) { const_iterator r = *this; i = i->backward; return r; } inline const_iterator operator+(int j) const { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; } inline const_iterator operator-(int j) const { return operator+(-j); } inline const_iterator &operator+=(int j) { return *this = *this + j; } inline const_iterator &operator-=(int j) { return *this = *this - j; } }; friend class const_iterator; inline iterator begin() { detach(); return iterator(e->forward[0]); } inline const_iterator begin() const { return const_iterator(e->forward[0]); } inline const_iterator constBegin() const { return const_iterator(e->forward[0]); } inline iterator end() { detach(); return iterator(e); } inline const_iterator end() const { return const_iterator(e); } inline const_iterator constEnd() const { return const_iterator(e); } iterator erase(iterator it); inline iterator remove(iterator it) { return erase(it); } inline void erase(const Key &key) { remove(key); } typedef iterator Iterator; typedef const_iterator ConstIterator; inline int count() const { return d->size; } iterator find(const Key &key); const_iterator find(const Key &key) const; const_iterator constFind(const Key &key) const; iterator lowerBound(const Key &key); const_iterator lowerBound(const Key &key) const; iterator upperBound(const Key &key); const_iterator upperBound(const Key &key) const; iterator insert(const Key &key, const T &value); iterator insert(const Key &key, const T &value, bool overwrite); iterator insertMulti(const Key &key, const T &value); inline iterator replace(const Key &key, const T &value) { return insert(key, value); } QMap &unite(const QMap &other); inline bool empty() const { return isEmpty(); } private: void detach_helper(); void freeData(QMapData *d); QMapData::Node *findNode(const Key &key) const; QMapData::Node *mutableFindNode(QMapData::Node *update[], const Key &key) const; QMapData::Node *node_create(QMapData *d, QMapData::Node *update[], const Key &key, const T &value); template friend QDataStream &operator>> (QDataStream &in, QMap &map); }; template inline QMap &QMap::operator=(const QMap &other) { if (d != other.d) { QMapData *x = other.d; x->ref.ref(); x = qAtomicSetPtr(&d, x); if (!x->ref.deref()) freeData(x); if (!d->sharable) detach_helper(); } return *this; } template inline void QMap::clear() { *this = QMap(); } template inline typename QMapData::Node * QMap::node_create(QMapData *adt, QMapData::Node *aupdate[], const Key &akey, const T &avalue) { QMapData::Node *abstractNode = adt->node_create(aupdate, Payload); Node *concreteNode = concrete(abstractNode); new (&concreteNode->key) Key(akey); new (&concreteNode->value) T(avalue); return abstractNode; } template inline QMapData::Node *QMap::findNode(const Key &akey) const { QMapData::Node *cur = e; QMapData::Node *next = e; for (int i = d->topLevel; i >= 0; i--) { while ((next = cur->forward[i]) != e && qMapLessThanKey(concrete(next)->key, akey)) cur = next; } if (next != e && !qMapLessThanKey(akey, concrete(next)->key)) { return next; } else { return e; } } template inline const T QMap::value(const Key &akey) const { QMapData::Node *node = findNode(akey); if (node == e) { return T(); } else { return concrete(node)->value; } } template inline const T QMap::value(const Key &akey, const T &adefaultValue) const { QMapData::Node *node = findNode(akey); if (node == e) { return adefaultValue; } else { return concrete(node)->value; } } template inline const T QMap::operator[](const Key &akey) const { return value(akey); } template inline T &QMap::operator[](const Key &akey) { detach(); QMapData::Node *update[QMapData::LastLevel + 1]; QMapData::Node *node = mutableFindNode(update, akey); if (node == e) node = node_create(d, update, akey, T()); return concrete(node)->value; } template inline int QMap::count(const Key &akey) const { int cnt = 0; QMapData::Node *node = findNode(akey); if (node != e) { do { ++cnt; node = node->forward[0]; } while (node != e && !qMapLessThanKey(akey, concrete(node)->key)); } return cnt; } template inline bool QMap::contains(const Key &akey) const { return findNode(akey) != e; } template inline typename QMap::iterator QMap::insert(const Key &akey, const T &avalue) { detach(); QMapData::Node *update[QMapData::LastLevel + 1]; QMapData::Node *node = mutableFindNode(update, akey); if (node == e) { node = node_create(d, update, akey, avalue); } else { concrete(node)->value = avalue; } return iterator(node); } template inline typename QMap::iterator QMap::insert(const Key &akey, const T &avalue, bool aoverwrite) { detach(); QMapData::Node *update[QMapData::LastLevel + 1]; QMapData::Node *node = mutableFindNode(update, akey); if (node == e) { node = node_create(d, update, akey, avalue); } else { if (aoverwrite) concrete(node)->value = avalue; } return iterator(node); } template inline typename QMap::iterator QMap::insertMulti(const Key &akey, const T &avalue) { detach(); QMapData::Node *update[QMapData::LastLevel + 1]; mutableFindNode(update, akey); return iterator(node_create(d, update, akey, avalue)); } template inline typename QMap::const_iterator QMap::find(const Key &akey) const { return const_iterator(findNode(akey)); } template inline typename QMap::const_iterator QMap::constFind(const Key &akey) const { return const_iterator(findNode(akey)); } template inline typename QMap::iterator QMap::find(const Key &akey) { detach(); return iterator(findNode(akey)); } template inline QMap &QMap::unite(const QMap &other) { QMap copy(other); const_iterator it = copy.constEnd(); while (it != copy.constBegin()) { --it; insertMulti(it.key(), it.value()); } return *this; } template void QMap::freeData(QMapData *x) { if (QTypeInfo::isComplex || QTypeInfo::isComplex) { QMapData::Node *y = reinterpret_cast(x); QMapData::Node *cur = y; QMapData::Node *next = cur->forward[0]; while (next != y) { cur = next; next = cur->forward[0]; Node *concreteNode = concrete(cur); concreteNode->key.~Key(); concreteNode->value.~T(); } } x->continueFreeData(Payload); } template int QMap::remove(const Key &akey) { detach(); QMapData::Node *update[QMapData::LastLevel + 1]; QMapData::Node *cur = e; QMapData::Node *next = e; int oldSize = d->size; for (int i = d->topLevel; i >= 0; i--) { while ((next = cur->forward[i]) != e && qMapLessThanKey(concrete(next)->key, akey)) cur = next; update[i] = cur; } if (next != e && !qMapLessThanKey(akey, concrete(next)->key)) { bool deleteNext = true; do { cur = next; next = cur->forward[0]; deleteNext = (next != e && !qMapLessThanKey(concrete(cur)->key, concrete(next)->key)); concrete(cur)->key.~Key(); concrete(cur)->value.~T(); d->node_delete(update, Payload, cur); } while (deleteNext); } return oldSize - d->size; } template T QMap::take(const Key &akey) { detach(); QMapData::Node *update[QMapData::LastLevel + 1]; QMapData::Node *cur = e; QMapData::Node *next = e; for (int i = d->topLevel; i >= 0; i--) { while ((next = cur->forward[i]) != e && qMapLessThanKey(concrete(next)->key, akey)) cur = next; update[i] = cur; } if (next != e && !qMapLessThanKey(akey, concrete(next)->key)) { T t = concrete(next)->value; concrete(next)->key.~Key(); concrete(next)->value.~T(); d->node_delete(update, Payload, next); return t; } return T(); } template typename QMap::iterator QMap::erase(iterator it) { QMapData::Node *update[QMapData::LastLevel + 1]; QMapData::Node *cur = e; QMapData::Node *next = e; if (it == iterator(e)) return it; for (int i = d->topLevel; i >= 0; i--) { while ((next = cur->forward[i]) != e && qMapLessThanKey(concrete(next)->key, it.key())) cur = next; update[i] = cur; } while (next != e) { cur = next; next = cur->forward[0]; if (cur == it) { concrete(cur)->key.~Key(); concrete(cur)->value.~T(); d->node_delete(update, Payload, cur); return iterator(next); } for (int i = 0; i <= d->topLevel; ++i) { if (update[i]->forward[i] != cur) break; update[i] = cur; } } return end(); } template void QMap::detach_helper() { union { QMapData *d; QMapData::Node *e; } x; x.d = QMapData::createData(); if (d->size) { x.d->insertInOrder = true; QMapData::Node *update[QMapData::LastLevel + 1]; QMapData::Node *cur = e->forward[0]; update[0] = x.e; while (cur != e) { Node *concreteNode = concrete(cur); node_create(x.d, update, concreteNode->key, concreteNode->value); cur = cur->forward[0]; } x.d->insertInOrder = false; } x.d = qAtomicSetPtr(&d, x.d); if (!x.d->ref.deref()) freeData(x.d); } template QMapData::Node *QMap::mutableFindNode(QMapData::Node *aupdate[], const Key &akey) const { QMapData::Node *cur = e; QMapData::Node *next = e; for (int i = d->topLevel; i >= 0; i--) { while ((next = cur->forward[i]) != e && qMapLessThanKey(concrete(next)->key, akey)) cur = next; aupdate[i] = cur; } if (next != e && !qMapLessThanKey(akey, concrete(next)->key)) { return next; } else { return e; } } template QList QMap::keys() const { QList res; const_iterator i = begin(); while (i != end()) { res.append(i.key()); ++i; } return res; } template QList QMap::keys(const T &avalue) const { QList res; const_iterator i = begin(); while (i != end()) { if (i.value() == avalue) res.append(i.key()); ++i; } return res; } template const Key QMap::key(const T &avalue) const { const_iterator i = begin(); while (i != end()) { if (i.value() == avalue) return i.key(); ++i; } return Key(); } template QList QMap::values() const { QList res; const_iterator i = begin(); while (i != end()) { res.append(i.value()); ++i; } return res; } template QList QMap::values(const Key &akey) const { QList res; QMapData::Node *node = findNode(akey); if (node != e) { do { res.append(concrete(node)->value); node = node->forward[0]; } while (node != e && !qMapLessThanKey(akey, concrete(node)->key)); } return res; } template inline typename QMap::const_iterator QMap::lowerBound(const Key &akey) const { QMapData::Node *update[QMapData::LastLevel + 1]; mutableFindNode(update, akey); return const_iterator(update[0]->forward[0]); } template inline typename QMap::iterator QMap::lowerBound(const Key &akey) { detach(); return static_cast(const_cast(this)->lowerBound(akey)); } template inline typename QMap::const_iterator QMap::upperBound(const Key &akey) const { QMapData::Node *update[QMapData::LastLevel + 1]; mutableFindNode(update, akey); QMapData::Node *node = update[0]->forward[0]; while (node != e && !qMapLessThanKey(akey, concrete(node)->key)) node = node->forward[0]; return const_iterator(node); } template inline typename QMap::iterator QMap::upperBound(const Key &akey) { detach(); return static_cast(const_cast(this)->upperBound(akey)); } template bool QMap::operator==(const QMap &other) const { if (size() != other.size()) return false; if (d == other.d) return true; const_iterator it1 = begin(); const_iterator it2 = other.begin(); while (it1 != end()) { if (!(it1.value() == it2.value()) || qMapLessThanKey(it1.key(), it2.key()) || qMapLessThanKey(it2.key(), it1.key())) return false; ++it2; ++it1; } return true; } template QMap::QMap(const std::map &other) { d = QMapData::createData(); d->insertInOrder = true; typename std::map::const_iterator it = other.end(); while (it != other.begin()) { --it; insert((*it).first, (*it).second); } d->insertInOrder = false; } template std::map QMap::toStdMap() const { std::map map; const_iterator it = end(); while (it != begin()) { --it; map.insert(std::pair(it.key(), it.value())); } return map; } template class QMultiMap : public QMap { public: QMultiMap() {} QMultiMap(const QMap &other) : QMap(other) {} inline typename QMap::iterator replace(const Key &key, const T &value); inline typename QMap::iterator insert(const Key &key, const T &value); inline QMultiMap &operator+=(const QMultiMap &other) { unite(other); return *this; } inline QMultiMap operator+(const QMultiMap &other) const { QMultiMap result = *this; result += other; return result; } private: T &operator[](const Key &key); const T operator[](const Key &key) const; }; template inline typename QMap::iterator QMultiMap::replace(const Key &akey, const T &avalue) { return QMap::insert(akey, avalue); } template inline typename QMap::iterator QMultiMap::insert(const Key &akey, const T &avalue) { return QMap::insertMulti(akey, avalue); } template class QMapIterator { typedef typename QMap ::const_iterator const_iterator; typedef const_iterator Item; QMap c; const_iterator i, n; inline bool item_exists() const { return n != c . constEnd(); } public: inline QMapIterator(const QMap &container) : c(container), i(c . constBegin()), n(c . constEnd()) {} inline QMapIterator &operator=(const QMap &container) { c = container; i = c . constBegin(); n = c . constEnd(); return *this; } inline void toFront() { i = c . constBegin(); n = c . constEnd(); } inline void toBack() { i = c . constEnd(); n = c . constEnd(); } inline bool hasNext() const { return i != c . constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c . constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { const_iterator p = i; return --p; } inline const T &value() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qmap.h",852);} while (0); return *n; } inline const Key &key() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qmap.h",852);} while (0); return n . key(); } inline bool findNext(const T &t) { while ((n = i) != c . constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c . constBegin()) if (*(n = --i) == t) return true; n = c . constEnd(); return false; } }; template class QMutableMapIterator { typedef typename QMap ::iterator iterator; typedef iterator Item; QMap *c; iterator i, n; inline bool item_exists() const { return n != c->constEnd(); } public: inline QMutableMapIterator(QMap &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableMapIterator() { c->setSharable(true); } inline QMutableMapIterator &operator=(QMap &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = c->end(); } inline bool hasNext() const { return i != c->constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c->constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { iterator p = i; return --p; } inline void remove() { if (n != c->constEnd()) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) { if (n != c->constEnd()) *n = t; } inline T &value() { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qmap.h",853);} while (0); return *n; } inline const T &value() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qmap.h",853);} while (0); return *n; } inline const Key &key() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qmap.h",853);} while (0); return n . key(); } inline bool findNext(const T &t) { while ((n = i) != c->constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c->constBegin()) if (*(n = --i) == t) return true; n = c->end(); return false; } }; #line 2 "../../include/QtCore/qmap.h" #line 29 "../../include/QtCore/../../src/corelib/io/qdebug.h" #line 1 "../../include/QtCore/qpair.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qpair.h" #line 1 "../../include/QtCore/qdatastream.h" #line 1 "../../include/QtCore/../../src/corelib/io/qdatastream.h" #line 1 "../../include/QtCore/qiodevice.h" #line 1 "../../include/QtCore/../../src/corelib/io/qiodevice.h" #line 1 "../../include/QtCore/qobject.h" #line 1 "../../include/QtCore/../../src/corelib/kernel/qobject.h" #line 1 "../../include/QtCore/qobjectdefs.h" #line 1 "../../include/QtCore/../../src/corelib/kernel/qobjectdefs.h" #line 1 "../../include/QtCore/qnamespace.h" #line 1 "../../include/QtCore/../../src/corelib/global/qnamespace.h" #line 1 "../../include/QtCore/qglobal.h" #line 26 "../../include/QtCore/../../src/corelib/global/qnamespace.h" typedef QtValidLicenseForCoreModule QtCoreModule; namespace Qt { #line 49 "../../include/QtCore/../../src/corelib/global/qnamespace.h" enum GlobalColor { color0, color1, black, white, darkGray, gray, lightGray, red, green, blue, cyan, magenta, yellow, darkRed, darkGreen, darkBlue, darkCyan, darkMagenta, darkYellow, transparent }; enum KeyboardModifier { NoModifier = 0x00000000, ShiftModifier = 0x02000000, ControlModifier = 0x04000000, AltModifier = 0x08000000, MetaModifier = 0x10000000, KeypadModifier = 0x20000000, KeyboardModifierMask = 0xfe000000 }; typedef QFlags KeyboardModifiers; enum Modifier { META = Qt::MetaModifier, SHIFT = Qt::ShiftModifier, CTRL = Qt::ControlModifier, ALT = Qt::AltModifier, MODIFIER_MASK = KeyboardModifierMask, UNICODE_ACCEL = 0x00000000 }; enum MouseButton { NoButton = 0x00000000, LeftButton = 0x00000001, RightButton = 0x00000002, MidButton = 0x00000004, XButton1 = 0x00000008, XButton2 = 0x00000010, MouseButtonMask = 0x000000ff }; typedef QFlags MouseButtons; enum ButtonState_enum { ShiftButton = Qt::ShiftModifier, ControlButton = Qt::ControlModifier, AltButton = Qt::AltModifier, MetaButton = Qt::MetaModifier, Keypad = Qt::KeypadModifier, KeyButtonMask = Qt::KeyboardModifierMask }; typedef int ButtonState; enum Orientation { Horizontal = 0x1, Vertical = 0x2 }; typedef QFlags Orientations; enum FocusPolicy { NoFocus = 0, TabFocus = 0x1, ClickFocus = 0x2, StrongFocus = TabFocus | ClickFocus | 0x8, WheelFocus = StrongFocus | 0x4 }; enum SortOrder { AscendingOrder, DescendingOrder ,Ascending = AscendingOrder, Descending = DescendingOrder }; enum AlignmentFlag { AlignLeft = 0x0001, AlignLeading = AlignLeft, AlignRight = 0x0002, AlignTrailing = AlignRight, AlignHCenter = 0x0004, AlignJustify = 0x0008, AlignAbsolute = 0x0010, AlignHorizontal_Mask = AlignLeft | AlignRight | AlignHCenter | AlignJustify | AlignAbsolute, AlignTop = 0x0020, AlignBottom = 0x0040, AlignVCenter = 0x0080, AlignVertical_Mask = AlignTop | AlignBottom | AlignVCenter, AlignCenter = AlignVCenter | AlignHCenter , AlignAuto = AlignLeft }; typedef QFlags Alignment; enum TextFlag { TextSingleLine = 0x0100, TextDontClip = 0x0200, TextExpandTabs = 0x0400, TextShowMnemonic = 0x0800, TextWordWrap = 0x1000, TextWrapAnywhere = 0x2000, TextDontPrint = 0x4000, TextIncludeTrailingSpaces = 0x08000000, TextHideMnemonic = 0x8000 ,SingleLine = TextSingleLine, DontClip = TextDontClip, ExpandTabs = TextExpandTabs, ShowPrefix = TextShowMnemonic, WordBreak = TextWordWrap, BreakAnywhere = TextWrapAnywhere, DontPrint = TextDontPrint, IncludeTrailingSpaces = TextIncludeTrailingSpaces, NoAccel = TextHideMnemonic }; typedef TextFlag TextFlags; enum TextElideMode { ElideLeft, ElideRight, ElideMiddle }; enum WindowType { Widget = 0x00000000, Window = 0x00000001, Dialog = 0x00000002 | Window, Sheet = 0x00000004 | Window, Drawer = 0x00000006 | Window, Popup = 0x00000008 | Window, Tool = 0x0000000a | Window, ToolTip = 0x0000000c | Window, SplashScreen = 0x0000000e | Window, Desktop = 0x00000010 | Window, SubWindow = 0x00000012, WindowType_Mask = 0x000000ff, MSWindowsFixedSizeDialogHint = 0x00000100, MSWindowsOwnDC = 0x00000200, X11BypassWindowManagerHint = 0x00000400, FramelessWindowHint = 0x00000800, WindowTitleHint = 0x00001000, WindowSystemMenuHint = 0x00002000, WindowMinimizeButtonHint = 0x00004000, WindowMaximizeButtonHint = 0x00008000, WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint, WindowContextHelpButtonHint = 0x00010000, WindowShadeButtonHint = 0x00020000, WindowStaysOnTopHint = 0x00040000 , WMouseNoMask = 0x00080000, WDestructiveClose = 0x00100000, WStaticContents = 0x00200000, WGroupLeader = 0x00400000, WShowModal = 0x00800000, WNoMousePropagation = 0x01000000, WType_TopLevel = Window, WType_Dialog = Dialog, WType_Popup = Popup, WType_Desktop = Desktop, WType_Mask = WindowType_Mask, WStyle_Customize = 0, WStyle_NormalBorder = 0, WStyle_DialogBorder = MSWindowsFixedSizeDialogHint, WStyle_NoBorder = FramelessWindowHint, WStyle_Title = WindowTitleHint, WStyle_SysMenu = WindowSystemMenuHint, WStyle_Minimize = WindowMinimizeButtonHint, WStyle_Maximize = WindowMaximizeButtonHint, WStyle_MinMax = WStyle_Minimize | WStyle_Maximize, WStyle_Tool = Tool, WStyle_StaysOnTop = WindowStaysOnTopHint, WStyle_ContextHelp = WindowContextHelpButtonHint, WPaintDesktop = 0, WPaintClever = 0, WX11BypassWM = X11BypassWindowManagerHint, WWinOwnDC = MSWindowsOwnDC, WMacSheet = Sheet, WMacDrawer = Drawer, WStyle_Splash = SplashScreen, WNoAutoErase = 0, WRepaintNoErase = 0, WNorthWestGravity = WStaticContents, WType_Modal = Dialog | WShowModal, WStyle_Dialog = Dialog, WStyle_NoBorderEx = FramelessWindowHint, WResizeNoErase = 0, WMacNoSheet = 0 }; typedef QFlags WindowFlags; enum WindowState { WindowNoState = 0x00000000, WindowMinimized = 0x00000001, WindowMaximized = 0x00000002, WindowFullScreen = 0x00000004, WindowActive = 0x00000008 }; typedef QFlags WindowStates; enum WidgetAttribute { WA_Disabled = 0, WA_UnderMouse = 1, WA_MouseTracking = 2, WA_ContentsPropagated = 3, WA_OpaquePaintEvent = 4, WA_NoBackground = WA_OpaquePaintEvent, WA_StaticContents = 5, WA_LaidOut = 7, WA_PaintOnScreen = 8, WA_NoSystemBackground = 9, WA_UpdatesDisabled = 10, WA_Mapped = 11, WA_MacNoClickThrough = 12, WA_PaintOutsidePaintEvent = 13, WA_InputMethodEnabled = 14, WA_WState_Visible = 15, WA_WState_Hidden = 16, WA_ForceDisabled = 32, WA_KeyCompression = 33, WA_PendingMoveEvent = 34, WA_PendingResizeEvent = 35, WA_SetPalette = 36, WA_SetFont = 37, WA_SetCursor = 38, WA_NoChildEventsFromChildren = 39, WA_WindowModified = 41, WA_Resized = 42, WA_Moved = 43, WA_PendingUpdate = 44, WA_InvalidSize = 45, WA_MacMetalStyle = 46, WA_CustomWhatsThis = 47, WA_LayoutOnEntireRect = 48, WA_OutsideWSRange = 49, WA_GrabbedShortcut = 50, WA_TransparentForMouseEvents = 51, WA_PaintUnclipped = 52, WA_SetWindowIcon = 53, WA_NoMouseReplay = 54, WA_DeleteOnClose = 55, WA_RightToLeft = 56, WA_SetLayoutDirection = 57, WA_NoChildEventsForParent = 58, WA_ForceUpdatesDisabled = 59, WA_WState_Created = 60, WA_WState_CompressKeys = 61, WA_WState_InPaintEvent = 62, WA_WState_Reparented = 63, WA_WState_ConfigPending = 64, WA_WState_Polished = 66, WA_WState_DND = 67, WA_WState_OwnSizePolicy = 68, WA_WState_ExplicitShowHide = 69, WA_ShowModal = 70, WA_MouseNoMask = 71, WA_GroupLeader = 72, WA_NoMousePropagation = 73, WA_Hover = 74, WA_InputMethodTransparent = 75, WA_QuitOnClose = 76, WA_KeyboardFocusChange = 77, WA_AcceptDrops = 78, WA_DropSiteRegistered = 79, WA_ForceAcceptDrops = WA_DropSiteRegistered, WA_WindowPropagation = 80, WA_NoX11EventCompression = 81, WA_TintedBackground = 82, WA_X11OpenGLOverlay = 83, WA_AttributeCount }; enum ImageConversionFlag { ColorMode_Mask = 0x00000003, AutoColor = 0x00000000, ColorOnly = 0x00000003, MonoOnly = 0x00000002, AlphaDither_Mask = 0x0000000c, ThresholdAlphaDither = 0x00000000, OrderedAlphaDither = 0x00000004, DiffuseAlphaDither = 0x00000008, NoAlpha = 0x0000000c, Dither_Mask = 0x00000030, DiffuseDither = 0x00000000, OrderedDither = 0x00000010, ThresholdDither = 0x00000020, DitherMode_Mask = 0x000000c0, AutoDither = 0x00000000, PreferDither = 0x00000040, AvoidDither = 0x00000080 }; typedef QFlags ImageConversionFlags; enum BGMode { TransparentMode, OpaqueMode }; enum PaintUnit { PixelUnit, LoMetricUnit, HiMetricUnit, LoEnglishUnit, HiEnglishUnit, TwipsUnit }; enum GUIStyle { MacStyle, WindowsStyle, Win3Style, PMStyle, MotifStyle }; enum Key { Key_Escape = 0x01000000, Key_Tab = 0x01000001, Key_Backtab = 0x01000002, Key_BackTab = Key_Backtab, Key_Backspace = 0x01000003, Key_BackSpace = Key_Backspace, Key_Return = 0x01000004, Key_Enter = 0x01000005, Key_Insert = 0x01000006, Key_Delete = 0x01000007, Key_Pause = 0x01000008, Key_Print = 0x01000009, Key_SysReq = 0x0100000a, Key_Clear = 0x0100000b, Key_Home = 0x01000010, Key_End = 0x01000011, Key_Left = 0x01000012, Key_Up = 0x01000013, Key_Right = 0x01000014, Key_Down = 0x01000015, Key_PageUp = 0x01000016, Key_Prior = Key_PageUp, Key_PageDown = 0x01000017, Key_Next = Key_PageDown, Key_Shift = 0x01000020, Key_Control = 0x01000021, Key_Meta = 0x01000022, Key_Alt = 0x01000023, Key_CapsLock = 0x01000024, Key_NumLock = 0x01000025, Key_ScrollLock = 0x01000026, Key_F1 = 0x01000030, Key_F2 = 0x01000031, Key_F3 = 0x01000032, Key_F4 = 0x01000033, Key_F5 = 0x01000034, Key_F6 = 0x01000035, Key_F7 = 0x01000036, Key_F8 = 0x01000037, Key_F9 = 0x01000038, Key_F10 = 0x01000039, Key_F11 = 0x0100003a, Key_F12 = 0x0100003b, Key_F13 = 0x0100003c, Key_F14 = 0x0100003d, Key_F15 = 0x0100003e, Key_F16 = 0x0100003f, Key_F17 = 0x01000040, Key_F18 = 0x01000041, Key_F19 = 0x01000042, Key_F20 = 0x01000043, Key_F21 = 0x01000044, Key_F22 = 0x01000045, Key_F23 = 0x01000046, Key_F24 = 0x01000047, Key_F25 = 0x01000048, Key_F26 = 0x01000049, Key_F27 = 0x0100004a, Key_F28 = 0x0100004b, Key_F29 = 0x0100004c, Key_F30 = 0x0100004d, Key_F31 = 0x0100004e, Key_F32 = 0x0100004f, Key_F33 = 0x01000050, Key_F34 = 0x01000051, Key_F35 = 0x01000052, Key_Super_L = 0x01000053, Key_Super_R = 0x01000054, Key_Menu = 0x01000055, Key_Hyper_L = 0x01000056, Key_Hyper_R = 0x01000057, Key_Help = 0x01000058, Key_Direction_L = 0x01000059, Key_Direction_R = 0x01000060, Key_Space = 0x20, Key_Any = Key_Space, Key_Exclam = 0x21, Key_QuoteDbl = 0x22, Key_NumberSign = 0x23, Key_Dollar = 0x24, Key_Percent = 0x25, Key_Ampersand = 0x26, Key_Apostrophe = 0x27, Key_ParenLeft = 0x28, Key_ParenRight = 0x29, Key_Asterisk = 0x2a, Key_Plus = 0x2b, Key_Comma = 0x2c, Key_Minus = 0x2d, Key_Period = 0x2e, Key_Slash = 0x2f, Key_0 = 0x30, Key_1 = 0x31, Key_2 = 0x32, Key_3 = 0x33, Key_4 = 0x34, Key_5 = 0x35, Key_6 = 0x36, Key_7 = 0x37, Key_8 = 0x38, Key_9 = 0x39, Key_Colon = 0x3a, Key_Semicolon = 0x3b, Key_Less = 0x3c, Key_Equal = 0x3d, Key_Greater = 0x3e, Key_Question = 0x3f, Key_At = 0x40, Key_A = 0x41, Key_B = 0x42, Key_C = 0x43, Key_D = 0x44, Key_E = 0x45, Key_F = 0x46, Key_G = 0x47, Key_H = 0x48, Key_I = 0x49, Key_J = 0x4a, Key_K = 0x4b, Key_L = 0x4c, Key_M = 0x4d, Key_N = 0x4e, Key_O = 0x4f, Key_P = 0x50, Key_Q = 0x51, Key_R = 0x52, Key_S = 0x53, Key_T = 0x54, Key_U = 0x55, Key_V = 0x56, Key_W = 0x57, Key_X = 0x58, Key_Y = 0x59, Key_Z = 0x5a, Key_BracketLeft = 0x5b, Key_Backslash = 0x5c, Key_BracketRight = 0x5d, Key_AsciiCircum = 0x5e, Key_Underscore = 0x5f, Key_QuoteLeft = 0x60, Key_BraceLeft = 0x7b, Key_Bar = 0x7c, Key_BraceRight = 0x7d, Key_AsciiTilde = 0x7e, Key_nobreakspace = 0x0a0, Key_exclamdown = 0x0a1, Key_cent = 0x0a2, Key_sterling = 0x0a3, Key_currency = 0x0a4, Key_yen = 0x0a5, Key_brokenbar = 0x0a6, Key_section = 0x0a7, Key_diaeresis = 0x0a8, Key_copyright = 0x0a9, Key_ordfeminine = 0x0aa, Key_guillemotleft = 0x0ab, Key_notsign = 0x0ac, Key_hyphen = 0x0ad, Key_registered = 0x0ae, Key_macron = 0x0af, Key_degree = 0x0b0, Key_plusminus = 0x0b1, Key_twosuperior = 0x0b2, Key_threesuperior = 0x0b3, Key_acute = 0x0b4, Key_mu = 0x0b5, Key_paragraph = 0x0b6, Key_periodcentered = 0x0b7, Key_cedilla = 0x0b8, Key_onesuperior = 0x0b9, Key_masculine = 0x0ba, Key_guillemotright = 0x0bb, Key_onequarter = 0x0bc, Key_onehalf = 0x0bd, Key_threequarters = 0x0be, Key_questiondown = 0x0bf, Key_Agrave = 0x0c0, Key_Aacute = 0x0c1, Key_Acircumflex = 0x0c2, Key_Atilde = 0x0c3, Key_Adiaeresis = 0x0c4, Key_Aring = 0x0c5, Key_AE = 0x0c6, Key_Ccedilla = 0x0c7, Key_Egrave = 0x0c8, Key_Eacute = 0x0c9, Key_Ecircumflex = 0x0ca, Key_Ediaeresis = 0x0cb, Key_Igrave = 0x0cc, Key_Iacute = 0x0cd, Key_Icircumflex = 0x0ce, Key_Idiaeresis = 0x0cf, Key_ETH = 0x0d0, Key_Ntilde = 0x0d1, Key_Ograve = 0x0d2, Key_Oacute = 0x0d3, Key_Ocircumflex = 0x0d4, Key_Otilde = 0x0d5, Key_Odiaeresis = 0x0d6, Key_multiply = 0x0d7, Key_Ooblique = 0x0d8, Key_Ugrave = 0x0d9, Key_Uacute = 0x0da, Key_Ucircumflex = 0x0db, Key_Udiaeresis = 0x0dc, Key_Yacute = 0x0dd, Key_THORN = 0x0de, Key_ssharp = 0x0df, Key_agrave = Key_Agrave, Key_aacute = Key_Aacute, Key_acircumflex = Key_Acircumflex, Key_atilde = Key_Atilde, Key_adiaeresis = Key_Adiaeresis, Key_aring = Key_Aring, Key_ae = Key_AE, Key_ccedilla = Key_Ccedilla, Key_egrave = Key_Egrave, Key_eacute = Key_Eacute, Key_ecircumflex = Key_Ecircumflex, Key_ediaeresis = Key_Ediaeresis, Key_igrave = Key_Igrave, Key_iacute = Key_Iacute, Key_icircumflex = Key_Icircumflex, Key_idiaeresis = Key_Idiaeresis, Key_eth = Key_ETH, Key_ntilde = Key_Ntilde, Key_ograve = Key_Ograve, Key_oacute = Key_Oacute, Key_ocircumflex = Key_Ocircumflex, Key_otilde = Key_Otilde, Key_odiaeresis = Key_Odiaeresis, Key_division = 0x0f7, Key_oslash = Key_Ooblique, Key_ugrave = Key_Ugrave, Key_uacute = Key_Uacute, Key_ucircumflex = Key_Ucircumflex, Key_udiaeresis = Key_Udiaeresis, Key_yacute = Key_Yacute, Key_thorn = Key_THORN, Key_ydiaeresis = 0x0ff, Key_AltGr = 0x01001103, Key_Multi_key = 0x01001120, Key_Codeinput = 0x01001137, Key_SingleCandidate = 0x0100113c, Key_MultipleCandidate = 0x0100113d, Key_PreviousCandidate = 0x0100113e, Key_Mode_switch = 0x0100117e, Key_Kanji = 0x01001121, Key_Muhenkan = 0x01001122, Key_Henkan = 0x01001123, Key_Romaji = 0x01001124, Key_Hiragana = 0x01001125, Key_Katakana = 0x01001126, Key_Hiragana_Katakana = 0x01001127, Key_Zenkaku = 0x01001128, Key_Hankaku = 0x01001129, Key_Zenkaku_Hankaku = 0x0100112a, Key_Touroku = 0x0100112b, Key_Massyo = 0x0100112c, Key_Kana_Lock = 0x0100112d, Key_Kana_Shift = 0x0100112e, Key_Eisu_Shift = 0x0100112f, Key_Eisu_toggle = 0x01001130, Key_Hangul = 0x01001131, Key_Hangul_Start = 0x01001132, Key_Hangul_End = 0x01001133, Key_Hangul_Hanja = 0x01001134, Key_Hangul_Jamo = 0x01001135, Key_Hangul_Romaja = 0x01001136, Key_Hangul_Jeonja = 0x01001138, Key_Hangul_Banja = 0x01001139, Key_Hangul_PreHanja = 0x0100113a, Key_Hangul_PostHanja = 0x0100113b, Key_Hangul_Special = 0x0100113f, Key_Dead_Grave = 0x01001250, Key_Dead_Acute = 0x01001251, Key_Dead_Circumflex = 0x01001252, Key_Dead_Tilde = 0x01001253, Key_Dead_Macron = 0x01001254, Key_Dead_Breve = 0x01001255, Key_Dead_Abovedot = 0x01001256, Key_Dead_Diaeresis = 0x01001257, Key_Dead_Abovering = 0x01001258, Key_Dead_Doubleacute = 0x01001259, Key_Dead_Caron = 0x0100125a, Key_Dead_Cedilla = 0x0100125b, Key_Dead_Ogonek = 0x0100125c, Key_Dead_Iota = 0x0100125d, Key_Dead_Voiced_Sound = 0x0100125e, Key_Dead_Semivoiced_Sound = 0x0100125f, Key_Dead_Belowdot = 0x01001260, Key_Dead_Hook = 0x01001261, Key_Dead_Horn = 0x01001262, Key_Back = 0x01000061, Key_Forward = 0x01000062, Key_Stop = 0x01000063, Key_Refresh = 0x01000064, Key_VolumeDown = 0x01000070, Key_VolumeMute = 0x01000071, Key_VolumeUp = 0x01000072, Key_BassBoost = 0x01000073, Key_BassUp = 0x01000074, Key_BassDown = 0x01000075, Key_TrebleUp = 0x01000076, Key_TrebleDown = 0x01000077, Key_MediaPlay = 0x01000080, Key_MediaStop = 0x01000081, Key_MediaPrevious = 0x01000082, Key_MediaPrev = Key_MediaPrevious, Key_MediaNext = 0x01000083, Key_MediaRecord = 0x01000084, Key_HomePage = 0x01000090, Key_Favorites = 0x01000091, Key_Search = 0x01000092, Key_Standby = 0x01000093, Key_OpenUrl = 0x01000094, Key_LaunchMail = 0x010000a0, Key_LaunchMedia = 0x010000a1, Key_Launch0 = 0x010000a2, Key_Launch1 = 0x010000a3, Key_Launch2 = 0x010000a4, Key_Launch3 = 0x010000a5, Key_Launch4 = 0x010000a6, Key_Launch5 = 0x010000a7, Key_Launch6 = 0x010000a8, Key_Launch7 = 0x010000a9, Key_Launch8 = 0x010000aa, Key_Launch9 = 0x010000ab, Key_LaunchA = 0x010000ac, Key_LaunchB = 0x010000ad, Key_LaunchC = 0x010000ae, Key_LaunchD = 0x010000af, Key_LaunchE = 0x010000b0, Key_LaunchF = 0x010000b1, Key_MediaLast = 0x0100ffff, Key_Select = 0x01010000, Key_Yes = 0x01010001, Key_No = 0x01010002, Key_Context1 = 0x01100000, Key_Context2 = 0x01100001, Key_Context3 = 0x01100002, Key_Context4 = 0x01100003, Key_Call = 0x01100004, Key_Hangup = 0x01100005, Key_Flip = 0x01100006, Key_unknown = 0x01ffffff }; enum ArrowType { NoArrow, UpArrow, DownArrow, LeftArrow, RightArrow }; enum PenStyle { NoPen, SolidLine, DashLine, DotLine, DashDotLine, DashDotDotLine, CustomDashLine, MPenStyle = 0x0f }; enum PenCapStyle { FlatCap = 0x00, SquareCap = 0x10, RoundCap = 0x20, MPenCapStyle = 0x30 }; enum PenJoinStyle { MiterJoin = 0x00, BevelJoin = 0x40, RoundJoin = 0x80, MPenJoinStyle = 0xc0 }; enum BrushStyle { NoBrush, SolidPattern, Dense1Pattern, Dense2Pattern, Dense3Pattern, Dense4Pattern, Dense5Pattern, Dense6Pattern, Dense7Pattern, HorPattern, VerPattern, CrossPattern, BDiagPattern, FDiagPattern, DiagCrossPattern, LinearGradientPattern, RadialGradientPattern, ConicalGradientPattern, TexturePattern = 24 , CustomPattern = TexturePattern }; #line 917 "../../include/QtCore/../../src/corelib/global/qnamespace.h" #line 945 "../../include/QtCore/../../src/corelib/global/qnamespace.h" enum UIEffect { UI_General, UI_AnimateMenu, UI_FadeMenu, UI_AnimateCombo, UI_AnimateTooltip, UI_FadeTooltip, UI_AnimateToolBox }; enum CursorShape { ArrowCursor, UpArrowCursor, CrossCursor, WaitCursor, IBeamCursor, SizeVerCursor, SizeHorCursor, SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor, PointingHandCursor, ForbiddenCursor, WhatsThisCursor, BusyCursor, LastCursor = BusyCursor, BitmapCursor = 24, CustomCursor = 25 , arrowCursor = ArrowCursor, upArrowCursor = UpArrowCursor, crossCursor = CrossCursor, waitCursor = WaitCursor, ibeamCursor = IBeamCursor, sizeVerCursor = SizeVerCursor, sizeHorCursor = SizeHorCursor, sizeBDiagCursor = SizeBDiagCursor, sizeFDiagCursor = SizeFDiagCursor, sizeAllCursor = SizeAllCursor, blankCursor = BlankCursor, splitVCursor = SplitVCursor, splitHCursor = SplitHCursor, pointingHandCursor = PointingHandCursor, forbiddenCursor = ForbiddenCursor, whatsThisCursor = WhatsThisCursor }; enum TextFormat { PlainText, RichText, AutoText, LogText }; enum AspectRatioMode { IgnoreAspectRatio, KeepAspectRatio, KeepAspectRatioByExpanding , ScaleFree = IgnoreAspectRatio, ScaleMin = KeepAspectRatio, ScaleMax = KeepAspectRatioByExpanding }; typedef AspectRatioMode ScaleMode; enum AnchorAttribute { AnchorName, AnchorHref }; enum DockWidgetArea { LeftDockWidgetArea = 0x1, RightDockWidgetArea = 0x2, TopDockWidgetArea = 0x4, BottomDockWidgetArea = 0x8, DockWidgetArea_Mask = 0xf, AllDockWidgetAreas = DockWidgetArea_Mask }; enum { NDockWidgetAreas = 4 }; typedef QFlags DockWidgetAreas; enum ToolBarArea { LeftToolBarArea = 0x1, RightToolBarArea = 0x2, TopToolBarArea = 0x4, BottomToolBarArea = 0x8, ToolBarArea_Mask = 0xf, AllToolBarAreas = ToolBarArea_Mask }; enum { NToolBarAreas = 4 }; typedef QFlags ToolBarAreas; enum Dock { DockUnmanaged, DockTornOff, DockTop, DockBottom, DockRight, DockLeft, DockMinimized , Unmanaged = DockUnmanaged, TornOff = DockTornOff, Top = DockTop, Bottom = DockBottom, Right = DockRight, Left = DockLeft, Minimized = DockMinimized }; typedef Dock ToolBarDock; enum DateFormat { TextDate, ISODate, LocalDate }; enum TimeSpec { LocalTime, UTC }; enum DayOfWeek { Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, Sunday = 7 }; enum ScrollBarPolicy { ScrollBarAsNeeded, ScrollBarAlwaysOff, ScrollBarAlwaysOn }; enum BackgroundMode { FixedColor, FixedPixmap, NoBackground, PaletteForeground, PaletteButton, PaletteLight, PaletteMidlight, PaletteDark, PaletteMid, PaletteText, PaletteBrightText, PaletteBase, PaletteBackground, PaletteShadow, PaletteHighlight, PaletteHighlightedText, PaletteButtonText, PaletteLink, PaletteLinkVisited, X11ParentRelative }; enum CaseSensitivity { CaseInsensitive, CaseSensitive }; enum Corner { TopLeftCorner = 0x00000, TopRightCorner = 0x00001, BottomLeftCorner = 0x00002, BottomRightCorner = 0x00003 ,TopLeft = TopLeftCorner, TopRight = TopRightCorner, BottomLeft = BottomLeftCorner, BottomRight = BottomRightCorner }; enum ConnectionType { AutoConnection, DirectConnection, QueuedConnection, AutoCompatConnection }; enum ShortcutContext { WidgetShortcut, WindowShortcut, ApplicationShortcut }; enum FillRule { OddEvenFill, WindingFill }; enum ClipOperation { NoClip, ReplaceClip, IntersectClip, UniteClip }; enum TransformationMode { FastTransformation, SmoothTransformation }; enum FocusReason { MouseFocusReason, TabFocusReason, BacktabFocusReason, ActiveWindowFocusReason, PopupFocusReason, ShortcutFocusReason, MenuBarFocusReason, OtherFocusReason, NoFocusReason }; enum ContextMenuPolicy { NoContextMenu, DefaultContextMenu, ActionsContextMenu, CustomContextMenu }; enum InputMethodQuery { ImMicroFocus, ImFont, ImCursorPosition, ImSurroundingText, ImCurrentSelection }; enum ToolButtonStyle { ToolButtonIconOnly, ToolButtonTextOnly, ToolButtonTextBesideIcon, ToolButtonTextUnderIcon }; enum LayoutDirection { LeftToRight, RightToLeft }; enum DropAction { CopyAction = 0x1, MoveAction = 0x2, LinkAction = 0x4, ActionMask = 0xff, TargetMoveAction = 0x8002, IgnoreAction = 0x0 }; typedef QFlags DropActions; enum CheckState { Unchecked, PartiallyChecked, Checked }; enum ItemDataRole { DisplayRole = 0, DecorationRole = 1, EditRole = 2, ToolTipRole = 3, StatusTipRole = 4, WhatsThisRole = 5, FontRole = 6, TextAlignmentRole = 7, BackgroundColorRole = 8, TextColorRole = 9, CheckStateRole = 10, AccessibleTextRole = 11, AccessibleDescriptionRole = 12, SizeHintRole = 13, UserRole = 32 }; enum ItemFlag { ItemIsSelectable = 1, ItemIsEditable = 2, ItemIsDragEnabled = 4, ItemIsDropEnabled = 8, ItemIsUserCheckable = 16, ItemIsEnabled = 32, ItemIsTristate = 64 }; typedef QFlags ItemFlags; enum MatchFlag { MatchExactly = 0, MatchContains = 1, MatchStartsWith = 2, MatchEndsWith = 3, MatchRegExp = 4, MatchWildcard = 5, MatchCaseSensitive = 16, MatchWrap = 32, MatchRecursive = 64 }; typedef QFlags MatchFlags; typedef unsigned long HANDLE; typedef WindowFlags WFlags; enum WindowModality { NonModal, WindowModal, ApplicationModal }; } inline QFlags operator|(Qt::MouseButtons::enum_type f1, Qt::MouseButtons::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::MouseButtons::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::Orientations::enum_type f1, Qt::Orientations::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::Orientations::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::KeyboardModifiers::enum_type f1, Qt::KeyboardModifiers::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::KeyboardModifiers::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::WindowFlags::enum_type f1, Qt::WindowFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::WindowFlags::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::Alignment::enum_type f1, Qt::Alignment::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::Alignment::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::ImageConversionFlags::enum_type f1, Qt::ImageConversionFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::ImageConversionFlags::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::DockWidgetAreas::enum_type f1, Qt::DockWidgetAreas::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::DockWidgetAreas::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::ToolBarAreas::enum_type f1, Qt::ToolBarAreas::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::ToolBarAreas::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::WindowStates::enum_type f1, Qt::WindowStates::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::WindowStates::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::DropActions::enum_type f1, Qt::DropActions::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::DropActions::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::ItemFlags::enum_type f1, Qt::ItemFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::ItemFlags::enum_type f1, QFlags f2) { return f2 | f1; } inline QFlags operator|(Qt::MatchFlags::enum_type f1, Qt::MatchFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(Qt::MatchFlags::enum_type f1, QFlags f2) { return f2 | f1; } class QInternal { public: enum PaintDeviceFlags { UnknownDevice = 0x00, Widget = 0x01, Pixmap = 0x02, Image = 0x03, Printer = 0x04, Picture = 0x05, Pbuffer = 0x06 }; enum RelayoutType { RelayoutNormal, RelayoutDragging, RelayoutDropped }; }; typedef qint32 QCOORD; enum { QCOORD_MAX = 2147483647, QCOORD_MIN = -QCOORD_MAX - 1 }; #line 2 "../../include/QtCore/qnamespace.h" #line 26 "../../include/QtCore/../../src/corelib/kernel/qobjectdefs.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QString; class QByteArray; #line 66 "../../include/QtCore/../../src/corelib/kernel/qobjectdefs.h" #line 85 "../../include/QtCore/../../src/corelib/kernel/qobjectdefs.h" #line 95 "../../include/QtCore/../../src/corelib/kernel/qobjectdefs.h" #line 124 "../../include/QtCore/../../src/corelib/kernel/qobjectdefs.h" #line 135 "../../include/QtCore/../../src/corelib/kernel/qobjectdefs.h" class QObject; class QMetaMethod; class QMetaEnum; class QMetaProperty; class QMetaClassInfo; class QGenericArgument { public: inline QGenericArgument(const char *aName = 0, const void *aData = 0) : _data(aData), _name(aName) {} inline void *data() const { return const_cast(_data); } inline const char *name() const { return _name; } private: const void *_data; const char *_name; }; class QGenericReturnArgument: public QGenericArgument { public: inline QGenericReturnArgument(const char *aName = 0, void *aData = 0) : QGenericArgument(aName, aData) {} }; template class QArgument: public QGenericArgument { public: inline QArgument(const char *aName, const T &aData) : QGenericArgument(aName, static_cast(&aData)) {} }; template class QReturnArgument: public QGenericReturnArgument { public: inline QReturnArgument(const char *aName, T &aData) : QGenericReturnArgument(aName, static_cast(&aData)) {} }; struct QMetaObject { const char *className() const; const QMetaObject *superClass() const; QObject *cast(QObject *obj) const; QString tr(const char *s, const char *c) const; QString trUtf8(const char *s, const char *c) const; int methodOffset() const; int enumeratorOffset() const; int propertyOffset() const; int classInfoOffset() const; int methodCount() const; int enumeratorCount() const; int propertyCount() const; int classInfoCount() const; int indexOfMethod(const char *method) const; int indexOfSignal(const char *signal) const; int indexOfSlot(const char *slot) const; int indexOfEnumerator(const char *name) const; int indexOfProperty(const char *name) const; int indexOfClassInfo(const char *name) const; QMetaMethod method(int index) const; QMetaEnum enumerator(int index) const; QMetaProperty property(int index) const; QMetaClassInfo classInfo(int index) const; static bool checkConnectArgs(const char *signal, const char *method); static QByteArray normalizedSignature(const char *method); static bool connect(const QObject *sender, int signal_index, const QObject *receiver, int method_index, int type = 0, int *types = 0); static bool disconnect(const QObject *sender, int signal_index, const QObject *receiver, int method_index); static void connectSlotsByName(QObject *o); static void activate(QObject *sender, int signal_index, void **argv); static void activate(QObject *sender, int from_signal_index, int to_signal_index, void **argv); static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv); static void activate(QObject *sender, const QMetaObject *, int from_local_signal_index, int to_local_signal_index, void **argv); static void addGuard(QObject **ptr); static void removeGuard(QObject **ptr); static void changeGuard(QObject **ptr, QObject *o); static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument(0), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument()); static inline bool invokeMethod(QObject *obj, const char *member, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument(0), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument()) { return invokeMethod(obj, member, Qt::AutoConnection, ret, val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); } static inline bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericArgument val0 = QGenericArgument(0), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument()) { return invokeMethod(obj, member, type, QGenericReturnArgument(), val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); } static inline bool invokeMethod(QObject *obj, const char *member, QGenericArgument val0 = QGenericArgument(0), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument()) { return invokeMethod(obj, member, Qt::AutoConnection, QGenericReturnArgument(), val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); } enum Call { InvokeMetaMethod, ReadProperty, WriteProperty, ResetProperty, QueryPropertyDesignable, QueryPropertyScriptable, QueryPropertyStored, QueryPropertyEditable, QueryPropertyUser }; const char *superClassName() const; struct { const QMetaObject *superdata; const char *stringdata; const uint *data; const QMetaObject **extradata; } d; }; inline const char *QMetaObject::className() const { return d.stringdata; } inline const QMetaObject *QMetaObject::superClass() const { return d.superdata; } inline const char *QMetaObject::superClassName() const { return d.superdata ? d.superdata->className() : 0; } #line 2 "../../include/QtCore/qobjectdefs.h" #line 28 "../../include/QtCore/../../src/corelib/kernel/qobject.h" #line 1 "../../include/QtCore/qstring.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qstring.h" #line 1 "../../include/QtCore/qchar.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qstring.h" #line 1 "../../include/QtCore/qbytearray.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qbytearray.h" #line 1 "../../include/QtCore/qglobal.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qbytearray.h" #line 1 "../../include/QtCore/qatomic.h" #line 27 "../../include/QtCore/../../src/corelib/tools/qbytearray.h" #line 1 "/usr/include/stdarg.h" #ident "@(#)unixsrc:usr/src/i386/head/stdarg.h /main/3" extern "C" { #line 35 "/usr/include/stdarg.h" typedef void * va_list; extern void va_end(va_list); #line 50 "/usr/include/stdarg.h" #line 58 "/usr/include/stdarg.h" #line 112 "/usr/include/stdarg.h" } #line 30 "../../include/QtCore/../../src/corelib/tools/qbytearray.h" typedef QtValidLicenseForCoreModule QtCoreModule; char *qstrdup(const char *); inline uint qstrlen(const char *str) { return str ? uint(strlen(str)) : 0; } char *qstrcpy(char *dst, const char *src); char *qstrncpy(char *dst, const char *src, uint len); int qstrcmp(const char *str1, const char *str2); inline int qstrncmp(const char *str1, const char *str2, uint len) { return (str1 && str2) ? strncmp(str1, str2, len) : (str1 ? 1 : (str2 ? -1 : 0)); } int qstricmp(const char *, const char *); int qstrnicmp(const char *, const char *, uint len); int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap); int qsnprintf(char *str, size_t n, const char *fmt, ...); inline void *qmemmove(void *dst, const void *src, uint len) { return memmove(dst, src, len); } inline uint cstrlen(const char *str) { return uint(strlen(str)); } inline char *cstrcpy(char *dst, const char *src) { return qstrcpy(dst,src); } inline int cstrcmp(const char *str1, const char *str2) { return strcmp(str1,str2); } inline int cstrncmp(const char *str1, const char *str2, uint len) { return strncmp(str1,str2,len); } quint16 qChecksum(const char *s, uint len); class QByteRef; class QString; class QDataStream; template class QList; class QByteArray { public: inline QByteArray(); QByteArray(const char *); QByteArray(const char *, int size); QByteArray(int size, char c); inline QByteArray(const QByteArray &); inline ~QByteArray(); QByteArray &operator=(const QByteArray &); QByteArray &operator=(const char *str); inline int size() const; bool isEmpty() const; void resize(int size); QByteArray &fill(char c, int size = -1); int capacity() const; void reserve(int size); void squeeze(); operator const char *() const; operator const void *() const; char *data(); const char *data() const; inline const char *constData() const; inline void detach(); bool isDetached() const; void clear(); const char at(int i) const; const char operator[](int i) const; QByteRef operator[](int i); const char operator[](uint i) const; QByteRef operator[](uint i); int indexOf(char c, int from = 0) const; inline int indexOf(const char *c, int from = 0) const; int indexOf(const QByteArray &a, int from = 0) const; int lastIndexOf(char c, int from = -1) const; inline int lastIndexOf(const char *c, int from = -1) const; int lastIndexOf(const QByteArray &a, int from = -1) const; QBool contains(char c) const; QBool contains(const char *a) const; QBool contains(const QByteArray &a) const; int count(char c) const; int count(const char *a) const; int count(const QByteArray &a) const; QByteArray left(int len) const; QByteArray right(int len) const; QByteArray mid(int index, int len = -1) const; bool startsWith(const QByteArray &a) const; bool startsWith(char c) const; bool startsWith(const char *c) const; bool endsWith(const QByteArray &a) const; bool endsWith(char c) const; bool endsWith(const char *c) const; void truncate(int pos); void chop(int n); QByteArray toLower() const; QByteArray toUpper() const; QByteArray trimmed() const; QByteArray simplified() const; QByteArray leftJustified(int width, char fill = ' ', bool truncate = false) const; QByteArray rightJustified(int width, char fill = ' ', bool truncate = false) const; inline QByteArray leftJustify(uint width, char fill = ' ', bool truncate = false) const { return leftJustified(int(width), fill, truncate); } inline QByteArray rightJustify(uint width, char fill = ' ', bool truncate = false) const { return rightJustified(int(width), fill, truncate); } QByteArray &prepend(char c); QByteArray &prepend(const char *s); QByteArray &prepend(const QByteArray &a); QByteArray &append(char c); QByteArray &append(const char *s); QByteArray &append(const QByteArray &a); QByteArray &insert(int i, char c); QByteArray &insert(int i, const char *s); QByteArray &insert(int i, const QByteArray &a); QByteArray &remove(int index, int len); QByteArray &replace(int index, int len, const char *s); QByteArray &replace(int index, int len, const QByteArray &s); QByteArray &replace(char before, const char *after); QByteArray &replace(char before, const QByteArray &after); QByteArray &replace(const char *before, const char *after); QByteArray &replace(const QByteArray &before, const QByteArray &after); QByteArray &replace(const QByteArray &before, const char *after); QByteArray &replace(const char *before, const QByteArray &after); QByteArray &replace(char before, char after); QByteArray &operator+=(char c); QByteArray &operator+=(const char *s); QByteArray &operator+=(const QByteArray &a); QList split(char sep) const; #line 206 "../../include/QtCore/../../src/corelib/tools/qbytearray.h" inline bool operator==(const QString &s2) const; inline bool operator!=(const QString &s2) const; inline bool operator<(const QString &s2) const; inline bool operator>(const QString &s2) const; inline bool operator<=(const QString &s2) const; inline bool operator>=(const QString &s2) const; short toShort(bool *ok = 0, int base = 10) const; ushort toUShort(bool *ok = 0, int base = 10) const; int toInt(bool *ok = 0, int base = 10) const; uint toUInt(bool *ok = 0, int base = 10) const; long toLong(bool *ok = 0, int base = 10) const; ulong toULong(bool *ok = 0, int base = 10) const; qlonglong toLongLong(bool *ok = 0, int base = 10) const; qulonglong toULongLong(bool *ok = 0, int base = 10) const; float toFloat(bool *ok = 0) const; double toDouble(bool *ok = 0) const; QByteArray toBase64() const; QByteArray &setNum(short, int base = 10); QByteArray &setNum(ushort, int base = 10); QByteArray &setNum(int, int base = 10); QByteArray &setNum(uint, int base = 10); QByteArray &setNum(qlonglong, int base = 10); QByteArray &setNum(qulonglong, int base = 10); QByteArray &setNum(float, char f = 'g', int prec = 6); QByteArray &setNum(double, char f = 'g', int prec = 6); static QByteArray number(int, int base = 10); static QByteArray number(uint, int base = 10); static QByteArray number(qlonglong, int base = 10); static QByteArray number(qulonglong, int base = 10); static QByteArray number(double, char f = 'g', int prec = 6); static QByteArray fromRawData(const char *, int size); static QByteArray fromBase64(const QByteArray &base64); typedef char *iterator; typedef const char *const_iterator; typedef iterator Iterator; typedef const_iterator ConstIterator; iterator begin(); const_iterator begin() const; const_iterator constBegin() const; iterator end(); const_iterator end() const; const_iterator constEnd() const; typedef const char & const_reference; typedef char & reference; void push_back(char c); void push_back(const char *c); void push_back(const QByteArray &a); void push_front(char c); void push_front(const char *c); void push_front(const QByteArray &a); inline int count() const { return d->size; } int length() const { return d->size; } bool isNull() const; explicit QByteArray(int size); inline QByteArray& duplicate(const QByteArray& a) { *this = a; return *this; } inline QByteArray& duplicate(const char *a, uint n) { *this = QByteArray(a, n); return *this; } inline QByteArray& setRawData(const char *a, uint n) { *this = fromRawData(a, n); return *this; } inline void resetRawData(const char *, uint) { clear(); } inline QByteArray lower() const { return toLower(); } inline QByteArray upper() const { return toUpper(); } inline QByteArray stripWhiteSpace() const { return trimmed(); } inline QByteArray simplifyWhiteSpace() const { return simplified(); } inline int find(char c, int from = 0) const { return indexOf(c, from); } inline int find(const char *c, int from = 0) const { return indexOf(c, from); } inline int find(const QByteArray &ba, int from = 0) const { return indexOf(ba, from); } inline int findRev(char c, int from = -1) const { return lastIndexOf(c, from); } inline int findRev(const char *c, int from = -1) const { return lastIndexOf(c, from); } inline int findRev(const QByteArray &ba, int from = -1) const { return lastIndexOf(ba, from); } private: operator QNoImplicitBoolCast() const; struct Data { QBasicAtomic ref; int alloc, size; char *data; char array[1]; }; static Data shared_null; static Data shared_empty; Data *d; QByteArray(Data *dd, int , int ) : d(dd) {} void realloc(int alloc); void expand(int i); friend class QByteRef; friend class QString; }; inline QByteArray::QByteArray(): d(&shared_null) { d->ref.ref(); } inline QByteArray::~QByteArray() { if (!d->ref.deref()) qFree(d); } inline int QByteArray::size() const { return d->size; } inline const char QByteArray::at(int i) const { do {if(!(i >= 0 && i < size()))qt_assert("i >= 0 && i < size()","../../include/QtCore/../../src/corelib/tools/qbytearray.h",317);} while (0); return d->data[i]; } inline const char QByteArray::operator[](int i) const { do {if(!(i >= 0 && i < size()))qt_assert("i >= 0 && i < size()","../../include/QtCore/../../src/corelib/tools/qbytearray.h",319);} while (0); return d->data[i]; } inline const char QByteArray::operator[](uint i) const { do {if(!(i < uint(size())))qt_assert("i < uint(size())","../../include/QtCore/../../src/corelib/tools/qbytearray.h",321);} while (0); return d->data[i]; } inline bool QByteArray::isEmpty() const { return d->size == 0; } inline QByteArray::operator const char *() const { return d->data; } inline QByteArray::operator const void *() const { return d->data; } inline char *QByteArray::data() { detach(); return d->data; } inline const char *QByteArray::data() const { return d->data; } inline const char *QByteArray::constData() const { return d->data; } inline void QByteArray::detach() { if (d->ref != 1 || d->data != d->array) realloc(d->size); } inline bool QByteArray::isDetached() const { return d->ref == 1; } inline QByteArray::QByteArray(const QByteArray &a) : d(a.d) { d->ref.ref(); } inline QByteArray::QByteArray(int size) : d(&shared_null) { d->ref.ref(); if (size > 0) fill('\0', size); } inline int QByteArray::capacity() const { return d->alloc; } inline void QByteArray::reserve(int asize) { if (d->ref != 1 || asize > d->alloc) realloc(asize); } inline void QByteArray::squeeze() { if (d->size < d->alloc) realloc(d->size); } class QByteRef { QByteArray &a; int i; inline QByteRef(QByteArray &array, int idx) : a(array),i(idx) {} friend class QByteArray; public: inline operator const char() const { return i < a.d->size ? a.d->data[i] : 0; } inline QByteRef &operator=(char c) { if (a.d->ref != 1 || i >= a.d->size) a.expand(i); a.d->data[i] = c; return *this; } inline QByteRef &operator=(const QByteRef &c) { if (a.d->ref != 1 || i >= a.d->size) a.expand(i); a.d->data[i] = c.a.d->data[c.i]; return *this; } inline bool operator==(char c) const { return a.d->data[i] == c; } inline bool operator!=(char c) const { return a.d->data[i] != c; } inline bool operator>(char c) const { return a.d->data[i] > c; } inline bool operator>=(char c) const { return a.d->data[i] >= c; } inline bool operator<(char c) const { return a.d->data[i] < c; } inline bool operator<=(char c) const { return a.d->data[i] <= c; } }; inline QByteRef QByteArray::operator[](int i) { do {if(!(i >= 0))qt_assert("i >= 0","../../include/QtCore/../../src/corelib/tools/qbytearray.h",384);} while (0); return QByteRef(*this, i); } inline QByteRef QByteArray::operator[](uint i) { return QByteRef(*this, i); } inline QByteArray::iterator QByteArray::begin() { detach(); return d->data; } inline QByteArray::const_iterator QByteArray::begin() const { return d->data; } inline QByteArray::const_iterator QByteArray::constBegin() const { return d->data; } inline QByteArray::iterator QByteArray::end() { detach(); return d->data + d->size; } inline QByteArray::const_iterator QByteArray::end() const { return d->data + d->size; } inline QByteArray::const_iterator QByteArray::constEnd() const { return d->data + d->size; } inline QByteArray &QByteArray::operator+=(char c) { return append(c); } inline QByteArray &QByteArray::operator+=(const char *s) { return append(s); } inline QByteArray &QByteArray::operator+=(const QByteArray &a) { return append(a); } inline void QByteArray::push_back(char c) { append(c); } inline void QByteArray::push_back(const char *c) { append(c); } inline void QByteArray::push_back(const QByteArray &a) { append(a); } inline void QByteArray::push_front(char c) { prepend(c); } inline void QByteArray::push_front(const char *c) { prepend(c); } inline void QByteArray::push_front(const QByteArray &a) { prepend(a); } inline QBool QByteArray::contains(const QByteArray &a) const { return QBool(indexOf(a) != -1); } inline QBool QByteArray::contains(char c) const { return QBool(indexOf(c) != -1); } inline bool operator==(const QByteArray &a1, const QByteArray &a2) { return (a1.size() == a2.size()) && (memcmp(a1, a2, a1.size())==0); } inline bool operator==(const QByteArray &a1, const char *a2) { return a2 ? strcmp(a1,a2) == 0 : a1.isEmpty(); } inline bool operator==(const char *a1, const QByteArray &a2) { return a1 ? strcmp(a1,a2) == 0 : a2.isEmpty(); } inline bool operator!=(const QByteArray &a1, const QByteArray &a2) { return !(a1==a2); } inline bool operator!=(const QByteArray &a1, const char *a2) { return a2 ? strcmp(a1,a2) != 0 : !a1.isEmpty(); } inline bool operator!=(const char *a1, const QByteArray &a2) { return a1 ? strcmp(a1,a2) != 0 : !a2.isEmpty(); } inline bool operator<(const QByteArray &a1, const QByteArray &a2) { return strcmp(a1, a2) < 0; } inline bool operator<(const QByteArray &a1, const char *a2) { return qstrcmp(a1, a2) < 0; } inline bool operator<(const char *a1, const QByteArray &a2) { return qstrcmp(a1, a2) < 0; } inline bool operator<=(const QByteArray &a1, const QByteArray &a2) { return strcmp(a1, a2) <= 0; } inline bool operator<=(const QByteArray &a1, const char *a2) { return qstrcmp(a1, a2) <= 0; } inline bool operator<=(const char *a1, const QByteArray &a2) { return qstrcmp(a1, a2) <= 0; } inline bool operator>(const QByteArray &a1, const QByteArray &a2) { return strcmp(a1, a2) > 0; } inline bool operator>(const QByteArray &a1, const char *a2) { return qstrcmp(a1, a2) > 0; } inline bool operator>(const char *a1, const QByteArray &a2) { return qstrcmp(a1, a2) > 0; } inline bool operator>=(const QByteArray &a1, const QByteArray &a2) { return strcmp(a1, a2) >= 0; } inline bool operator>=(const QByteArray &a1, const char *a2) { return qstrcmp(a1, a2) >= 0; } inline bool operator>=(const char *a1, const QByteArray &a2) { return qstrcmp(a1, a2) >= 0; } inline const QByteArray operator+(const QByteArray &a1, const QByteArray &a2) { return QByteArray(a1) += a2; } inline const QByteArray operator+(const QByteArray &a1, const char *a2) { return QByteArray(a1) += a2; } inline const QByteArray operator+(const QByteArray &a1, char a2) { return QByteArray(a1) += a2; } inline const QByteArray operator+(const char *a1, const QByteArray &a2) { return QByteArray(a1) += a2; } inline const QByteArray operator+(char a1, const QByteArray &a2) { return QByteArray(&a1, 1) += a2; } inline int QByteArray::indexOf(const char *c, int i) const { return indexOf(fromRawData(c, qstrlen(c)), i); } inline int QByteArray::lastIndexOf(const char *c, int i) const { return lastIndexOf(fromRawData(c, qstrlen(c)), i); } inline QBool QByteArray::contains(const char *c) const { return contains(fromRawData(c, qstrlen(c))); } inline QByteArray &QByteArray::replace(int index, int len, const char *c) { return replace(index, len, fromRawData(c, qstrlen(c))); } inline QByteArray &QByteArray::replace(char before, const char *c) { return replace(before, fromRawData(c, qstrlen(c))); } inline QByteArray &QByteArray::replace(const QByteArray &before, const char *c) { return replace(before, fromRawData(c, qstrlen(c))); } inline QByteArray &QByteArray::replace(const char *c, const QByteArray &after) { return replace(fromRawData(c, qstrlen(c)), after); } inline QByteArray &QByteArray::replace(const char *before, const char *after) { return replace(fromRawData(before, qstrlen(before)), fromRawData(after, qstrlen(after))); } inline QByteArray &QByteArray::setNum(short n, int base) { return setNum(qlonglong(n), base); } inline QByteArray &QByteArray::setNum(ushort n, int base) { return setNum(qulonglong(n), base); } inline QByteArray &QByteArray::setNum(int n, int base) { return setNum(qlonglong(n), base); } inline QByteArray &QByteArray::setNum(uint n, int base) { return setNum(qulonglong(n), base); } inline QByteArray &QByteArray::setNum(float n, char f, int prec) { return setNum(double(n),f,prec); } QDataStream &operator<<(QDataStream &, const QByteArray &); QDataStream &operator>>(QDataStream &, QByteArray &); QByteArray qCompress(const uchar* data, int nbytes, int compressionLevel = -1); QByteArray qUncompress(const uchar* data, int nbytes); inline QByteArray qCompress(const QByteArray& data, int compressionLevel = -1) { return qCompress(reinterpret_cast(data.constData()), data.size(), compressionLevel); } inline QByteArray qUncompress(const QByteArray& data) { return qUncompress(reinterpret_cast(data.constData()), data.size()); } template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QByteArray)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QByteArray"; } }; template <> inline bool qIsDetached(QByteArray &t) { return t . isDetached(); } #line 2 "../../include/QtCore/qbytearray.h" #line 27 "../../include/QtCore/../../src/corelib/tools/qstring.h" #line 1 "../../include/QtCore/qatomic.h" #line 28 "../../include/QtCore/../../src/corelib/tools/qstring.h" #line 1 "../../include/QtCore/qnamespace.h" #line 29 "../../include/QtCore/../../src/corelib/tools/qstring.h" #line 1 "/usr/include/CC/string" #line 1 "/usr/include/CC/istream" #line 1 "/usr/include/CC/ostream" #line 1 "/usr/include/CC/ios" #line 1 "/usr/include/CC/xlocnum" #line 1 "/usr/include/CC/cerrno" #line 1 "/usr/include/errno.h" #ident "@(#)unixsrc:usr/src/common/head/errno.h /main/1" #line 1 "/usr/include/sys/errno.h" #ident "@(#)unixsrc:usr/src/common/uts/svc/errno.h /main/1" #ident "$Header: $" extern "C" { #line 70 "/usr/include/sys/errno.h" #line 79 "/usr/include/sys/errno.h" #line 95 "/usr/include/sys/errno.h" #line 105 "/usr/include/sys/errno.h" #line 119 "/usr/include/sys/errno.h" #line 138 "/usr/include/sys/errno.h" #line 148 "/usr/include/sys/errno.h" #line 158 "/usr/include/sys/errno.h" #line 174 "/usr/include/sys/errno.h" #line 183 "/usr/include/sys/errno.h" #line 207 "/usr/include/sys/errno.h" } #line 18 "/usr/include/errno.h" #line 34 "/usr/include/errno.h" extern int errno; #line 5 "/usr/include/CC/cerrno" #line 5 "/usr/include/CC/xlocnum" #line 1 "/usr/include/CC/streambuf" #line 1 "/usr/include/CC/xiosbase" #line 1 "/usr/include/CC/xlocale" #line 1 "/usr/include/CC/stdexcept" #ident "@(#)unixsrc:usr/src/common/lib/libC/stdexcept /main/1" #line 7 "/usr/include/CC/xlocale" #line 1 "/usr/include/CC/typeinfo" #ident "@(#)unixsrc:usr/src/common/lib/libC/typeinfo /main/1" #line 1 "/usr/include/CC/exception" #ident "@(#)unixsrc:usr/src/common/lib/libC/exception /main/1" #line 10 "/usr/include/CC/typeinfo" namespace std { typedef bool __bool; #pragma define_type_info class type_info { public: virtual ~type_info(); __bool operator==(const type_info&) const; __bool operator!=(const type_info&) const; __bool before(const type_info&) const; const char* name() const; private: type_info& operator=(const type_info&); protected: type_info(const type_info&); }; class bad_cast : public exception { public: bad_cast() throw(); bad_cast(const bad_cast&) throw(); bad_cast& operator=(const bad_cast&) throw(); virtual ~bad_cast() throw(); virtual const char* what() const throw(); }; class bad_typeid : public exception { public: bad_typeid() throw(); bad_typeid(const bad_typeid&) throw(); bad_typeid& operator=(const bad_typeid&) throw(); virtual ~bad_typeid() throw(); virtual const char* what() const throw(); }; } #line 8 "/usr/include/CC/xlocale" #line 1 "/usr/include/CC/xlocinfo" #line 1 "/usr/include/CC/xlocinfo.h" #line 1 "/usr/include/ctype.h" #ident "@(#)unixsrc:usr/src/common/head/ctype.h /main/1" #line 27 "/usr/include/ctype.h" extern "C" { extern unsigned char __ctype[]; extern int isalnum(int); extern int isalpha(int); extern int isblank(int); extern int iscntrl(int); extern int isdigit(int); extern int isgraph(int); extern int islower(int); extern int isprint(int); extern int ispunct(int); extern int isspace(int); extern int isupper(int); extern int isxdigit(int); extern int tolower(int); extern int toupper(int); extern int isascii(int); extern int toascii(int); extern int _tolower(int); extern int _toupper(int); inline int isalnum(int __1){ return (__ctype + 1)[__1] & (01 | 02 | 04); } inline int isalpha(int __1){ return (__ctype + 1)[__1] & (01 | 02); } inline int iscntrl(int __1){ return (__ctype + 1)[__1] & 040; } inline int isdigit(int __1){ return (__ctype + 1)[__1] & 04; } inline int isgraph(int __1){ return (__ctype + 1)[__1] & (020 | 01 | 02 | 04); } inline int islower(int __1){ return (__ctype + 1)[__1] & 02; } inline int isprint(int __1){ return (__ctype + 1)[__1] & (020|01|02|04|0100); } inline int ispunct(int __1){ return (__ctype + 1)[__1] & 020; } inline int isspace(int __1){ return (__ctype + 1)[__1] & 010; } inline int isupper(int __1){ return (__ctype + 1)[__1] & 01; } inline int isxdigit(int __1){ return (__ctype + 1)[__1] & 0200; } inline int isascii(int __1){ return !(__1 & ~0177); } inline int toascii(int __1){ return __1 & 0177; } inline int _tolower(int __1){ return (__ctype + 258)[__1]; } inline int _toupper(int __1){ return (__ctype + 258)[__1]; } } #line 1 "/usr/include/CC/cctype" #line 1 "/usr/include/ctype.h" #line 5 "/usr/include/CC/cctype" namespace std { using ::isalnum; using ::isalpha; using ::iscntrl; using ::isdigit; using ::isgraph; using ::islower; using ::isprint; using ::ispunct; using ::isspace; using ::isupper; using ::isxdigit; using ::tolower; using ::toupper; } #line 81 "/usr/include/ctype.h" #line 107 "/usr/include/ctype.h" #line 5 "/usr/include/CC/xlocinfo.h" #line 1 "/usr/include/locale.h" #ident "@(#)unixsrc:usr/src/common/head/locale.h /main/1" struct lconv { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; char int_p_cs_precedes; char int_n_cs_precedes; char int_p_sep_by_space; char int_n_sep_by_space; char int_p_sign_posn; char int_n_sign_posn; }; #line 77 "/usr/include/locale.h" extern "C" { extern char *setlocale(int, const char *); struct lconv *localeconv(void); } #line 1 "/usr/include/CC/clocale" #line 1 "/usr/include/locale.h" #line 5 "/usr/include/CC/clocale" namespace std { using ::lconv; using ::localeconv; using ::setlocale; } #line 93 "/usr/include/locale.h" #line 6 "/usr/include/CC/xlocinfo.h" #line 22 "/usr/include/CC/xlocinfo.h" #line 33 "/usr/include/CC/xlocinfo.h" #line 42 "/usr/include/CC/xlocinfo.h" typedef struct _Collvec { int _Stuff; } _Collvec; typedef struct _Ctypevec { int _Stuff; const short *_Table; int _Delfl; } _Ctypevec; typedef struct _Cvtvec { int _Stuff; } _Cvtvec; extern "C" { _Collvec _Getcoll(); _Ctypevec _Getctype(); _Cvtvec _Getcvt(); char *_Getdays(); char *_Getmonths(); void *_Gettnames(); int _Mbrtowc(wchar_t *, const char *, size_t, mbstate_t *, const _Cvtvec *); extern float _Stof(const char *, char **, long); extern double _Stod(const char *, char **, long); extern long double _Stold(const char *, char **, long); int _Strcoll(const char *, const char *, const char *, const char *, const _Collvec *); size_t _Strftime(char *, size_t, const char *, const struct tm *, void *); size_t _Strxfrm(char *, char *, const char *, const char *, const _Collvec *); int _Tolower(int, const _Ctypevec *); int _Toupper(int, const _Ctypevec *); int _Wcrtomb(char *, wchar_t, mbstate_t *, const _Cvtvec *); int _Wcscoll(const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *, const _Collvec *); size_t _Wcsxfrm(wchar_t *, wchar_t *, const wchar_t *, const wchar_t *, const _Collvec *); } #line 5 "/usr/include/CC/xlocinfo" namespace std { class _Timevec { public: _Timevec(void *_Ptr = 0) : _Timeptr(_Ptr) {} _Timevec(const _Timevec& _Right) { *this = _Right; } ~_Timevec() { free(_Timeptr); } _Timevec& operator=(const _Timevec& _Right) { _Timeptr = _Right._Timeptr; ((_Timevec *)&_Right)->_Timeptr = 0; return (*this); } void *_Getptr() const { return (_Timeptr); } private: void *_Timeptr; }; class _Locinfo { public: typedef ::_Collvec _Collvec; typedef ::_Ctypevec _Ctypevec; typedef ::_Cvtvec _Cvtvec; typedef std::_Timevec _Timevec; _Locinfo(const char * = "C"); _Locinfo(int, const char *); ~_Locinfo(); _Locinfo& _Addcats(int, const char *); string _Getname() const { return (_Newlocname); } _Collvec _Getcoll() const { return (::_Getcoll()); } _Ctypevec _Getctype() const { return (::_Getctype()); } _Cvtvec _Getcvt() const { return (::_Getcvt()); } const lconv *_Getlconv() const { return (localeconv()); } _Timevec _Gettnames() const { return (_Timevec(::_Gettnames())); } const char *_Getdays() const { const char *_Ptr = ::_Getdays(); if (_Ptr != 0) { ((_Locinfo *)this)->_Days = _Ptr; free((void *)_Ptr); } return (_Days.size() != 0 ? _Days.c_str() : ":Sun:Sunday:Mon:Monday:Tue:Tuesday:Wed:Wednesday" ":Thu:Thursday:Fri:Friday:Sat:Saturday"); } const char *_Getmonths() const { const char *_Ptr = ::_Getmonths(); if (_Ptr != 0) { ((_Locinfo *)this)->_Months = _Ptr; free((void *)_Ptr); } return (_Months.size() != 0 ? _Months.c_str() : ":Jan:January:Feb:February:Mar:March" ":Apr:April:May:May:Jun:June" ":Jul:July:Aug:August:Sep:September" ":Oct:October:Nov:November:Dec:December"); } const char *_Getfalse() const { return ("false"); } const char *_Gettrue() const { return ("true"); } private: _Lockit _Lock; string _Days; string _Months; string _Oldlocname; string _Newlocname; }; template inline int _LStrcoll(const _Elem *_First1, const _Elem *_Last1, const _Elem *_First2, const _Elem *_Last2, const _Locinfo::_Collvec *) { for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, ++_First2) if (*_First1 < *_First2) return (-1); else if (*_First2 < *_First1) return (+1); return (_First2 != _Last2 ? -1 : _First1 != _Last1 ? +1 : 0); } template<> inline int _LStrcoll(const char *_First1, const char *_Last1, const char *_First2, const char *_Last2, const _Locinfo::_Collvec *_Vector) { return (_Strcoll(_First1, _Last1, _First2, _Last2, _Vector)); } template inline size_t _LStrxfrm(_Elem *_First1, _Elem *_Last1, const _Elem *_First2, const _Elem *_Last2, const _Locinfo::_Collvec *) { size_t _Count = _Last2 - _First2; if (_Count <= (size_t)(_Last1 - _First1)) memcpy(_First1, _First2, _Count * sizeof (_Elem)); return (_Count); } template<> inline size_t _LStrxfrm(char *_First1, char *_Last1, const char *_First2, const char *_Last2, const _Locinfo::_Collvec *_Vector) { return (_Strxfrm(_First1, _Last1, _First2, _Last2, _Vector)); } } #line 9 "/usr/include/CC/xlocale" namespace std { template class _Locbase { public: static const int collate = (1 << (3)); static const int ctype = (1 << (0)); static const int monetary = (1 << (4)); static const int numeric = (1 << (1)); static const int time = (1 << (2)); static const int messages = (1 << (6)); static const int all = ((1 << ((6 + 1))) - 1); static const int none = 0; }; template const int _Locbase<_Dummy>::collate; template const int _Locbase<_Dummy>::ctype; template const int _Locbase<_Dummy>::monetary; template const int _Locbase<_Dummy>::numeric; template const int _Locbase<_Dummy>::time; template const int _Locbase<_Dummy>::messages; template const int _Locbase<_Dummy>::all; template const int _Locbase<_Dummy>::none; class locale : public _Locbase { public: typedef int category; class id { public: id(size_t _Val = 0) : _Id(_Val) {} operator size_t() { _Lockit _Lock(0); if (_Id == 0) _Id = ++_Id_cnt; return (_Id); } private: id(const id&); id& operator=(const id&); size_t _Id; static int _Id_cnt; }; class _Locimp; class facet { friend class locale; friend class _Locimp; public: static size_t _Getcat(const facet ** = 0) { return ((size_t)(-1)); } void _Incref() { _Lockit _Lock(0); if (_Refs < (size_t)(-1)) ++_Refs; } facet *_Decref() { _Lockit _Lock(0); if (0 < _Refs && _Refs < (size_t)(-1)) --_Refs; return (_Refs == 0 ? this : 0); } virtual ~facet() {} protected: explicit facet(size_t _Initrefs = 0) : _Refs(_Initrefs) {} private: facet(const facet&); facet& operator=(const facet&); size_t _Refs; }; class _Locimp : public facet { protected: ~_Locimp(); private: friend class locale; _Locimp(bool _Transparent = false); _Locimp(const _Locimp&); void _Addfac(facet *, size_t); static _Locimp *_Makeloc(const _Locinfo&, category, _Locimp *, const locale *); static void _Makewloc(const _Locinfo&, category, _Locimp *, const locale *); static void _Makexloc(const _Locinfo&, category, _Locimp *, const locale *); facet **_Facetvec; size_t _Facetcount; category _Catmask; bool _Xparent; string _Name; static _Locimp *_Clocptr; static _Locimp *_Global; }; template bool operator()(const basic_string<_Elem, _Tr, _Alloc>&, const basic_string<_Elem, _Tr, _Alloc>&) const; template locale combine(const locale& _Right) const; template locale(const locale& _Right, _Facet *_Facptr) : _Ptr(new _Locimp(_Right._Ptr)) { if (_Facptr != 0) { _Ptr->_Addfac(_Facptr, _Facet::id); if (_Facet::_Getcat() != (size_t)(-1)) _Ptr->_Catmask = 0, _Ptr->_Name = "*"; }} locale() throw () : _Ptr(_Init()) { _Locimp::_Global->_Incref(); } locale(_Uninitialized) {} locale(const locale& _Right) throw () : _Ptr(_Right._Ptr) { _Ptr->_Incref(); } locale(const locale&, const locale&, category); explicit locale(const char *, category = all); locale(const locale&, const char *, category); ~locale() throw () { if (_Ptr != 0) delete _Ptr->_Decref(); } locale& operator=(const locale& _Right) throw () { if (_Ptr != _Right._Ptr) { delete _Ptr->_Decref(); _Ptr = _Right._Ptr; _Ptr->_Incref(); } return (*this); } string name() const { return (_Ptr->_Name); } const facet *_Getfacet(size_t) const; bool operator==(const locale&) const; bool operator!=(const locale& _Right) const { return (!(*this == _Right)); } static const locale& classic(); static locale global(const locale&); static locale empty(); private: locale(_Locimp *_Ptrimp) : _Ptr(_Ptrimp) {} static _Locimp *_Init(); static void _Tidy(); _Locimp *_Ptr; }; template class _Tidyfac { public: static _Facet *_Save(_Facet *_Fac) { _Facsav = _Fac; _Facsav->_Incref(); return (_Fac); } static void _Tidy() { if (_Facsav != 0) { delete _Facsav->_Decref(); _Facsav = 0; }} private: static _Facet *_Facsav; }; template _Facet *_Tidyfac<_Facet>::_Facsav = 0; template inline const _Facet& use_facet(const locale& _Locale) { static const locale::facet *_Psave = 0; size_t _Id = _Facet::id; const locale::facet *_Pf = _Locale._Getfacet(_Id); if (_Pf != 0) ; else if (_Psave != 0) _Pf = _Psave; else { _Lockit _Lock(0); if (_Psave != 0) _Pf = _Psave; else if (_Facet::_Getcat(&_Psave) != (size_t)(-1)) _Pf = _Tidyfac<_Facet>::_Save((_Facet *)_Psave); else throw bad_cast(); } return ((const _Facet&)(*_Pf)); } template inline char _Narrow(_Elem _Char) { return ((char)_Char); } template<> inline char _Narrow(wchar_t _Char) { return ((char)wctob(_Char)); } template inline _Elem _Widen(char _Ch, _Elem *) { return ((_Elem)(unsigned char)_Ch); } template<> inline wchar_t _Widen(char _Ch, wchar_t *) { return (btowc(_Ch)); } template inline int _Getloctxt(_InIt& _First, _InIt& _Last, size_t _Numfields, const _Elem *_Ptr) { for (size_t _Off = 0; _Ptr[_Off] != (_Elem)0; ++_Off) if (_Ptr[_Off] == _Ptr[0]) ++_Numfields; string _Str(_Numfields, '\0'); int _Ans = -2; for (size_t _Column = 1; ; ++_Column, ++_First, _Ans = -1) { bool _Prefix = false; size_t _Off = 0; size_t _Field = 0; for (; _Field < _Numfields; ++_Field) { for (; _Ptr[_Off] != (_Elem)0 && _Ptr[_Off] != _Ptr[0]; ++_Off) ; if (_Str[_Field] != '\0') _Off += _Str[_Field]; else if (_Ptr[_Off += _Column] == _Ptr[0] || _Ptr[_Off] == (_Elem)0) { _Str[_Field] = (char)(_Column < 127 ? _Column : 127); _Ans = (int)_Field; } else if (_First == _Last || _Ptr[_Off] != *_First) _Str[_Field] = (char)(_Column < 127 ? _Column : 127); else _Prefix = true; } if (!_Prefix || _First == _Last) break; } return (_Ans); } template inline _Elem *_Maklocstr(const char *_Ptr, _Elem *) { size_t _Count = strlen(_Ptr) + 1; _Elem *_Ptrdest = new _Elem[_Count]; for (_Elem *_Ptrnext = _Ptrdest; 0 < _Count; --_Count, ++_Ptrnext, ++_Ptr) *_Ptrnext = _Widen(*_Ptr, (_Elem *)0); return (_Ptrdest); } class codecvt_base : public locale::facet { public: enum { ok, partial, error, noconv}; typedef int result; codecvt_base(size_t _Refs = 0) : locale::facet(_Refs) {} bool always_noconv() const throw () { return (do_always_noconv()); } int max_length() const throw () { return (do_max_length()); } int encoding() const throw () { return (do_encoding()); } ~codecvt_base() {} protected: virtual bool do_always_noconv() const throw () { return (true); } virtual int do_max_length() const throw () { return (1); } virtual int do_encoding() const throw () { return (1); } }; template class codecvt : public codecvt_base { public: typedef _Elem intern_type; typedef _Byte extern_type; typedef _Statype state_type; result in(_Statype& _State, const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1, _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const { return (do_in(_State, _First1, _Last1, _Mid1, _First2, _Last2, _Mid2)); } result out(_Statype& _State, const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1, _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const { return (do_out(_State, _First1, _Last1, _Mid1, _First2, _Last2, _Mid2)); } result unshift(_Statype& _State, _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const { return (do_unshift(_State, _First2, _Last2, _Mid2)); } int length(_Statype& _State, const _Byte *_First1, const _Byte *_Last1, size_t _Count) const throw () { return (do_length(_State, _First1, _Last1, _Count)); } static locale::id id; explicit codecvt(size_t _Refs = 0) : codecvt_base(_Refs) { _Init(_Locinfo()); } codecvt(const _Locinfo& _Lobj, size_t _Refs = 0) : codecvt_base(_Refs) { _Init(_Lobj); } static size_t _Getcat(const locale::facet **_Ppf = 0) { if (_Ppf != 0 && *_Ppf == 0) *_Ppf = new codecvt<_Elem, _Byte, _Statype>; return (0); } protected: virtual ~codecvt() {} protected: void _Init(const _Locinfo& _Lobj) { _Cvt = _Lobj._Getcvt(); } virtual result do_in(_Statype&, const _Byte *_First1, const _Byte *, const _Byte *& _Mid1, _Elem *_First2, _Elem *, _Elem *& _Mid2) const { _Mid1 = _First1, _Mid2 = _First2; return (noconv); } virtual result do_out(_Statype&, const _Elem *_First1, const _Elem *, const _Elem *& _Mid1, _Byte *_First2, _Byte *, _Byte *& _Mid2) const { _Mid1 = _First1, _Mid2 = _First2; return (noconv); } virtual result do_unshift(_Statype&, _Byte *, _Byte *, _Byte *&) const { return (noconv); } virtual int do_length(_Statype&, const _Byte *_First1, const _Byte *_Last1, size_t _Count) const throw () { return (_Count < (size_t)(_Last1 - _First1) ? _Count : _Last1 - _First1); } private: _Locinfo::_Cvtvec _Cvt; }; template locale::id codecvt<_Elem, _Byte, _Statype>::id; template<> class codecvt : public codecvt_base { public: typedef wchar_t _Elem; typedef char _Byte; typedef mbstate_t _Statype; typedef _Elem intern_type; typedef _Byte extern_type; typedef _Statype state_type; result in(_Statype& _State, const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1, _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const { return (do_in(_State, _First1, _Last1, _Mid1, _First2, _Last2, _Mid2)); } result out(_Statype& _State, const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1, _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const { return (do_out(_State, _First1, _Last1, _Mid1, _First2, _Last2, _Mid2)); } result unshift(_Statype& _State, _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const { return (do_unshift(_State, _First2, _Last2, _Mid2)); } int length(_Statype& _State, const _Byte *_First1, const _Byte *_Last1, size_t _N2) const throw () { return (do_length(_State, _First1, _Last1, _N2)); } static locale::id id; explicit codecvt(size_t _Refs = 0) : codecvt_base(_Refs) { _Init(_Locinfo()); } codecvt(const _Locinfo& _Lobj, size_t _Refs = 0) : codecvt_base(_Refs) { _Init(_Lobj); } static size_t _Getcat(const locale::facet **_Ppf = 0) { if (_Ppf != 0 && *_Ppf == 0) *_Ppf = new codecvt<_Elem, _Byte, _Statype>; return (0); } protected: virtual ~codecvt() {} protected: void _Init(const _Locinfo& _Lobj) { _Cvt = _Lobj._Getcvt(); } virtual result do_in(_Statype& _State, const _Byte *_First1, const _Byte *_Last1, const _Byte *& _Mid1, _Elem *_First2, _Elem *_Last2, _Elem *& _Mid2) const { _Mid1 = _First1, _Mid2 = _First2; result _Ans = _Mid1 == _Last1 ? ok : partial; int _Bytes; while (_Mid1 != _Last1 && _Mid2 != _Last2) switch (_Bytes = _Mbrtowc(_Mid2, _Mid1, _Last1 - _Mid1, &_State, &_Cvt)) { case -2: _Mid1 = _Last1; return (_Ans); case -1: return (error); case 0: _Bytes = strlen(_Mid1) + 1; default: _Mid1 += _Bytes, ++_Mid2, _Ans = ok; } return (_Ans); } virtual result do_out(_Statype& _State, const _Elem *_First1, const _Elem *_Last1, const _Elem *& _Mid1, _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const { _Mid1 = _First1, _Mid2 = _First2; result _Ans = _Mid1 == _Last1 ? ok : partial; int _Bytes; while (_Mid1 != _Last1 && _Mid2 != _Last2) if (((int)__ctype[520]) <= _Last2 - _Mid2) if ((_Bytes = _Wcrtomb(_Mid2, *_Mid1, &_State, &_Cvt)) <= 0) return (error); else ++_Mid1, _Mid2 += _Bytes, _Ans = ok; else { _Byte _Buf[6]; _Statype _Stsave = _State; if ((_Bytes = _Wcrtomb(_Buf, *_Mid1, &_State, &_Cvt)) <= 0) return (error); else if (_Last2 - _Mid2 < _Bytes) { _State = _Stsave; return (_Ans); } else { memcpy(_Mid2, _Buf, _Bytes); ++_Mid1, _Mid2 += _Bytes, _Ans = ok; }} return (_Ans); } virtual result do_unshift(_Statype& _State, _Byte *_First2, _Byte *_Last2, _Byte *& _Mid2) const { _Mid2 = _First2; result _Ans = ok; int _Bytes; _Byte _Buf[6]; _Statype _Stsave = _State; if ((_Bytes = _Wcrtomb(_Buf, L'\0', &_State, &_Cvt)) <= 0) _Ans = error; else if (_Last2 - _Mid2 < --_Bytes) { _State = _Stsave; _Ans = partial; } else if (0 < _Bytes) { memcpy(_Mid2, _Buf, _Bytes); _Mid2 += _Bytes; } return (_Ans); } virtual int do_length(_Statype& _State, const _Byte *_First1, const _Byte *_Last1, size_t _Count) const throw () { int _Wchars; const _Byte *_Mid1; for (_Wchars = 0, _Mid1 = _First1; (size_t)_Wchars < _Count && _Mid1 != _Last1; ) { int _Bytes; _Elem _Char; switch (_Bytes = _Mbrtowc(&_Char, _Mid1, _Last1 - _Mid1, &_State, &_Cvt)) { case -2: return (_Wchars); case -1: return (_Wchars); case 0: _Bytes = strlen(_Mid1) + 1; default: _Mid1 += _Bytes, ++_Wchars; }} return (_Wchars); } virtual bool do_always_noconv() const throw () { return (false); } virtual int do_max_length() const throw () { return (6); } virtual int do_encoding() const throw () { return (0); } private: _Locinfo::_Cvtvec _Cvt; }; template class codecvt_byname : public codecvt<_Elem, _Byte, _Statype> { public: explicit codecvt_byname(const char *_Locname, size_t _Refs = 0) : codecvt<_Elem, _Byte, _Statype>(_Locinfo(_Locname), _Refs) {} protected: virtual ~codecvt_byname() {} }; struct ctype_base : public locale::facet { enum { alnum = 0x20|0x10|0x02|0x200, alpha = 0x10|0x02|0x200, cntrl = 0x80, digit = 0x20, graph = 0x20|0x10|0x08|0x02|0x200, lower = 0x10, print = 0x20|0x10|0x08|0x04|0x02|0x200|0x01, punct = 0x08, space = 0x40|0x04|0x100, upper = 0x02, xdigit = 0x01}; typedef short mask; ctype_base(size_t _Refs = 0) : locale::facet(_Refs) {} ~ctype_base() {} }; template class ctype : public ctype_base { public: typedef _Elem char_type; bool is(mask _Mask, _Elem _Char) const { return (do_is(_Mask, _Char)); } const _Elem *is(const _Elem *_First, const _Elem *_Last, mask *_Ptr) const { return (do_is(_First, _Last, _Ptr)); } const _Elem *scan_is(mask _Mask, const _Elem *_First, const _Elem *_Last) const { return (do_scan_is(_Mask, _First, _Last)); } const _Elem *scan_not(mask _Mask, const _Elem *_First, const _Elem *_Last) const { return (do_scan_not(_Mask, _First, _Last)); } _Elem tolower(_Elem _Char) const { return (do_tolower(_Char)); } const _Elem *tolower(_Elem *_First, const _Elem *_Last) const { return (do_tolower(_First, _Last)); } _Elem toupper(_Elem _Char) const { return (do_toupper(_Char)); } const _Elem *toupper(_Elem *_First, const _Elem *_Last) const { return (do_toupper(_First, _Last)); } _Elem widen(char _Byte) const { return (do_widen(_Byte)); } const char *widen(const char *_First, const char *_Last, _Elem *_Ptr) const { return (do_widen(_First, _Last, _Ptr)); } char narrow(_Elem _Char, char _Default = '\0') const { return (do_narrow(_Char, _Default)); } const _Elem *narrow(const _Elem *_First, const _Elem *_Last, char _Default, char *_Ptr) const { return (do_narrow(_First, _Last, _Default, _Ptr)); } static locale::id id; explicit ctype(size_t _Refs = 0) : ctype_base(_Refs) { _Init(_Locinfo()); } ctype(const _Locinfo& _Lobj, size_t _Refs = 0) : ctype_base(_Refs) { _Init(_Lobj); } static size_t _Getcat(const locale::facet **_Ppf = 0) { if (_Ppf != 0 && *_Ppf == 0) *_Ppf = new ctype<_Elem>; return (0); } protected: virtual ~ctype() { if (_Ctype._Delfl) free((void *)_Ctype._Table); } protected: void _Init(const _Locinfo& _Lobj) { _Ctype = _Lobj._Getctype(); } virtual bool do_is(mask _Mask, _Elem _Char) const { return ((_Ctype._Table[(unsigned char)narrow(_Char)] & _Mask) != 0); } virtual const _Elem *do_is(const _Elem *_First, const _Elem *_Last, mask *_Ptr) const { for (; _First != _Last; ++_First, ++_Ptr) *_Ptr = _Ctype._Table[(unsigned char)narrow(*_First)]; return (_First); } virtual const _Elem *do_scan_is(mask _Mask, const _Elem *_First, const _Elem *_Last) const { for (; _First != _Last && !is(_Mask, *_First); ++_First) ; return (_First); } virtual const _Elem *do_scan_not(mask _Mask, const _Elem *_First, const _Elem *_Last) const { for (; _First != _Last && is(_Mask, *_First); ++_First) ; return (_First); } virtual _Elem do_tolower(_Elem _Char) const { return (widen((char)_Tolower((unsigned char)narrow(_Char), &_Ctype))); } virtual const _Elem *do_tolower(_Elem *_First, const _Elem *_Last) const { for (; _First != _Last; ++_First) *_First = widen((char)_Tolower((unsigned char)narrow(*_First), &_Ctype)); return ((const _Elem *)_First); } virtual _Elem do_toupper(_Elem _Char) const { return (widen((char)_Toupper((unsigned char)narrow(_Char), &_Ctype))); } virtual const _Elem *do_toupper(_Elem *_First, const _Elem *_Last) const { for (; _First != _Last; ++_First) *_First = widen((char)_Toupper((unsigned char)narrow(*_First), &_Ctype)); return ((const _Elem *)_First); } virtual _Elem do_widen(char _Byte) const { return (_Widen(_Byte, (_Elem *)0)); } virtual const char *do_widen(const char *_First, const char *_Last, _Elem *_Ptr) const { for (; _First != _Last; ++_First, ++_Ptr) *_Ptr = _Widen(*_First, (_Elem *)0); return (_First); } virtual char do_narrow(_Elem _Char, char) const { return (_Narrow(static_cast<_Elem>(_Char))); } virtual const _Elem *do_narrow(const _Elem *_First, const _Elem *_Last, char, char *_Ptr) const { for (; _First != _Last; ++_First, ++_Ptr) *_Ptr = _Narrow(static_cast<_Elem>(*_First)); return (_First); } private: _Locinfo::_Ctypevec _Ctype; }; template locale::id ctype<_Elem>::id; template<> class ctype : public ctype_base { typedef ctype _Myt; public: typedef char _Elem; typedef _Elem char_type; bool is(mask _Mask, _Elem _Char) const { return ((_Ctype._Table[(unsigned char)_Char] & _Mask) != 0); } const _Elem *is(const _Elem *_First, const _Elem *_Last, mask *_Ptr) const { for (; _First != _Last; ++_First, ++_Ptr) *_Ptr = _Ctype._Table[(unsigned char)*_First]; return (_First); } const _Elem *scan_is(mask _Mask, const _Elem *_First, const _Elem *_Last) const { for (; _First != _Last && !is(_Mask, *_First); ++_First) ; return (_First); } const _Elem *scan_not(mask _Mask, const _Elem *_First, const _Elem *_Last) const { for (; _First != _Last && is(_Mask, *_First); ++_First) ; return (_First); } _Elem tolower(_Elem _Char) const { return (do_tolower(_Char)); } const _Elem *tolower(_Elem *_First, const _Elem *_Last) const { return (do_tolower(_First, _Last)); } _Elem toupper(_Elem _Char) const { return (do_toupper(_Char)); } const _Elem *toupper(_Elem *_First, const _Elem *_Last) const { return (do_toupper(_First, _Last)); } _Elem widen(char _Byte) const { return (do_widen(_Byte)); } const _Elem *widen(const char *_First, const char *_Last, _Elem *_Ptr) const { return (do_widen(_First, _Last, _Ptr)); } _Elem narrow(_Elem _Char, char _Default = '\0') const { return (do_narrow(_Char, _Default)); } const _Elem *narrow(const _Elem *_First, const _Elem *_Last, char _Default, char *_Ptr) const { return (do_narrow(_First, _Last, _Default, _Ptr)); } static locale::id id; explicit ctype(const mask *_Table = 0, bool _Deletetable = false, size_t _Refs = 0) : ctype_base(_Refs) { _Init(_Locinfo()); if (_Table != 0) { _Tidy(); _Ctype._Table = _Table; _Ctype._Delfl = _Deletetable; }} ctype(const _Locinfo& _Lobj, size_t _Refs = 0) : ctype_base(_Refs) { _Init(_Lobj); } static size_t _Getcat(const locale::facet **_Ppf = 0) { if (_Ppf != 0 && *_Ppf == 0) *_Ppf = new ctype<_Elem>; return (0); } static const size_t table_size; protected: virtual ~ctype() { _Tidy(); } protected: void _Init(const _Locinfo& _Lobj) { _Ctype = _Lobj._Getctype(); } void _Tidy() { if (_Ctype._Delfl) free((void *)_Ctype._Table); } virtual _Elem do_tolower(_Elem _Char) const { return ((_Elem)_Tolower((unsigned char)_Char, &_Ctype)); } virtual const _Elem *do_tolower(_Elem *_First, const _Elem *_Last) const { for (; _First != _Last; ++_First) *_First = (_Elem)_Tolower((unsigned char)*_First, &_Ctype); return ((const _Elem *)_First); } virtual _Elem do_toupper(_Elem _Char) const { return ((_Elem)_Toupper((unsigned char)_Char, &_Ctype)); } virtual const _Elem *do_toupper(_Elem *_First, const _Elem *_Last) const { for (; _First != _Last; ++_First) *_First = (_Elem)_Toupper((unsigned char)*_First, &_Ctype); return ((const _Elem *)_First); } virtual _Elem do_widen(char _Byte) const { return (_Byte); } virtual const _Elem *do_widen(const char *_First, const char *_Last, _Elem *_Ptr) const { memcpy(_Ptr, _First, _Last - _First); return (_Last); } virtual _Elem do_narrow(_Elem _Char, char) const { return (_Char); } virtual const _Elem *do_narrow(const _Elem *_First, const _Elem *_Last, char, char *_Ptr) const { memcpy(_Ptr, _First, _Last - _First); return (_Last); } const mask *table() const throw () { return (_Ctype._Table); } static const mask *classic_table() throw () { const _Myt& _Fac = use_facet<_Myt >(locale::classic()); return (_Fac.table()); } private: _Locinfo::_Ctypevec _Ctype; }; template class ctype_byname : public ctype<_Elem> { public: explicit ctype_byname(const char *_Locname, size_t _Refs = 0) : ctype<_Elem>(_Locinfo(_Locname), _Refs) {} protected: virtual ~ctype_byname() {} }; } #line 5 "/usr/include/CC/xiosbase" namespace std { template class _Iosbase { public: enum _Fmtflags { _Fmtmask = 0x7fff, _Fmtzero = 0}; typedef _Fmtflags fmtflags; static const _Fmtflags skipws = (_Fmtflags)0x0001; static const _Fmtflags unitbuf = (_Fmtflags)0x0002; static const _Fmtflags uppercase = (_Fmtflags)0x0004; static const _Fmtflags showbase = (_Fmtflags)0x0008; static const _Fmtflags showpoint = (_Fmtflags)0x0010; static const _Fmtflags showpos = (_Fmtflags)0x0020; static const _Fmtflags left = (_Fmtflags)0x0040; static const _Fmtflags right = (_Fmtflags)0x0080; static const _Fmtflags internal = (_Fmtflags)0x0100; static const _Fmtflags dec = (_Fmtflags)0x0200; static const _Fmtflags oct = (_Fmtflags)0x0400; static const _Fmtflags hex = (_Fmtflags)0x0800; static const _Fmtflags scientific = (_Fmtflags)0x1000; static const _Fmtflags fixed = (_Fmtflags)0x2000; static const _Fmtflags boolalpha = (_Fmtflags)0x4000; static const _Fmtflags adjustfield = (_Fmtflags)0x01c0; static const _Fmtflags basefield = (_Fmtflags)0x0e00; static const _Fmtflags floatfield = (_Fmtflags)0x3000; enum _Iostate { _Statmask = 0x7}; typedef _Iostate iostate; static const _Iostate goodbit = (_Iostate)0x0; static const _Iostate eofbit = (_Iostate)0x1; static const _Iostate failbit = (_Iostate)0x2; static const _Iostate badbit = (_Iostate)0x4; enum _Openmode { _Openmask = 0x3f}; typedef _Openmode openmode; static const _Openmode in = (_Openmode)0x01; static const _Openmode out = (_Openmode)0x02; static const _Openmode ate = (_Openmode)0x04; static const _Openmode app = (_Openmode)0x08; static const _Openmode trunc = (_Openmode)0x10; static const _Openmode binary = (_Openmode)0x20; enum _Seekdir { _Seekmask = 0x3}; typedef _Seekdir seekdir; static const _Seekdir beg = (_Seekdir)0; static const _Seekdir cur = (_Seekdir)1; static const _Seekdir end = (_Seekdir)2; }; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::skipws; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::unitbuf; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::uppercase; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::showbase; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::showpoint; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::showpos; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::left; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::right; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::internal; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::dec; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::oct; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::hex; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::scientific; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::fixed; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::boolalpha; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::adjustfield; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::basefield; template const typename _Iosbase<_Dummy>::_Fmtflags _Iosbase<_Dummy>::floatfield; template const typename _Iosbase<_Dummy>::_Iostate _Iosbase<_Dummy>::goodbit; template const typename _Iosbase<_Dummy>::_Iostate _Iosbase<_Dummy>::eofbit; template const typename _Iosbase<_Dummy>::_Iostate _Iosbase<_Dummy>::failbit; template const typename _Iosbase<_Dummy>::_Iostate _Iosbase<_Dummy>::badbit; template const typename _Iosbase<_Dummy>::_Openmode _Iosbase<_Dummy>::in; template const typename _Iosbase<_Dummy>::_Openmode _Iosbase<_Dummy>::out; template const typename _Iosbase<_Dummy>::_Openmode _Iosbase<_Dummy>::ate; template const typename _Iosbase<_Dummy>::_Openmode _Iosbase<_Dummy>::app; template const typename _Iosbase<_Dummy>::_Openmode _Iosbase<_Dummy>::trunc; template const typename _Iosbase<_Dummy>::_Openmode _Iosbase<_Dummy>::binary; template const typename _Iosbase<_Dummy>::_Seekdir _Iosbase<_Dummy>::beg; template const typename _Iosbase<_Dummy>::_Seekdir _Iosbase<_Dummy>::cur; template const typename _Iosbase<_Dummy>::_Seekdir _Iosbase<_Dummy>::end; class ios_base : public _Iosbase { public: enum event { erase_event, imbue_event, copyfmt_event}; typedef void (*event_callback)(event, ios_base&, int); typedef unsigned int io_state, open_mode, seek_dir; class failure : public runtime_error { public: explicit failure(const string &_Message) : runtime_error(_Message) {} virtual ~failure() throw () {} }; class Init { public: Init(); ~Init(); private: static int _Init_cnt; }; ios_base& operator=(const ios_base& _Right) { if (this != &_Right) { _Mystate = _Right._Mystate; copyfmt(_Right); } return (*this); } operator void *() const { return (fail() ? 0 : (void *)this); } bool operator!() const { return (fail()); } void clear(iostate, bool); void clear(iostate _State = goodbit) { clear(_State, false); } void clear(io_state _State) { clear((iostate)_State); } iostate rdstate() const { return (_Mystate); } void setstate(iostate _State, bool _Exreraise) { if (_State != goodbit) clear((iostate)((int)rdstate() | (int)_State), _Exreraise); } void setstate(iostate _State) { if (_State != goodbit) clear((iostate)((int)rdstate() | (int)_State), false); } void setstate(io_state _State) { setstate((iostate)_State); } bool good() const { return (rdstate() == goodbit); } bool eof() const { return ((int)rdstate() & (int)eofbit); } bool fail() const { return (((int)rdstate() & ((int)badbit | (int)failbit)) != 0); } bool bad() const { return (((int)rdstate() & (int)badbit) != 0); } iostate exceptions() const { return (_Except); } void exceptions(iostate _Newexcept) { _Except = (iostate)((int)_Newexcept & (int)_Statmask); clear(_Mystate); } void exceptions(io_state _State) { exceptions((iostate)_State); } fmtflags flags() const { return (_Fmtfl); } fmtflags flags(fmtflags _Newfmtflags) { fmtflags _Oldfmtflags = _Fmtfl; _Fmtfl = (fmtflags)((int)_Newfmtflags & (int)_Fmtmask); return (_Oldfmtflags); } fmtflags setf(fmtflags _Newfmtflags) { ios_base::fmtflags _Oldfmtflags = _Fmtfl; _Fmtfl = (fmtflags)((int)_Fmtfl | (int)_Newfmtflags & (int)_Fmtmask); return (_Oldfmtflags); } fmtflags setf(fmtflags _Newfmtflags, fmtflags _Mask) { ios_base::fmtflags _Oldfmtflags = _Fmtfl; _Fmtfl = (fmtflags)(((int)_Fmtfl & (int)~_Mask) | ((int)_Newfmtflags & (int)_Mask & (int)_Fmtmask)); return (_Oldfmtflags); } void unsetf(fmtflags _Mask) { _Fmtfl = (fmtflags)((int)_Fmtfl & (int)~_Mask); } streamsize precision() const { return (_Prec); } streamsize precision(int _Newprecision) { streamsize _Oldprecision = _Prec; _Prec = _Newprecision; return (_Oldprecision); } streamsize width() const { return (_Wide); } streamsize width(streamsize _Newwidth) { streamsize _Oldwidth = _Wide; _Wide = _Newwidth; return (_Oldwidth); } locale getloc() const { return (*_Ploc); } locale imbue(const locale&); static int xalloc() { return (_Index++); } long& iword(int _Idx) { return (_Findarr(_Idx)._Lo); } void *& pword(int _Idx) { return (_Findarr(_Idx)._Vp); } void register_callback(event_callback, int); ios_base& copyfmt(const ios_base&); virtual ~ios_base(); static bool sync_with_stdio(bool _Newsync = true) { const bool _Oldsync = _Sync; _Sync = _Newsync; return (_Oldsync); } void _Addstd(); protected: ios_base() : _Stdstr(0) {} void _Init(); private: struct _Iosarray { public: _Iosarray(int _Idx, _Iosarray *_Link) : _Next(_Link), _Index(_Idx), _Lo(0), _Vp(0) {} _Iosarray *_Next; int _Index; long _Lo; void *_Vp; }; struct _Fnarray { _Fnarray(int _Idx, event_callback _Pnew, _Fnarray *_Link) : _Next(_Link), _Index(_Idx), _Pfn(_Pnew) {} _Fnarray *_Next; int _Index; event_callback _Pfn; }; void _Callfns(event); _Iosarray& _Findarr(int); void _Tidy(); iostate _Mystate; iostate _Except; fmtflags _Fmtfl; int _Prec, _Wide; _Iosarray *_Arr; _Fnarray *_Calls; locale *_Ploc; size_t _Stdstr; static int _Index; static bool _Sync; }; inline ios_base::_Fmtflags& operator&=(ios_base::_Fmtflags& _Left, ios_base::_Fmtflags _Right) { _Left = (ios_base::_Fmtflags)((int)_Left & (int)_Right); return _Left; } inline ios_base::_Fmtflags& operator|=(ios_base::_Fmtflags& _Left, ios_base::_Fmtflags _Right) { _Left = (ios_base::_Fmtflags)((int)_Left | (int)_Right); return _Left; } inline ios_base::_Fmtflags& operator^=(ios_base::_Fmtflags& _Left, ios_base::_Fmtflags _Right) { _Left = (ios_base::_Fmtflags)((int)_Left ^ (int)_Right); return _Left; } inline ios_base::_Fmtflags operator&(ios_base::_Fmtflags _Left, ios_base::_Fmtflags _Right) { return ((ios_base::_Fmtflags)((int)_Left & (int)_Right)); } inline ios_base::_Fmtflags operator|(ios_base::_Fmtflags _Left, ios_base::_Fmtflags _Right) { return ((ios_base::_Fmtflags)((int)_Left | (int)_Right)); } inline ios_base::_Fmtflags operator^(ios_base::_Fmtflags _Left, ios_base::_Fmtflags _Right) { return ((ios_base::_Fmtflags)((int)_Left ^ (int)_Right)); } inline ios_base::_Fmtflags operator~(ios_base::_Fmtflags _Left) { return ((ios_base::_Fmtflags)~(int)_Left); } inline ios_base::_Iostate& operator&=(ios_base::_Iostate& _Left, ios_base::_Iostate _Right) { _Left = (ios_base::_Iostate)((int)_Left & (int)_Right); return _Left; } inline ios_base::_Iostate& operator|=(ios_base::_Iostate& _Left, ios_base::_Iostate _Right) { _Left = (ios_base::_Iostate)((int)_Left | (int)_Right); return _Left; } inline ios_base::_Iostate& operator^=(ios_base::_Iostate& _Left, ios_base::_Iostate _Right) { _Left = (ios_base::_Iostate)((int)_Left ^ (int)_Right); return _Left; } inline ios_base::_Iostate operator&(ios_base::_Iostate _Left, ios_base::_Iostate _Right) { return ((ios_base::_Iostate)((int)_Left & (int)_Right)); } inline ios_base::_Iostate operator|(ios_base::_Iostate _Left, ios_base::_Iostate _Right) { return ((ios_base::_Iostate)((int)_Left | (int)_Right)); } inline ios_base::_Iostate operator^(ios_base::_Iostate _Left, ios_base::_Iostate _Right) { return ((ios_base::_Iostate)((int)_Left ^ (int)_Right)); } inline ios_base::_Iostate operator~(ios_base::_Iostate _Left) { return ((ios_base::_Iostate)~(int)_Left); } inline ios_base::_Openmode& operator&=(ios_base::_Openmode& _Left, ios_base::_Openmode _Right) { _Left = (ios_base::_Openmode)((int)_Left & (int)_Right); return _Left; } inline ios_base::_Openmode& operator|=(ios_base::_Openmode& _Left, ios_base::_Openmode _Right) { _Left = (ios_base::_Openmode)((int)_Left | (int)_Right); return _Left; } inline ios_base::_Openmode& operator^=(ios_base::_Openmode& _Left, ios_base::_Openmode _Right) { _Left = (ios_base::_Openmode)((int)_Left ^ (int)_Right); return _Left; } inline ios_base::_Openmode operator&(ios_base::_Openmode _Left, ios_base::_Openmode _Right) { return ((ios_base::_Openmode)((int)_Left & (int)_Right)); } inline ios_base::_Openmode operator|(ios_base::_Openmode _Left, ios_base::_Openmode _Right) { return ((ios_base::_Openmode)((int)_Left | (int)_Right)); } inline ios_base::_Openmode operator^(ios_base::_Openmode _Left, ios_base::_Openmode _Right) { return ((ios_base::_Openmode)((int)_Left ^ (int)_Right)); } inline ios_base::_Openmode operator~(ios_base::_Openmode _Left) { return ((ios_base::_Openmode)~(int)_Left); } inline ios_base::_Seekdir& operator&=(ios_base::_Seekdir& _Left, ios_base::_Seekdir _Right) { _Left = (ios_base::_Seekdir)((int)_Left & (int)_Right); return _Left; } inline ios_base::_Seekdir& operator|=(ios_base::_Seekdir& _Left, ios_base::_Seekdir _Right) { _Left = (ios_base::_Seekdir)((int)_Left | (int)_Right); return _Left; } inline ios_base::_Seekdir& operator^=(ios_base::_Seekdir& _Left, ios_base::_Seekdir _Right) { _Left = (ios_base::_Seekdir)((int)_Left ^ (int)_Right); return _Left; } inline ios_base::_Seekdir operator&(ios_base::_Seekdir _Left, ios_base::_Seekdir _Right) { return ((ios_base::_Seekdir)((int)_Left & (int)_Right)); } inline ios_base::_Seekdir operator|(ios_base::_Seekdir _Left, ios_base::_Seekdir _Right) { return ((ios_base::_Seekdir)((int)_Left | (int)_Right)); } inline ios_base::_Seekdir operator^(ios_base::_Seekdir _Left, ios_base::_Seekdir _Right) { return ((ios_base::_Seekdir)((int)_Left ^ (int)_Right)); } inline ios_base::_Seekdir operator~(ios_base::_Seekdir _Left) { return ((ios_base::_Seekdir)~(int)_Left); } } #line 5 "/usr/include/CC/streambuf" namespace std { template class basic_streambuf { basic_streambuf(const basic_streambuf<_Elem, _Traits>&); basic_streambuf<_Elem, _Traits>& operator=(const basic_streambuf<_Elem, _Traits>&); protected: basic_streambuf() : _Plocale(new locale) { _Init(); } basic_streambuf(_Uninitialized) {} public: typedef basic_streambuf<_Elem, _Traits> _Myt; typedef _Elem char_type; typedef _Traits traits_type; virtual ~basic_streambuf() { delete _Plocale; } typedef typename _Traits::int_type int_type; typedef typename _Traits::pos_type pos_type; typedef typename _Traits::off_type off_type; pos_type pubseekoff(off_type _Off, ios_base::seekdir _Way, ios_base::openmode _Mode = ios_base::in | ios_base::out) { return (seekoff(_Off, _Way, _Mode)); } pos_type pubseekoff(off_type _Off, ios_base::seek_dir _Way, ios_base::open_mode _Mode) { return (pubseekoff(_Off, (ios_base::seekdir)_Way, (ios_base::openmode)_Mode)); } pos_type pubseekpos(pos_type _Pos, ios_base::openmode _Mode = ios_base::in | ios_base::out) { return (seekpos(_Pos, _Mode)); } pos_type pubseekpos(pos_type _Pos, ios_base::open_mode _Mode) { return (seekpos(_Pos, (ios_base::openmode)_Mode)); } _Myt *pubsetbuf(_Elem *_Buffer, streamsize _Count) { return (setbuf(_Buffer, _Count)); } locale pubimbue(const locale &_Newlocale) { locale _Oldlocale = *_Plocale; imbue(_Newlocale); *_Plocale = _Newlocale; return (_Oldlocale); } locale getloc() { return (*_Plocale); } streamsize in_avail() { return (gptr() != 0 && gptr() < egptr() ? egptr() - gptr() : showmanyc()); } int pubsync() { return (sync()); } int_type sbumpc() { return (gptr() != 0 && gptr() < egptr() ? _Traits::to_int_type(*_Gninc()) : uflow()); } int_type sgetc() { return (gptr() != 0 && gptr() < egptr() ? _Traits::to_int_type(*gptr()) : underflow()); } streamsize sgetn(_Elem *_Ptr, streamsize _Count) { return (xsgetn(_Ptr, _Count)); } int_type snextc() { return (_Traits::eq_int_type(_Traits::eof(), sbumpc()) ? _Traits::eof() : sgetc()); } int_type sputbackc(_Elem _Char) { return (gptr() != 0 && eback() < gptr() && _Traits::eq(_Char, gptr()[-1]) ? _Traits::to_int_type(*_Gndec()) : pbackfail(_Traits::to_int_type(_Char))); } void stossc() { if (gptr() != 0 && gptr() < egptr()) _Gninc(); else uflow(); } int_type sungetc() { return (gptr() != 0 && eback() < gptr() ? _Traits::to_int_type(*_Gndec()) : pbackfail()); } int_type sputc(_Elem _Char) { return (pptr() != 0 && pptr() < epptr() ? _Traits::to_int_type(*_Pninc() = _Char) : overflow(_Traits::to_int_type(_Char))); } streamsize sputn(const _Elem *_Ptr, streamsize _Count) { return (xsputn(_Ptr, _Count)); } protected: _Elem *eback() const { return (*_IGfirst); } _Elem *gptr() const { return (*_IGnext); } _Elem *pbase() const { return (*_IPfirst); } _Elem *pptr() const { return (*_IPnext); } _Elem *egptr() const { return (*_IGnext + *_IGcount); } void gbump(int _Off) { *_IGcount -= _Off; *_IGnext += _Off; } void setg(_Elem *_First, _Elem *_Next, _Elem *_Last) { *_IGfirst = _First; *_IGnext = _Next; *_IGcount = (int)(_Last - _Next); } _Elem *epptr() const { return (*_IPnext + *_IPcount); } _Elem *_Gndec() { ++*_IGcount; return (--*_IGnext); } _Elem *_Gninc() { --*_IGcount; return ((*_IGnext)++); } void pbump(int _Off) { *_IPcount -= _Off; *_IPnext += _Off; } void setp(_Elem *_First, _Elem *_Last) { *_IPfirst = _First; *_IPnext = _First; *_IPcount = (int)(_Last - _First); } void setp(_Elem *_First, _Elem *_Next, _Elem *_Last) { *_IPfirst = _First; *_IPnext = _Next; *_IPcount = (int)(_Last - _Next); } _Elem *_Pninc() { --*_IPcount; return ((*_IPnext)++); } void _Init() { _IGfirst = &_Gfirst, _IPfirst = &_Pfirst; _IGnext = &_Gnext, _IPnext = &_Pnext; _IGcount = &_Gcount, _IPcount = &_Pcount; setp(0, 0), setg(0, 0, 0); } void _Init(_Elem **_Gf, _Elem **_Gn, int *_Gc, _Elem **_Pf, _Elem **_Pn, int *_Pc) { _IGfirst = _Gf, _IPfirst = _Pf; _IGnext = _Gn, _IPnext = _Pn; _IGcount = _Gc, _IPcount = _Pc; } virtual int_type overflow(int_type = _Traits::eof()) { return (_Traits::eof()); } virtual int_type pbackfail(int_type = _Traits::eof()) { return (_Traits::eof()); } virtual streamsize showmanyc() { return (0); } virtual int_type underflow() { return (_Traits::eof()); } virtual int_type uflow() { return (_Traits::eq_int_type(_Traits::eof(), underflow()) ? _Traits::eof() : _Traits::to_int_type(*_Gninc())); } virtual streamsize xsgetn(_Elem * _Ptr, streamsize _Count) { int_type _Meta; streamsize _Size, _Copied; for (_Copied = 0; 0 < _Count; ) if (gptr() != 0 && 0 < (_Size = egptr() - gptr())) { if (_Count < _Size) _Size = _Count; _Traits::copy(_Ptr, gptr(), _Size); _Ptr += _Size; _Copied += _Size; _Count -= _Size; gbump(_Size); } else if (_Traits::eq_int_type(_Traits::eof(), _Meta = uflow())) break; else { *_Ptr++ = _Traits::to_char_type(_Meta); ++_Copied; --_Count; } return (_Copied); } virtual streamsize xsputn(const _Elem *_Ptr, streamsize _Count) { streamsize _Size, _Copied; for (_Copied = 0; 0 < _Count; ) if (pptr() != 0 && 0 < (_Size = epptr() - pptr())) { if (_Count < _Size) _Size = _Count; _Traits::copy(pptr(), _Ptr, _Size); _Ptr += _Size; _Copied += _Size; _Count -= _Size; pbump(_Size); } else if (_Traits::eq_int_type(_Traits::eof(), overflow(_Traits::to_int_type(*_Ptr)))) break; else { ++_Ptr; ++_Copied; --_Count; } return (_Copied); } virtual pos_type seekoff(off_type, ios_base::seekdir, ios_base::openmode = ios_base::in | ios_base::out) { return (streampos(_BADOFF)); } virtual pos_type seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out) { return (streampos(_BADOFF)); } virtual _Myt *setbuf(_Elem *, streamsize) { return (this); } virtual int sync() { return (0); } virtual void imbue(const locale&) {} private: _Elem *_Gfirst; _Elem *_Pfirst; _Elem **_IGfirst; _Elem **_IPfirst; _Elem *_Gnext; _Elem *_Pnext; _Elem **_IGnext; _Elem **_IPnext; int _Gcount; int _Pcount; int *_IGcount; int *_IPcount; locale *_Plocale; }; } #line 9 "/usr/include/CC/xlocnum" namespace std { template class numpunct : public locale::facet { public: typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> > string_type; typedef _Elem char_type; static locale::id id; _Elem decimal_point() const { return (do_decimal_point()); } _Elem thousands_sep() const { return (do_thousands_sep()); } string grouping() const { return (do_grouping()); } string_type falsename() const { return (do_falsename()); } string_type truename() const { return (do_truename()); } explicit numpunct(size_t _Refs = 0) : locale::facet(_Refs) { _Init(_Locinfo()); } numpunct(const _Locinfo& _Lobj, size_t _Refs = 0) : locale::facet(_Refs) { _Init(_Lobj); } static size_t _Getcat(const locale::facet **_Ppf = 0) { if (_Ppf != 0 && *_Ppf == 0) *_Ppf = new numpunct<_Elem>; return (1); } protected: virtual ~numpunct() { delete[] (void *)_Grouping; delete[] (void *)_Falsename; delete[] (void *)_Truename; } protected: void _Init(const _Locinfo& _Lobj) { const lconv *_Ptr = _Lobj._Getlconv(); _Dp = _Widen(_Ptr->decimal_point[0], (_Elem *)0); _Kseparator = _Widen(_Ptr->thousands_sep[0], (_Elem *)0); _Grouping = _Maklocstr(_Ptr->grouping, (char *)0); _Falsename = _Maklocstr(_Lobj . _Getfalse(), (_Elem *)0); _Truename = _Maklocstr(_Lobj . _Gettrue(), (_Elem *)0); } virtual _Elem do_decimal_point() const { return (_Dp); } virtual _Elem do_thousands_sep() const { return (_Kseparator); } virtual string do_grouping() const { return (string(_Grouping)); } virtual string_type do_falsename() const { return (string_type(_Falsename)); } virtual string_type do_truename() const { return (string_type(_Truename)); } private: const char *_Grouping; _Elem _Dp; _Elem _Kseparator; const _Elem *_Falsename; const _Elem *_Truename; }; typedef numpunct _Npc; typedef numpunct _Npwc; template class numpunct_byname : public numpunct<_Elem> { public: explicit numpunct_byname(const char *_Locname, size_t _Refs = 0) : numpunct<_Elem>(_Locinfo(_Locname), _Refs) {} protected: virtual ~numpunct_byname() {} }; template locale::id numpunct<_Elem>::id; template > > class num_get : public locale::facet { public: typedef numpunct<_Elem> _Mypunct; typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> > _Mystr; static size_t _Getcat(const locale::facet **_Ppf = 0) { if (_Ppf != 0 && *_Ppf == 0) *_Ppf = new num_get<_Elem, _InIt>; return (1); } static locale::id id; protected: virtual ~num_get() {} protected: void _Init(const _Locinfo&) {} public: explicit num_get(size_t _Refs = 0) : locale::facet(_Refs) { _Init(_Locinfo()); } num_get(const _Locinfo& _Lobj, size_t _Refs = 0) : locale::facet(_Refs) { _Init(_Lobj); } typedef _Elem char_type; typedef _InIt iter_type; _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, _Bool& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, unsigned short& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, unsigned int& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, long& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, unsigned long& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, long long& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, unsigned long long& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, float& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, double& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, long double& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } _InIt get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, void *& _Val) const { return (do_get(_First, _Last, _Ios, _State, _Val)); } protected: virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, _Bool& _Val) const { int _Ans = -1; if (_Ios.flags() & ios_base::boolalpha) { const _Mypunct& _Fac = use_facet<_Mypunct >(_Ios . getloc()); _Mystr _Str((typename _Mystr::size_type)1, (char_type)0); _Str += _Fac.falsename(); _Str += (char_type)0; _Str += _Fac.truename(); _Ans = _Getloctxt(_First, _Last, (size_t)2, _Str.c_str()); } else { char _Ac[32], *_Ep; errno = 0; const unsigned long _Ulo = strtoul(_Ac, &_Ep, _Getifld(_Ac, _First, _Last, _Ios.flags(), _Ios.getloc())); if (_Ep != _Ac && errno == 0 && _Ulo <= 1) _Ans = _Ulo; } if (_First == _Last) _State |= ios_base::eofbit; if (_Ans < 0) _State |= ios_base::failbit; else _Val = _Ans != 0; return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, unsigned short& _Val) const { char _Ac[32], *_Ep; errno = 0; int _Base = _Getifld(_Ac, _First, _Last, _Ios.flags(), _Ios.getloc()); char *_Ptr = _Ac[0] == '-' ? _Ac + 1 : _Ac; const unsigned long _Ans = strtoul(_Ptr, &_Ep, _Base); if (_First == _Last) _State |= ios_base::eofbit; if (_Ep == _Ptr || errno != 0 || 65535 < _Ans) _State |= ios_base::failbit; else _Val = (unsigned short)(_Ac[0] == '-' ? 0 -_Ans : _Ans); return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, unsigned int& _Val) const { char _Ac[32], *_Ep; errno = 0; int _Base = _Getifld(_Ac, _First, _Last, _Ios.flags(), _Ios.getloc()); char *_Ptr = _Ac[0] == '-' ? _Ac + 1 : _Ac; const unsigned long _Ans = strtoul(_Ptr, &_Ep, _Base); if (_First == _Last) _State |= ios_base::eofbit; if (_Ep == _Ptr || errno != 0 || 0xffffffff < _Ans) _State |= ios_base::failbit; else _Val = _Ac[0] == '-' ? 0 -_Ans : _Ans; return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, long& _Val) const { char _Ac[32], *_Ep; errno = 0; const long _Ans = strtol(_Ac, &_Ep, _Getifld(_Ac, _First, _Last, _Ios.flags(), _Ios.getloc())); if (_First == _Last) _State |= ios_base::eofbit; if (_Ep == _Ac || errno != 0) _State |= ios_base::failbit; else _Val = _Ans; return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, unsigned long& _Val) const { char _Ac[32], *_Ep; errno = 0; const unsigned long _Ans = strtoul(_Ac, &_Ep, _Getifld(_Ac, _First, _Last, _Ios.flags(), _Ios.getloc())); if (_First == _Last) _State |= ios_base::eofbit; if (_Ep == _Ac || errno != 0) _State |= ios_base::failbit; else _Val = _Ans; return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, long long& _Val) const { char _Ac[32]; errno = 0; _Getifld(_Ac, _First, _Last, _Ios.flags(), _Ios.getloc()); const long long _Ans = strtoll(_Ac, 0, 10); if (_First == _Last) _State |= ios_base::eofbit; if (errno != 0) _State |= ios_base::failbit; else _Val = _Ans; return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, unsigned long long& _Val) const { char _Ac[32]; errno = 0; _Getifld(_Ac, _First, _Last, _Ios.flags(), _Ios.getloc()); const unsigned long long _Ans = strtoull(_Ac, 0, 10); if (_First == _Last) _State |= ios_base::eofbit; if (errno != 0) _State |= ios_base::failbit; else _Val = _Ans; return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, float& _Val) const { char _Ac[8 + 36 + 16], *_Ep; errno = 0; const float _Ans = _Stof(_Ac, &_Ep, _Getffld(_Ac, _First, _Last, _Ios.getloc())); if (_First == _Last) _State |= ios_base::eofbit; if (_Ep == _Ac || errno != 0) _State |= ios_base::failbit; else _Val = _Ans; return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, double& _Val) const { char _Ac[8 + 36 + 16], *_Ep; errno = 0; const double _Ans = _Stod(_Ac, &_Ep, _Getffld(_Ac, _First, _Last, _Ios.getloc())); if (_First == _Last) _State |= ios_base::eofbit; if (_Ep == _Ac || errno != 0) _State |= ios_base::failbit; else _Val = _Ans; return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, long double& _Val) const { char _Ac[8 + 36 + 16], *_Ep; errno = 0; const long double _Ans = _Stold(_Ac, &_Ep, _Getffld(_Ac, _First, _Last, _Ios.getloc())); if (_First == _Last) _State |= ios_base::eofbit; if (_Ep == _Ac || errno != 0) _State |= ios_base::failbit; else _Val = _Ans; return (_First); } virtual _InIt do_get(_InIt _First, _InIt _Last, ios_base& _Ios, ios_base::iostate& _State, void *& _Val) const { union _Pvlo { void *_Pv; unsigned long _Lo[1 + (sizeof (void *) - 1) / sizeof (unsigned long)]; } _Union; const int _NL = sizeof (_Union._Lo) / sizeof (unsigned long); for (int _Off = 0; ; ++_First) { char _Ac[32], *_Ep; errno = 0; _Union._Lo[_Off] = strtoul(_Ac, &_Ep, _Getifld(_Ac, _First, _Last, ios_base::hex, _Ios.getloc())); if (_First == _Last) _State |= ios_base::eofbit; if (_Ep == _Ac || errno != 0) { _State |= ios_base::failbit; break; } if (_NL <= ++_Off) break; if (_First == _Last || *_First != _Widen(':', (_Elem *)0)) { _State |= ios_base::failbit; break; }} if (!(_State & ios_base::failbit)) _Val = _Union._Pv; return (_First); } private: static int _Getifld(char *_Ac, _InIt& _First, _InIt& _Last, ios_base::fmtflags _Basefield, const locale& _Loc) { const _Elem _E0 = _Widen('0', (_Elem *)0); const _Mypunct& _Fac = use_facet<_Mypunct >(_Loc); const string _Grouping = _Fac.grouping(); const _Elem _Kseparator = _Fac.thousands_sep(); char *_Ptr = _Ac; if (_First == _Last) ; else if (*_First == _Widen('+', (_Elem *)0)) *_Ptr++ = '+', ++_First; else if (*_First == _Widen('-', (_Elem *)0)) *_Ptr++ = '-', ++_First; _Basefield &= ios_base::basefield; int _Base = _Basefield == ios_base::oct ? 8 : _Basefield == ios_base::hex ? 16 : _Basefield == ios_base::_Fmtzero ? 0 : 10; bool _Seendigit = false; bool _Nonzero = false; if (_First != _Last && *_First == _E0) { _Seendigit = true, ++_First; if (_First != _Last && (*_First == _Widen('x', (_Elem *)0) || *_First == _Widen('X', (_Elem *)0)) && (_Base == 0 || _Base == 16)) _Base = 16, _Seendigit = false, ++_First; else if (_Base == 0) _Base = 8; } int _Dlen = _Base == 0 || _Base == 10 ? 10 : _Base == 8 ? 8 : 16 + 6; string _Groups((size_t)1, (char)_Seendigit); size_t _Group = 0; for (char *const _Pe = &_Ac[32 - 1]; _First != _Last; ++_First) if (memchr("0123456789abcdefABCDEF", *_Ptr = _Narrow(static_cast<_Elem>(*_First)), _Dlen) != 0) { if ((_Nonzero || *_Ptr != '0') && _Ptr < _Pe) ++_Ptr, _Nonzero = true; _Seendigit = true; if (_Groups[_Group] != 127) ++_Groups[_Group]; } else if (_Groups[_Group] == '\0' || _Kseparator == (_Elem)0 || *_First != _Kseparator) break; else { _Groups.append((string::size_type)1, '\0'); ++_Group; } if (_Group == 0) ; else if ('\0' < _Groups[_Group]) ++_Group; else _Seendigit = false; for (const char *_Pg = _Grouping.c_str(); _Seendigit && 0 < _Group; ) if (*_Pg == 127) break; else if (0 < --_Group && *_Pg != _Groups[_Group] || 0 == _Group && *_Pg < _Groups[_Group]) _Seendigit = false; else if ('\0' < _Pg[1]) ++_Pg; if (_Seendigit && !_Nonzero) *_Ptr++ = '0'; else if (!_Seendigit) _Ptr = _Ac; *_Ptr = '\0'; return (_Base); } static int _Getffld(char *_Ac, _InIt& _First, _InIt &_Last, const locale& _Loc) { const _Elem _E0 = _Widen('0', (_Elem *)0); const _Mypunct& _Fac = use_facet<_Mypunct >(_Loc); char *_Ptr = _Ac; if (_First == _Last) ; else if (*_First == _Widen('+', (_Elem *)0)) *_Ptr++ = '+', ++_First; else if (*_First == _Widen('-', (_Elem *)0)) *_Ptr++ = '-', ++_First; bool _Seendigit = false; for (; _First != _Last && *_First == _E0; _Seendigit = true, ++_First) ; if (_Seendigit) *_Ptr++ = '0'; int _Significant = 0; int _Pten = 0; for (; _First != _Last && (::isdigit)(*_Ptr = _Narrow(static_cast<_Elem>(*_First))); _Seendigit = true, ++_First) if (_Significant < 36) ++_Ptr, ++_Significant; else ++_Pten; if (_First != _Last && *_First == _Fac.decimal_point()) *_Ptr++ = localeconv()->decimal_point[0], ++_First; if (_Significant == 0) { for (; _First != _Last && *_First == _E0; _Seendigit = true, ++_First) --_Pten; if (_Pten < 0) *_Ptr++ = '0', ++_Pten; } for (; _First != _Last && (::isdigit)(*_Ptr = _Narrow(static_cast<_Elem>(*_First))); _Seendigit = true, ++_First) if (_Significant < 36) ++_Ptr, ++_Significant; if (_Seendigit && _First != _Last && (*_First == _Widen('e', (_Elem *)0) || *_First == _Widen('E', (_Elem *)0))) { *_Ptr++ = 'e', ++_First; _Seendigit = false, _Significant = 0; if (_First == _Last) ; else if (*_First == _Widen('+', (_Elem *)0)) *_Ptr++ = '+', ++_First; else if (*_First == _Widen('-', (_Elem *)0)) *_Ptr++ = '-', ++_First; for (; _First != _Last && *_First == _E0; ) _Seendigit = true, ++_First; if (_Seendigit) *_Ptr++ = '0'; for (; _First != _Last && (::isdigit)(*_Ptr = _Narrow(static_cast<_Elem>(*_First))); _Seendigit = true, ++_First) if (_Significant < 8) ++_Ptr, ++_Significant; } if (!_Seendigit) _Ptr = _Ac; *_Ptr = '\0'; return (_Pten); }; }; template locale::id num_get<_Elem, _InIt>::id; template > > class num_put : public locale::facet { public: typedef numpunct<_Elem> _Mypunct; typedef basic_string<_Elem, char_traits<_Elem>, allocator<_Elem> > _Mystr; static size_t _Getcat(const locale::facet **_Ppf = 0) { if (_Ppf != 0 && *_Ppf == 0) *_Ppf = new num_put<_Elem, _OutIt>; return (1); } static locale::id id; protected: virtual ~num_put() {} protected: void _Init(const _Locinfo&) {} public: explicit num_put(size_t _Refs = 0) : locale::facet(_Refs) { _Init(_Locinfo()); } num_put(const _Locinfo& _Lobj, size_t _Refs = 0) : locale::facet(_Refs) { _Init(_Lobj); } typedef _Elem char_type; typedef _OutIt iter_type; _OutIt put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, _Bool _Val) const { return (do_put(_Dest, _Ios, _Fill, _Val)); } _OutIt put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, long _Val) const { return (do_put(_Dest, _Ios, _Fill, _Val)); } _OutIt put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, unsigned long _Val) const { return (do_put(_Dest, _Ios, _Fill, _Val)); } _OutIt put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, long long _Val) const { return (do_put(_Dest, _Ios, _Fill, _Val)); } _OutIt put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, unsigned long long _Val) const { return (do_put(_Dest, _Ios, _Fill, _Val)); } _OutIt put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, double _Val) const { return (do_put(_Dest, _Ios, _Fill, _Val)); } _OutIt put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, long double _Val) const { return (do_put(_Dest, _Ios, _Fill, _Val)); } _OutIt put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, const void *_Val) const { return (do_put(_Dest, _Ios, _Fill, _Val)); } protected: virtual _OutIt do_put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, _Bool _Val) const { if (!(_Ios.flags() & ios_base::boolalpha)) return (do_put(_Dest, _Ios, _Fill, (long)_Val)); else { const _Mypunct& _Fac = use_facet<_Mypunct >(_Ios . getloc()); const _Mystr _Str(_Val ? _Fac.truename() : _Fac.falsename()); size_t _Fillcount = _Ios.width() <= 0 || (size_t)_Ios.width() <= _Str.size() ? 0 : (size_t)_Ios.width() - _Str.size(); if ((_Ios.flags() & ios_base::adjustfield) != ios_base::left) { _Dest = _Rep(_Dest, _Fill, _Fillcount); _Fillcount = 0; } _Dest = _Put(_Dest, _Str.c_str(), _Str.size()); _Ios.width(0); return (_Rep(_Dest, _Fill, _Fillcount)); }} virtual _OutIt do_put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, long _Val) const { char _Buf[2 * 32], _Fmt[6]; return (_Iput(_Dest, _Ios, _Fill, _Buf, sprintf(_Buf, _Ifmt(_Fmt, "ld", _Ios.flags()), _Val))); } virtual _OutIt do_put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, unsigned long _Val) const { char _Buf[2 * 32], _Fmt[6]; return (_Iput(_Dest, _Ios, _Fill, _Buf, sprintf(_Buf, _Ifmt(_Fmt, "lu", _Ios.flags()), _Val))); } virtual _OutIt do_put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, long long _Val) const { char _Buf[2 * 32], _Fmt[6]; return (_Iput(_Dest, _Ios, _Fill, _Buf, sprintf(_Buf, _Ifmt(_Fmt, "Ld", _Ios.flags()), _Val))); } virtual _OutIt do_put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, unsigned long long _Val) const { char _Buf[2 * 32], _Fmt[6]; return (_Iput(_Dest, _Ios, _Fill, _Buf, sprintf(_Buf, _Ifmt(_Fmt, "Lu", _Ios.flags()), _Val))); } virtual _OutIt do_put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, double _Val) const { char _Buf[8 + 36 + 64], _Fmt[8]; streamsize _Precision = _Ios.precision() <= 0 && !(_Ios.flags() & ios_base::fixed) ? 6 : _Ios.precision(); int _Significance = 36 < _Precision ? 36 : _Precision; _Precision -= _Significance; size_t _Beforepoint = 0; size_t _Afterpoint = 0; if ((_Ios.flags() & ios_base::floatfield) == ios_base::fixed) { bool _Signed = _Val < 0; if (_Signed) _Val = -_Val; for (; 1e35 <= _Val && _Beforepoint < 5000; _Beforepoint += 10) _Val /= 1e10; if (0 < _Val) for (; 10 <= _Precision && _Val <= 1e-35 && _Afterpoint < 5000; _Afterpoint += 10) { _Val *= 1e10; _Precision -= 10; } if (_Signed) _Val = -_Val; } return (_Fput(_Dest, _Ios, _Fill, _Buf, _Beforepoint, _Afterpoint, _Precision, sprintf(_Buf, _Ffmt(_Fmt, 0, _Ios.flags()), _Significance, _Val))); } virtual _OutIt do_put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, long double _Val) const { char _Buf[8 + 36 + 64], _Fmt[8]; streamsize _Precision = _Ios.precision() <= 0 && !(_Ios.flags() & ios_base::fixed) ? 6 : _Ios.precision(); int _Significance = 36 < _Precision ? 36 : _Precision; _Precision -= _Significance; size_t _Beforepoint = 0; size_t _Afterpoint = 0; if ((_Ios.flags() & ios_base::floatfield) == ios_base::fixed) { bool _Signed = _Val < 0; if (_Signed) _Val = -_Val; for (; 1e35 <= _Val && _Beforepoint < 5000; _Beforepoint += 10) _Val /= 1e10; if (0 < _Val) for (; 10 <= _Precision && _Val <= 1e-35 && _Afterpoint < 5000; _Afterpoint += 10) { _Val *= 1e10; _Precision -= 10; } if (_Signed) _Val = -_Val; } return (_Fput(_Dest, _Ios, _Fill, _Buf, _Beforepoint, _Afterpoint, _Precision, sprintf(_Buf, _Ffmt(_Fmt, 'L', _Ios.flags()), _Significance, _Val))); } virtual _OutIt do_put(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, const void *_Val) const { const int _NL = 1 + (sizeof (void *) - 1) / sizeof (unsigned long); char _Buf[(_NL + 1) * (32 + 1)]; int _Count = sprintf(_Buf, "%p", _Val); size_t _Fillcount = _Ios.width() <= 0 || _Ios.width() <= _Count ? 0 : (size_t)_Ios.width() - _Count; if ((_Ios.flags() & ios_base::adjustfield) != ios_base::left) { _Dest = _Rep(_Dest, _Fill, _Fillcount); _Fillcount = 0; } _Dest = _Putc(_Dest, _Buf, _Count); _Ios.width(0); return (_Rep(_Dest, _Fill, _Fillcount)); } static char *_Ffmt(char *_Fmt, char _Spec, ios_base::fmtflags _Flags) { char *_Ptr = _Fmt; *_Ptr++ = '%'; if (_Flags & ios_base::showpos) *_Ptr++ = '+'; if (_Flags & ios_base::showpoint) *_Ptr++ = '#'; *_Ptr++ = '.'; *_Ptr++ = '*'; if (_Spec != '\0') *_Ptr++ = _Spec; ios_base::fmtflags _Ffl = _Flags & ios_base::floatfield; *_Ptr++ = _Ffl == ios_base::fixed ? 'f' : _Ffl == ios_base::scientific ? 'e' : 'g'; *_Ptr = '\0'; return (_Fmt); } static _OutIt _Fput(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, const char *_Buf, size_t _Beforepoint, size_t _Afterpoint, size_t _Trailing, size_t _Count) { _Elem _E0 = _Widen('0', (_Elem *)0); size_t _Fillcount = _Beforepoint + _Afterpoint + _Trailing + _Count; _Fillcount = _Ios.width() <= 0 || (size_t)_Ios.width() <= _Fillcount ? 0 : (size_t)_Ios.width() - _Fillcount; ios_base::fmtflags _Adjustfield = _Ios.flags() & ios_base::adjustfield; if (_Adjustfield != ios_base::left && _Adjustfield != ios_base::internal) { _Dest = _Rep(_Dest, _Fill, _Fillcount); _Fillcount = 0; } else if (_Adjustfield == ios_base::internal) { if (0 < _Count && (*_Buf == '+' || *_Buf == '-')) { _Dest = _Putc(_Dest, _Buf, 1); ++_Buf, --_Count; } _Dest = _Rep(_Dest, _Fill, _Fillcount); _Fillcount = 0; } const char *_Ptr = (const char *)memchr(_Buf, localeconv()->decimal_point[0], _Count); if (_Ptr != 0) { const _Mypunct& _Fac = use_facet<_Mypunct >(_Ios . getloc()); size_t _Fracoffset = _Ptr - _Buf + 1; _Dest = _Putc(_Dest, _Buf, _Fracoffset - 1); _Dest = _Rep(_Dest, _E0, _Beforepoint); _Dest = _Rep(_Dest, _Fac.decimal_point(), 1); _Dest = _Rep(_Dest, _E0, _Afterpoint); _Buf += _Fracoffset, _Count -= _Fracoffset; } if ((_Ptr = (const char *)memchr(_Buf, 'e', _Count)) != 0) { size_t _Expoffset = _Ptr - _Buf + 1; _Dest = _Putc(_Dest, _Buf, _Expoffset - 1); _Dest = _Rep(_Dest, _E0, _Trailing), _Trailing = 0; _Dest = _Putc(_Dest, _Ios.flags() & ios_base::uppercase ? "E" : "e", 1); _Buf += _Expoffset, _Count -= _Expoffset; } _Dest = _Putc(_Dest, _Buf, _Count); _Dest = _Rep(_Dest, _E0, _Trailing); _Ios.width(0); return (_Rep(_Dest, _Fill, _Fillcount)); } static char *_Ifmt(char *_Fmt, const char *_Spec, ios_base::fmtflags _Flags) { char *_Ptr = _Fmt; *_Ptr++ = '%'; if (_Flags & ios_base::showpos) *_Ptr++ = '+'; if (_Flags & ios_base::showbase) *_Ptr++ = '#'; *_Ptr++ = _Spec[0]; ios_base::fmtflags _Basefield = _Flags & ios_base::basefield; *_Ptr++ = _Basefield == ios_base::oct ? 'o' : _Basefield != ios_base::hex ? _Spec[1] : _Flags & ios_base::uppercase ? 'X' : 'x'; *_Ptr = '\0'; return (_Fmt); } static _OutIt _Iput(_OutIt _Dest, ios_base& _Ios, _Elem _Fill, char *_Buf, size_t _Count) { const size_t _Prefix = *_Buf == '+' || *_Buf == '-' ? 1 : *_Buf == '0' && (_Buf[1] == 'x' || _Buf[1] == 'X') ? 2 : 0; const _Mypunct& _Fac = use_facet<_Mypunct >(_Ios . getloc()); const string _Grouping = _Fac.grouping(); const _Elem _Kseparator = _Fac.thousands_sep(); bool _Grouped = '\0' < *_Grouping.c_str(); if (_Grouped) { const char *_Pg = _Grouping.c_str(); size_t _Off = _Count; for (_Grouped = false; *_Pg != 127 && '\0' < *_Pg && (size_t)*_Pg < _Off - _Prefix; _Grouped = true) { _Off -= *_Pg; memmove(&_Buf[_Off + 1], &_Buf[_Off], _Count + 1 - _Off); _Buf[_Off] = ',', ++_Count; if ('\0' < _Pg[1]) ++_Pg; }} size_t _Fillcount = _Ios.width() <= 0 || (size_t)_Ios.width() <= _Count ? 0 : (size_t)_Ios.width() - _Count; ios_base::fmtflags _Adjustfield = _Ios.flags() & ios_base::adjustfield; if (_Adjustfield != ios_base::left && _Adjustfield != ios_base::internal) { _Dest = _Rep(_Dest, _Fill, _Fillcount); _Fillcount = 0; } else if (_Adjustfield == ios_base::internal) { _Dest = _Putc(_Dest, _Buf, _Prefix); _Buf += _Prefix, _Count -= _Prefix; _Dest = _Rep(_Dest, _Fill, _Fillcount), _Fillcount = 0; } if (!_Grouped) _Dest = _Putc(_Dest, _Buf, _Count); else for (; ; ++_Buf, --_Count) { size_t _Groupsize = strcspn(_Buf, ","); _Dest = _Putc(_Dest, _Buf, _Groupsize); _Buf += _Groupsize, _Count -= _Groupsize; if (_Count == 0) break; if (_Kseparator != (_Elem)0) _Dest = _Rep(_Dest, _Kseparator, 1); } _Ios.width(0); return (_Rep(_Dest, _Fill, _Fillcount)); } static _OutIt _Put(_OutIt _Dest, const _Elem *_Ptr, size_t _Count) { for (; 0 < _Count; --_Count, ++_Dest, ++_Ptr) *_Dest = *_Ptr; return (_Dest); } static _OutIt _Putc(_OutIt _Dest, const char *_Ptr, size_t _Count) { for (; 0 < _Count; --_Count, ++_Dest, ++_Ptr) *_Dest = _Widen(*_Ptr, (_Elem *)0); return (_Dest); } static _OutIt _Rep(_OutIt _Dest, _Elem _Char, size_t _Count) { for (; 0 < _Count; --_Count, ++_Dest) *_Dest = _Char; return (_Dest); } }; template locale::id num_put<_Elem, _OutIt>::id; } #line 5 "/usr/include/CC/ios" namespace std { template class basic_ios : public ios_base { public: typedef basic_ios<_Elem, _Traits> _Myt; typedef basic_ostream<_Elem, _Traits> _Myos; typedef basic_streambuf<_Elem, _Traits> _Mysb; typedef ctype<_Elem> _Ctype; typedef _Elem char_type; typedef _Traits traits_type; typedef typename _Traits::int_type int_type; typedef typename _Traits::pos_type pos_type; typedef typename _Traits::off_type off_type; explicit basic_ios(_Mysb *_Strbuf) { init(_Strbuf); } virtual ~basic_ios() {} void clear(iostate _State = goodbit, bool _Except = false) { ios_base::clear((iostate)(_Mystrbuf == 0 ? (int)_State | (int)badbit : (int)_State), _Except); } void clear(io_state _State) { clear((iostate)_State); } void setstate(iostate _State, bool _Except = false) { if (_State != goodbit) clear((iostate)((int)rdstate() | (int)_State), _Except); } void setstate(io_state _State) { setstate((iostate)_State); } _Myt& copyfmt(const _Myt& _Right) { _Tiestr = _Right.tie(); _Fillch = _Right.fill(); ios_base::copyfmt(_Right); return (*this); } _Myos *tie() const { return (_Tiestr); } _Myos *tie(_Myos *_Newtie) { _Myos *_Oldtie = _Tiestr; _Tiestr = _Newtie; return (_Oldtie); } _Mysb *rdbuf() const { return (_Mystrbuf); } _Mysb *rdbuf(_Mysb *_Strbuf) { _Mysb *_Oldstrbuf = _Mystrbuf; _Mystrbuf = _Strbuf; clear(); return (_Oldstrbuf); } locale imbue(const locale& _Locale) { if (rdbuf() != 0) rdbuf()->pubimbue(_Locale); return (ios_base::imbue(_Locale)); } _Elem fill() const { return (_Fillch); } _Elem fill(_Elem _Newfill) { _Elem _Oldfill = _Fillch; _Fillch = _Newfill; return (_Oldfill); } char narrow(_Elem _Char, char _Default = '\0') const { const _Ctype& _Facet = use_facet<_Ctype >(getloc()); return (_Facet.narrow(_Char, _Default)); } _Elem widen(char _Byte) const { const _Ctype& _Facet = use_facet<_Ctype >(getloc()); return (_Facet.widen(_Byte)); } protected: void init(_Mysb *_Strbuf = 0, bool _Isstd = false) { _Mystrbuf = _Strbuf; _Tiestr = 0; _Fillch = _Widen(' ', (_Elem *)0); _Init(); if (_Mystrbuf == 0) setstate(badbit); if (_Isstd) _Addstd(); } basic_ios() {} private: basic_ios(const _Myt&); basic_ios& operator=(const _Myt&); _Mysb *_Mystrbuf; _Myos *_Tiestr; _Elem _Fillch; }; inline ios_base& boolalpha(ios_base& _Iosbase) { _Iosbase.setf(ios_base::boolalpha); return (_Iosbase); } inline ios_base& dec(ios_base& _Iosbase) { _Iosbase.setf(ios_base::dec, ios_base::basefield); return (_Iosbase); } inline ios_base& fixed(ios_base& _Iosbase) { _Iosbase.setf(ios_base::fixed, ios_base::floatfield); return (_Iosbase); } inline ios_base& hex(ios_base& _Iosbase) { _Iosbase.setf(ios_base::hex, ios_base::basefield); return (_Iosbase); } inline ios_base& internal(ios_base& _Iosbase) { _Iosbase.setf(ios_base::internal, ios_base::adjustfield); return (_Iosbase); } inline ios_base& left(ios_base& _Iosbase) { _Iosbase.setf(ios_base::left, ios_base::adjustfield); return (_Iosbase); } inline ios_base& noboolalpha(ios_base& _Iosbase) { _Iosbase.unsetf(ios_base::boolalpha); return (_Iosbase); } inline ios_base& noshowbase(ios_base& _Iosbase) { _Iosbase.unsetf(ios_base::showbase); return (_Iosbase); } inline ios_base& noshowpoint(ios_base& _Iosbase) { _Iosbase.unsetf(ios_base::showpoint); return (_Iosbase); } inline ios_base& noshowpos(ios_base& _Iosbase) { _Iosbase.unsetf(ios_base::showpos); return (_Iosbase); } inline ios_base& noskipws(ios_base& _Iosbase) { _Iosbase.unsetf(ios_base::skipws); return (_Iosbase); } inline ios_base& nounitbuf(ios_base& _Iosbase) { _Iosbase.unsetf(ios_base::unitbuf); return (_Iosbase); } inline ios_base& nouppercase(ios_base& _Iosbase) { _Iosbase.unsetf(ios_base::uppercase); return (_Iosbase); } inline ios_base& oct(ios_base& _Iosbase) { _Iosbase.setf(ios_base::oct, ios_base::basefield); return (_Iosbase); } inline ios_base& right(ios_base& _Iosbase) { _Iosbase.setf(ios_base::right, ios_base::adjustfield); return (_Iosbase); } inline ios_base& scientific(ios_base& _Iosbase) { _Iosbase.setf(ios_base::scientific, ios_base::floatfield); return (_Iosbase); } inline ios_base& showbase(ios_base& _Iosbase) { _Iosbase.setf(ios_base::showbase); return (_Iosbase); } inline ios_base& showpoint(ios_base& _Iosbase) { _Iosbase.setf(ios_base::showpoint); return (_Iosbase); } inline ios_base& showpos(ios_base& _Iosbase) { _Iosbase.setf(ios_base::showpos); return (_Iosbase); } inline ios_base& skipws(ios_base& _Iosbase) { _Iosbase.setf(ios_base::skipws); return (_Iosbase); } inline ios_base& unitbuf(ios_base& _Iosbase) { _Iosbase.setf(ios_base::unitbuf); return (_Iosbase); } inline ios_base& uppercase(ios_base& _Iosbase) { _Iosbase.setf(ios_base::uppercase); return (_Iosbase); } } #line 5 "/usr/include/CC/ostream" namespace std { template class basic_ostream : virtual public basic_ios<_Elem, _Traits> { public: typedef basic_ostream<_Elem, _Traits> _Myt; typedef basic_ios<_Elem, _Traits> _Myios; typedef basic_streambuf<_Elem, _Traits> _Mysb; typedef ostreambuf_iterator<_Elem, _Traits> _Iter; typedef num_put<_Elem, _Iter> _Nput; explicit basic_ostream(basic_streambuf<_Elem, _Traits> *_Strbuf, bool _Isstd = false) { _Myios::init(_Strbuf, _Isstd); } basic_ostream(_Uninitialized) { ios_base::_Addstd(); } virtual ~basic_ostream() {} typedef typename _Traits::int_type int_type; typedef typename _Traits::pos_type pos_type; typedef typename _Traits::off_type off_type; class sentry { public: explicit sentry(_Myt& _Ostr) : _Lock(2), _Myostr(_Ostr) { if (_Ostr.good() && _Ostr.tie() != 0) _Ostr.tie()->flush(); _Ok = _Ostr.good(); } ~sentry() { if (!uncaught_exception()) _Myostr._Osfx(); } operator bool() const { return (_Ok); } private: sentry(const sentry&); sentry& operator=(const sentry&); _Lockit _Lock; bool _Ok; _Myt& _Myostr; }; void _Osfx() { if (ios_base::flags() & ios_base::unitbuf) flush(); } _Myt& operator<<(_Myt& (*_Fn)(_Myt&)) { return ((*_Fn)(*this)); } _Myt& operator<<(_Myios& (*_Fn)(_Myios&)) { (*_Fn)(*(_Myios *)this); return (*this); } _Myt& operator<<(ios_base& (*_Fn)(ios_base&)) { (*_Fn)(*(ios_base *)this); return (*this); } _Myt& operator<<(_Bool _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(short _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); ios_base::fmtflags _Bfl = ios_base::flags() & ios_base::basefield; long _Tmp = (_Bfl == ios_base::oct || _Bfl == ios_base::hex) ? (long)(unsigned short)_Val : (long)_Val; try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Tmp).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(unsigned short _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), (unsigned long)_Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(int _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); ios_base::fmtflags _Bfl = ios_base::flags() & ios_base::basefield; long _Tmp = (_Bfl == ios_base::oct || _Bfl == ios_base::hex) ? (long)(unsigned int)_Val : (long)_Val; try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Tmp).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(unsigned int _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), (unsigned long)_Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(long _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(unsigned long _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(long long _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(unsigned long long _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(float _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), (double)_Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(double _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(long double _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(const void *_Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nput& _Fac = use_facet<_Nput >(ios_base::getloc()); try { if (_Fac.put(_Iter(_Myios::rdbuf()), *this, _Myios::fill(), _Val).failed()) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator<<(_Mysb *_Pstrbuf) { ios_base::iostate _State = ios_base::goodbit; bool _Copied = false; const sentry _Ok(*this); if (_Ok && _Pstrbuf != 0) for (int_type _Meta = _Traits::eof(); ; _Copied = true) { try { _Meta = _Traits::eq_int_type(_Traits::eof(), _Meta) ? _Pstrbuf->sgetc() : _Pstrbuf->snextc(); } catch (...) { _Myios::setstate(ios_base::failbit); throw; } if (_Traits::eq_int_type(_Traits::eof(), _Meta)) break; try { if (_Traits::eq_int_type(_Traits::eof(), _Myios::rdbuf()->sputc( _Traits::to_char_type(_Meta)))) { _State |= ios_base::badbit; break; } } catch (...) { _Myios::setstate(ios_base::badbit, true); }} ios_base::width(0); _Myios::setstate(!_Copied ? _State | ios_base::failbit : _State); return (*this); } _Myt& put(_Elem _Char) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (!_Ok) _State |= ios_base::badbit; else { try { if (_Traits::eq_int_type(_Traits::eof(), _Myios::rdbuf()->sputc(_Char))) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& write(const _Elem *_Str, streamsize _Count) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (!_Ok) _State |= ios_base::badbit; else { try { if (_Myios::rdbuf()->sputn(_Str, _Count) != _Count) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& flush() { ios_base::iostate _State = ios_base::goodbit; if (!ios_base::fail() && _Myios::rdbuf()->pubsync() == -1) _State |= ios_base::badbit; _Myios::setstate(_State); return (*this); } _Myt& seekp(pos_type _Pos) { if (!ios_base::fail()) _Myios::rdbuf()->pubseekpos(_Pos, ios_base::out); return (*this); } _Myt& seekp(off_type _Off, ios_base::seekdir _Way) { if (!ios_base::fail()) _Myios::rdbuf()->pubseekoff(_Off, _Way, ios_base::out); return (*this); } pos_type tellp() { if (!ios_base::fail()) return (_Myios::rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out)); else return (pos_type(_BADOFF)); } }; template inline basic_ostream<_Elem, _Traits>& operator<<( basic_ostream<_Elem, _Traits>& _Ostr, const char *_Val) { ios_base::iostate _State = ios_base::goodbit; streamsize _Count = (streamsize)strlen(_Val); streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count ? 0 : _Ostr.width() - _Count; const typename basic_ostream<_Elem, _Traits>::sentry _Ok(_Ostr); if (!_Ok) _State |= ios_base::badbit; else { try { const ctype<_Elem>& _Fac = use_facet >(_Ostr . getloc()); if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left) for (; 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { _State |= ios_base::badbit; break; } for (; _State == ios_base::goodbit && 0 < _Count; --_Count, ++_Val) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Fac.widen(*_Val)))) _State |= ios_base::badbit; if (_State == ios_base::goodbit) for (; 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { _State |= ios_base::badbit; break; } _Ostr.width(0); } catch (...) { _Ostr.setstate(ios_base::badbit, true); }} _Ostr.setstate(_State); return (_Ostr); } template inline basic_ostream<_Elem, _Traits>& operator<<( basic_ostream<_Elem, _Traits>& _Ostr, char _Char) { ios_base::iostate _State = ios_base::goodbit; const typename basic_ostream<_Elem, _Traits>::sentry _Ok(_Ostr); if (_Ok) { const ctype<_Elem>& _Fac = use_facet >(_Ostr . getloc()); streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1; try { if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left) for (; _State == ios_base::goodbit && 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) _State |= ios_base::badbit; if (_State == ios_base::goodbit && _Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Fac.widen(_Char)))) _State |= ios_base::badbit; for (; _State == ios_base::goodbit && 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) _State |= ios_base::badbit; } catch (...) { _Ostr.setstate(ios_base::badbit, true); }} _Ostr.width(0); _Ostr.setstate(_State); return (_Ostr); } template inline basic_ostream& operator<<( basic_ostream& _Ostr, const char *_Val) { typedef char _Elem; typedef basic_ostream<_Elem, _Traits> _Myos; ios_base::iostate _State = ios_base::goodbit; streamsize _Count = (streamsize)_Traits::length(_Val); streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count ? 0 : _Ostr.width() - _Count; const typename _Myos::sentry _Ok(_Ostr); if (!_Ok) _State |= ios_base::badbit; else { try { if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left) for (; 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { _State |= ios_base::badbit; break; } if (_State == ios_base::goodbit && _Ostr.rdbuf()->sputn(_Val, _Count) != _Count) _State |= ios_base::badbit; if (_State == ios_base::goodbit) for (; 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { _State |= ios_base::badbit; break; } _Ostr.width(0); } catch (...) { _Ostr.setstate(ios_base::badbit, true); }} _Ostr.setstate(_State); return (_Ostr); } template inline basic_ostream& operator<<( basic_ostream& _Ostr, char _Char) { typedef char _Elem; typedef basic_ostream<_Elem, _Traits> _Myos; ios_base::iostate _State = ios_base::goodbit; const typename _Myos::sentry _Ok(_Ostr); if (_Ok) { streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1; try { if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left) for (; _State == ios_base::goodbit && 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) _State |= ios_base::badbit; if (_State == ios_base::goodbit && _Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Char))) _State |= ios_base::badbit; for (; _State == ios_base::goodbit && 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) _State |= ios_base::badbit; } catch (...) { _Ostr.setstate(ios_base::badbit, true); }} _Ostr.width(0); _Ostr.setstate(_State); return (_Ostr); } template inline basic_ostream<_Elem, _Traits>& operator<<( basic_ostream<_Elem, _Traits>& _Ostr, const _Elem *_Val) { typedef basic_ostream<_Elem, _Traits> _Myos; ios_base::iostate _State = ios_base::goodbit; streamsize _Count = (streamsize)_Traits::length(_Val); streamsize _Pad = _Ostr.width() <= 0 || _Ostr.width() <= _Count ? 0 : _Ostr.width() - _Count; const typename _Myos::sentry _Ok(_Ostr); if (!_Ok) _State |= ios_base::badbit; else { try { if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left) for (; 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { _State |= ios_base::badbit; break; } if (_State == ios_base::goodbit && _Ostr.rdbuf()->sputn(_Val, _Count) != _Count) _State |= ios_base::badbit; if (_State == ios_base::goodbit) for (; 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { _State |= ios_base::badbit; break; } _Ostr.width(0); } catch (...) { _Ostr.setstate(ios_base::badbit, true); }} _Ostr.setstate(_State); return (_Ostr); } template inline basic_ostream<_Elem, _Traits>& operator<<( basic_ostream<_Elem, _Traits>& _Ostr, _Elem _Char) { typedef basic_ostream<_Elem, _Traits> _Myos; ios_base::iostate _State = ios_base::goodbit; const typename _Myos::sentry _Ok(_Ostr); if (_Ok) { streamsize _Pad = _Ostr.width() <= 1 ? 0 : _Ostr.width() - 1; try { if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left) for (; _State == ios_base::goodbit && 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) _State |= ios_base::badbit; if (_State == ios_base::goodbit && _Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Char))) _State |= ios_base::badbit; for (; _State == ios_base::goodbit && 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) _State |= ios_base::badbit; } catch (...) { _Ostr.setstate(ios_base::badbit, true); }} _Ostr.width(0); _Ostr.setstate(_State); return (_Ostr); } template inline basic_ostream& operator<<( basic_ostream& _Ostr, const signed char *_Val) { return (_Ostr << (const char *)_Val); } template inline basic_ostream& operator<<( basic_ostream& _Ostr, signed char _Char) { return (_Ostr << (char)_Char); } template inline basic_ostream& operator<<( basic_ostream& _Ostr, const unsigned char *_Val) { return (_Ostr << (const char *)_Val); } template inline basic_ostream& operator<<( basic_ostream& _Ostr, unsigned char _Char) { return (_Ostr << (char)_Char); } template inline basic_ostream<_Elem, _Traits>& endl(basic_ostream<_Elem, _Traits>& _Ostr) { _Ostr.put(_Ostr.widen('\n')); _Ostr.flush(); return (_Ostr); } template inline basic_ostream<_Elem, _Traits>& ends(basic_ostream<_Elem, _Traits>& _Ostr) { _Ostr.put(_Elem()); return (_Ostr); } template inline basic_ostream<_Elem, _Traits>& flush(basic_ostream<_Elem, _Traits>& _Ostr) { _Ostr.flush(); return (_Ostr); } } #line 5 "/usr/include/CC/istream" namespace std { template class basic_istream : virtual public basic_ios { public: typedef basic_istream _Myt; typedef basic_ios _Myios; typedef basic_streambuf _Mysb; typedef istreambuf_iterator _Iter; typedef ctype _Ctype; typedef num_get _Nget; explicit basic_istream(_Mysb *_Strbuf, bool _Isstd = false, bool _Noinit = false) : _Chcount(0) { if (!_Noinit) _Myios::init(_Strbuf, _Isstd); } basic_istream(_Uninitialized) { ios_base::_Addstd(); } virtual ~basic_istream() {} typedef typename _Traits::int_type int_type; typedef typename _Traits::pos_type pos_type; typedef typename _Traits::off_type off_type; class sentry { public: explicit sentry(_Myt& _Istr, bool _Noskip = false) : _Lock(2), _Ok(_Istr._Ipfx(_Noskip)) {} operator bool() const { return (_Ok); } private: sentry(const sentry&); sentry& operator=(const sentry&); _Lockit _Lock; bool _Ok; }; bool _Ipfx(bool _Noskip = false) { if (ios_base::good()) { if (_Myios::tie() != 0) _Myios::tie()->flush(); if (!_Noskip && ios_base::flags() & ios_base::skipws) { const _Ctype& _Facet = use_facet<_Ctype >(ios_base::getloc()); try { int_type _Meta = _Myios::rdbuf()->sgetc(); for (; ; _Meta = _Myios::rdbuf()->snextc()) if (_Traits::eq_int_type(_Traits::eof(), _Meta)) { _Myios::setstate(ios_base::eofbit); break; } else if (!_Facet.is(_Ctype::space, _Traits::to_char_type(_Meta))) break; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} if (ios_base::good()) return (true); } _Myios::setstate(ios_base::failbit); return (false); } _Myt& operator>>(_Myt& (*_Fn)(_Myt&)) { return ((*_Fn)(*this)); } _Myt& operator>>(_Myios& (*_Fn)(_Myios&)) { (*_Fn)(*(_Myios *)this); return (*this); } _Myt& operator>>(ios_base& (*_Fn)(ios_base&)) { (*_Fn)(*(ios_base *)this); return (*this); } _Myt& operator>>(_Bool& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(short& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { long _Tmp = 0; const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Tmp); } catch (...) { _Myios::setstate(ios_base::badbit, true); } if (_State & ios_base::failbit || _Tmp < (-32768) || 32767 < _Tmp) _State |= ios_base::failbit; else _Val = (short)_Tmp; } _Myios::setstate(_State); return (*this); } _Myt& operator>>(unsigned short& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(int& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { long _Tmp = 0; const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Tmp); } catch (...) { _Myios::setstate(ios_base::badbit, true); } if (_State & ios_base::failbit || _Tmp < (-0x7fffffff-1) || 0x7fffffff < _Tmp) _State |= ios_base::failbit; else _Val = _Tmp; } _Myios::setstate(_State); return (*this); } _Myt& operator>>(unsigned int& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(long& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(unsigned long& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(long long& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(unsigned long long& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(float& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(double& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(long double& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(void *& _Val) { ios_base::iostate _State = ios_base::goodbit; const sentry _Ok(*this); if (_Ok) { const _Nget& _Facet = use_facet<_Nget >(ios_base::getloc()); try { _Facet.get(_Iter(_Myios::rdbuf()), _Iter(0), *this, _State, _Val); } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& operator>>(_Mysb *_Pstrbuf) { ios_base::iostate _State = ios_base::goodbit; bool _Copied = false; const sentry _Ok(*this); if (_Ok && _Pstrbuf != 0) { try { int_type _Meta = _Myios::rdbuf()->sgetc(); for (; ; _Meta = _Myios::rdbuf()->snextc()) if (_Traits::eq_int_type(_Traits::eof(), _Meta)) { _State |= ios_base::eofbit; break; } else { try { if (_Traits::eq_int_type(_Traits::eof(), _Pstrbuf->sputc(_Traits::to_char_type(_Meta)))) break; } catch (...) { break; } _Copied = true; } } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(!_Copied ? _State | ios_base::failbit : _State); return (*this); } int_type get() { int_type _Meta = 0; ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; const sentry _Ok(*this, true); if (!_Ok) _Meta = _Traits::eof(); else { try { _Meta = _Myios::rdbuf()->sbumpc(); if (_Traits::eq_int_type(_Traits::eof(), _Meta)) _State |= ios_base::eofbit | ios_base::failbit; else ++_Chcount; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (_Meta); } _Myt& get(Elem *_Str, streamsize _Count) { return (get(_Str, _Count, _Myios::widen('\n'))); } _Myt& get(Elem *_Str, streamsize _Count, Elem _Delim) { ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; const sentry _Ok(*this, true); if (_Ok && 0 < _Count) { try { int_type _Meta = _Myios::rdbuf()->sgetc(); for (; 0 < --_Count; _Meta = _Myios::rdbuf()->snextc()) if (_Traits::eq_int_type(_Traits::eof(), _Meta)) { _State |= ios_base::eofbit; break; } else if (_Traits::to_char_type(_Meta) == _Delim) break; else { *_Str++ = _Traits::to_char_type(_Meta); ++_Chcount; } } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_Chcount == 0 ? _State | ios_base::failbit : _State); *_Str = Elem(); return (*this); } _Myt& get(Elem& _Char) { int_type _Meta = get(); if (!_Traits::eq_int_type(_Traits::eof(), _Meta)) _Char = _Traits::to_char_type(_Meta); return (*this); } _Myt& get(_Mysb& _Strbuf) { return (get(_Strbuf, _Myios::widen('\n'))); } _Myt& get(_Mysb& _Strbuf, Elem _Delim) { ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; const sentry _Ok(*this, true); if (_Ok) { try { int_type _Meta = _Myios::rdbuf()->sgetc(); for (; ; _Meta = _Myios::rdbuf()->snextc()) if (_Traits::eq_int_type(_Traits::eof(), _Meta)) { _State |= ios_base::eofbit; break; } else { try { Elem _Char = _Traits::to_char_type(_Meta); if (_Char == _Delim || _Traits::eq_int_type(_Traits::eof(), _Strbuf.sputc(_Char))) break; } catch (...) { break; } ++_Chcount; } } catch (...) { _Myios::setstate(ios_base::badbit, true); }} if (_Chcount == 0) _State |= ios_base::failbit; _Myios::setstate(_State); return (*this); } _Myt& getline(Elem *_Str, streamsize _Count) { return (getline(_Str, _Count, _Myios::widen('\n'))); } _Myt& getline(Elem *_Str, streamsize _Count, Elem _Delim) { ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; const sentry _Ok(*this, true); if (_Ok && 0 < _Count) { int_type _Metadelim = _Traits::to_int_type(_Delim); try { int_type _Meta = _Myios::rdbuf()->sgetc(); for (; ; _Meta = _Myios::rdbuf()->snextc()) if (_Traits::eq_int_type(_Traits::eof(), _Meta)) { _State |= ios_base::eofbit; break; } else if (_Meta == _Metadelim) { ++_Chcount; _Myios::rdbuf()->sbumpc(); break; } else if (--_Count <= 0) { _State |= ios_base::failbit; break; } else { ++_Chcount; *_Str++ = _Traits::to_char_type(_Meta); } } catch (...) { _Myios::setstate(ios_base::badbit, true); }} *_Str = Elem(); _Myios::setstate(_Chcount == 0 ? _State | ios_base::failbit : _State); return (*this); } _Myt& ignore(streamsize _Count = 1, int_type _Metadelim = _Traits::eof()) { ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; const sentry _Ok(*this, true); if (_Ok && 0 < _Count) { try { for (; ; ) { int_type _Meta; if (_Count != 0x7fffffff && --_Count < 0) break; else if (_Traits::eq_int_type(_Traits::eof(), _Meta = _Myios::rdbuf()->sbumpc())) { _State |= ios_base::eofbit; break; } else { ++_Chcount; if (_Meta == _Metadelim) break; }} } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& read(Elem *_Str, streamsize _Count) { ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; const sentry _Ok(*this, true); if (_Ok) { try { const streamsize _Num = _Myios::rdbuf()->sgetn(_Str, _Count); _Chcount += _Num; if (_Num != _Count) _State |= ios_base::eofbit | ios_base::failbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } streamsize readsome(Elem *_Str, streamsize _Count) { ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; const sentry _Ok(*this, true); int _Num; if (!_Ok) _State |= ios_base::failbit; else if ((_Num = _Myios::rdbuf()->in_avail()) < 0) _State |= ios_base::eofbit; else if (0 < _Num) read(_Str, _Num < _Count ? _Num : _Count); _Myios::setstate(_State); return (gcount()); } int_type peek() { ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; int_type _Meta = 0; const sentry _Ok(*this, true); if (!_Ok) _Meta = _Traits::eof(); else { try { if (_Traits::eq_int_type(_Traits::eof(), _Meta = _Myios::rdbuf()->sgetc())) _State |= ios_base::eofbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (_Meta); } _Myt& putback(Elem _Char) { ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; const sentry _Ok(*this, true); if (_Ok) { try { if (_Traits::eq_int_type(_Traits::eof(), _Myios::rdbuf()->sputbackc(_Char))) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } _Myt& unget() { ios_base::iostate _State = ios_base::goodbit; _Chcount = 0; const sentry _Ok(*this, true); if (_Ok) { try { if (_Traits::eq_int_type(_Traits::eof(), _Myios::rdbuf()->sungetc())) _State |= ios_base::badbit; } catch (...) { _Myios::setstate(ios_base::badbit, true); }} _Myios::setstate(_State); return (*this); } streamsize gcount() const { return (_Chcount); } int sync() { ios_base::iostate _State = ios_base::goodbit; int _Ans; if (_Myios::rdbuf() == 0) _Ans = -1; else if (_Myios::rdbuf()->pubsync() == -1) { _State |= ios_base::badbit; _Ans = -1; } else _Ans = 0; _Myios::setstate(_State); return (_Ans); } _Myt& seekg(pos_type _Pos) { if (!ios_base::fail()) _Myios::rdbuf()->pubseekpos(_Pos, ios_base::in); return (*this); } _Myt& seekg(off_type _Off, ios_base::seekdir _Way) { if (!ios_base::fail()) _Myios::rdbuf()->pubseekoff(_Off, _Way, ios_base::in); return (*this); } pos_type tellg() { if (!ios_base::fail()) return (_Myios::rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in)); else return (pos_type(_BADOFF)); } private: streamsize _Chcount; }; template class basic_iostream : public basic_istream, public basic_ostream { public: explicit basic_iostream(basic_streambuf *_Strbuf) : basic_istream(_Strbuf, false, true), basic_ostream(_Strbuf) {} virtual ~basic_iostream() {} }; template inline basic_istream& operator>>( basic_istream& _Istr, Elem *_Val) { typedef basic_istream _Myis; typedef ctype _Ctype; ios_base::iostate _State = ios_base::goodbit; Elem *_Str = _Val; const typename _Myis::sentry _Ok(_Istr); if (_Ok) { const _Ctype& _Facet = use_facet<_Ctype >(_Istr . getloc()); try { int _Count = 0 < _Istr.width() ? _Istr.width() : 0x7fffffff; typename _Myis::int_type _Meta = _Istr.rdbuf()->sgetc(); for (; 0 < --_Count; _Meta = _Istr.rdbuf()->snextc()) if (_Traits::eq_int_type(_Traits::eof(), _Meta)) { _State |= ios_base::eofbit; break; } else if (_Facet.is(_Ctype::space, _Traits::to_char_type(_Meta))) break; else *_Str++ = _Traits::to_char_type(_Meta); } catch (...) { _Istr.setstate(ios_base::badbit, true); }} *_Str = Elem(); _Istr.width(0); _Istr.setstate(_Str == _Val ? _State | ios_base::failbit : _State); return (_Istr); } template inline basic_istream& operator>>( basic_istream& _Istr, Elem& _Char) { typedef basic_istream _Myis; typename _Myis::int_type _Meta; ios_base::iostate _State = ios_base::goodbit; const typename _Myis::sentry _Ok(_Istr); if (_Ok) { try { _Meta = _Istr.rdbuf()->sbumpc(); if (_Traits::eq_int_type(_Traits::eof(), _Meta)) _State |= ios_base::eofbit | ios_base::failbit; else _Char = _Traits::to_char_type(_Meta); } catch (...) { _Istr.setstate(ios_base::badbit, true); }} _Istr.setstate(_State); return (_Istr); } template inline basic_istream& operator>>( basic_istream& _Istr, signed char *_Char) { return (_Istr >> (char *)_Char); } template inline basic_istream& operator>>( basic_istream& _Istr, signed char& _Char) { return (_Istr >> (char&)_Char); } template inline basic_istream& operator>>( basic_istream& _Istr, unsigned char *_Char) { return (_Istr >> (char *)_Char); } template inline basic_istream& operator>>( basic_istream& _Istr, unsigned char& _Char) { return (_Istr >> (char&)_Char); } template inline basic_istream& ws(basic_istream& _Istr) { typedef basic_istream _Myis; typedef ctype _Ctype; ios_base::iostate _State = ios_base::goodbit; const typename _Myis::sentry _Ok(_Istr, true); if (_Ok) { const _Ctype& _Facet = use_facet<_Ctype >(_Istr . getloc()); try { for (typename _Traits::int_type _Meta = _Istr.rdbuf()->sgetc(); ; _Meta = _Istr.rdbuf()->snextc()) if (_Traits::eq_int_type(_Traits::eof(), _Meta)) { _State |= ios_base::eofbit; break; } else if (!_Facet.is(_Ctype::space, _Traits::to_char_type(_Meta))) break; } catch (...) { _Istr.setstate(ios_base::badbit, true); }} _Istr.setstate(_State); return (_Istr); } } #line 5 "/usr/include/CC/string" namespace std { template inline basic_string<_Elem, _Traits, _Alloc> operator+( const basic_string<_Elem, _Traits, _Alloc>& _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right); } template inline basic_string<_Elem, _Traits, _Alloc> operator+( const _Elem *_Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right); } template inline basic_string<_Elem, _Traits, _Alloc> operator+( const _Elem _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (basic_string<_Elem, _Traits, _Alloc>(1, _Left) += _Right); } template inline basic_string<_Elem, _Traits, _Alloc> operator+( const basic_string<_Elem, _Traits, _Alloc>& _Left, const _Elem *_Right) { return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right); } template inline basic_string<_Elem, _Traits, _Alloc> operator+( const basic_string<_Elem, _Traits, _Alloc>& _Left, const _Elem _Right) { return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right); } template inline bool operator==( const basic_string<_Elem, _Traits, _Alloc>& _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (_Left.compare(_Right) == 0); } template inline bool operator==( const _Elem * _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (_Right.compare(_Left) == 0); } template inline bool operator==( const basic_string<_Elem, _Traits, _Alloc>& _Left, const _Elem *_Right) { return (_Left.compare(_Right) == 0); } template inline bool operator!=( const basic_string<_Elem, _Traits, _Alloc>& _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (!(_Left == _Right)); } template inline bool operator!=( const _Elem *_Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (!(_Left == _Right)); } template inline bool operator!=( const basic_string<_Elem, _Traits, _Alloc>& _Left, const _Elem *_Right) { return (!(_Left == _Right)); } template inline bool operator<( const basic_string<_Elem, _Traits, _Alloc>& _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (_Left.compare(_Right) < 0); } template inline bool operator<( const _Elem * _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (_Right.compare(_Left) > 0); } template inline bool operator<( const basic_string<_Elem, _Traits, _Alloc>& _Left, const _Elem *_Right) { return (_Left.compare(_Right) < 0); } template inline bool operator>( const basic_string<_Elem, _Traits, _Alloc>& _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (_Right < _Left); } template inline bool operator>( const _Elem * _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (_Right < _Left); } template inline bool operator>( const basic_string<_Elem, _Traits, _Alloc>& _Left, const _Elem *_Right) { return (_Right < _Left); } template inline bool operator<=( const basic_string<_Elem, _Traits, _Alloc>& _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (!(_Right < _Left)); } template inline bool operator<=( const _Elem * _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (!(_Right < _Left)); } template inline bool operator<=( const basic_string<_Elem, _Traits, _Alloc>& _Left, const _Elem *_Right) { return (!(_Right < _Left)); } template inline bool operator>=( const basic_string<_Elem, _Traits, _Alloc>& _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (!(_Left < _Right)); } template inline bool operator>=( const _Elem * _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) { return (!(_Left < _Right)); } template inline bool operator>=( const basic_string<_Elem, _Traits, _Alloc>& _Left, const _Elem *_Right) { return (!(_Left < _Right)); } template inline basic_istream<_Elem, _Traits>& operator>>( basic_istream<_Elem, _Traits>& _Istr, basic_string<_Elem, _Traits, _Alloc>& _Str) { typedef ctype<_Elem> _Ctype; typedef basic_istream<_Elem, _Traits> _Myis; typedef basic_string<_Elem, _Traits, _Alloc> _Mystr; typedef typename _Mystr::size_type _Mysizt; ios_base::iostate _State = ios_base::goodbit; bool _Changed = false; const typename _Myis::sentry _Ok(_Istr); if (_Ok) { const _Ctype& _Fac = use_facet<_Ctype >(_Istr . getloc()); _Str.erase(); try { _Mysizt _Size = 0 < _Istr.width() && (_Mysizt)_Istr.width() < _Str.max_size() ? (_Mysizt)_Istr.width() : _Str.max_size(); typename _Traits::int_type _Meta = _Istr.rdbuf()->sgetc(); for (; 0 < _Size; --_Size, _Meta = _Istr.rdbuf()->snextc()) if(_Traits::eq_int_type(_Traits::eof(), _Meta)) { _State |= ios_base::eofbit; break; } else if (_Fac.is(_Ctype::space, _Traits::to_char_type(_Meta))) break; else { _Str.append(1, _Traits::to_char_type(_Meta)); _Changed = true; } } catch (...) { _Istr.setstate(ios_base::badbit, true); }} _Istr.width(0); if (!_Changed) _State |= ios_base::failbit; _Istr.setstate(_State); return (_Istr); } template inline basic_istream<_Elem, _Traits>& getline( basic_istream<_Elem, _Traits>& _Istr, basic_string<_Elem, _Traits, _Alloc>& _Str) { return (getline(_Istr, _Str, _Istr.widen('\n'))); } template inline basic_istream<_Elem, _Traits>& getline( basic_istream<_Elem, _Traits>& _Istr, basic_string<_Elem, _Traits, _Alloc>& _Str, const _Elem _Delim) { typedef basic_istream<_Elem, _Traits> _Myis; ios_base::iostate _State = ios_base::goodbit; bool _Changed = false; const typename _Myis::sentry _Ok(_Istr, true); if (_Ok) { try { _Str.erase(); const typename _Traits::int_type _Metadelim = _Traits::to_int_type(_Delim); typename _Traits::int_type _Meta = _Istr.rdbuf()->sgetc(); for (; ; _Meta = _Istr.rdbuf()->snextc()) if (_Traits::eq_int_type(_Traits::eof(), _Meta)) { _State |= ios_base::eofbit; break; } else if (_Traits::eq_int_type(_Meta, _Metadelim)) { _Changed = true; _Istr.rdbuf()->sbumpc(); break; } else if (_Str.max_size() <= _Str.size()) { _State |= ios_base::failbit; break; } else { _Str += _Traits::to_char_type(_Meta); _Changed = true; } } catch (...) { _Istr.setstate(ios_base::badbit, true); }} if (!_Changed) _State |= ios_base::failbit; _Istr.setstate(_State); return (_Istr); } template inline basic_ostream<_Elem, _Traits>& operator<<( basic_ostream<_Elem, _Traits>& _Ostr, const basic_string<_Elem, _Traits, _Alloc>& _Str) { typedef basic_ostream<_Elem, _Traits> _Myos; typedef basic_string<_Elem, _Traits, _Alloc> _Mystr; typedef typename _Mystr::size_type _Mysizt; ios_base::iostate _State = ios_base::goodbit; _Mysizt _Size = _Str.size(); _Mysizt _Pad = _Ostr.width() <= 0 || (_Mysizt)_Ostr.width() <= _Size ? 0 : (_Mysizt)_Ostr.width() - _Size; const typename _Myos::sentry _Ok(_Ostr); if (!_Ok) _State |= ios_base::badbit; else { try { if ((_Ostr.flags() & ios_base::adjustfield) != ios_base::left) for (; 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { _State |= ios_base::badbit; break; } if (_State == ios_base::goodbit) for (_Mysizt _Count = 0; _Count < _Size; ++_Count) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Str[_Count]))) { _State |= ios_base::badbit; break; } if (_State == ios_base::goodbit) for (; 0 < _Pad; --_Pad) if (_Traits::eq_int_type(_Traits::eof(), _Ostr.rdbuf()->sputc(_Ostr.fill()))) { _State |= ios_base::badbit; break; } _Ostr.width(0); } catch (...) { _Ostr.setstate(ios_base::badbit, true); }} _Ostr.setstate(_State); return (_Ostr); } } #line 41 "../../include/QtCore/../../src/corelib/tools/qstring.h" typedef std::basic_string QStdWString; typedef QtValidLicenseForCoreModule QtCoreModule; class QCharRef; class QRegExp; class QStringList; class QTextCodec; class QLatin1String; class QString { public: inline QString(); QString(const QChar *unicode, int size); QString(QChar c); QString(int size, QChar c); inline QString(const QLatin1String &latin1); inline QString(const QString &); inline ~QString(); QString &operator=(QChar c); QString &operator=(const QString &); inline QString &operator=(const QLatin1String &); inline int size() const { return d->size; } inline int count() const { return d->size; } inline int length() const; inline bool isEmpty() const; void resize(int size); QString &fill(QChar c, int size = -1); void truncate(int pos); void chop(int n); int capacity() const; inline void reserve(int size); inline void squeeze() { if (d->size < d->alloc) realloc(); } inline const QChar *unicode() const; inline QChar *data(); inline const QChar *data() const; inline const QChar *constData() const; inline void detach(); inline bool isDetached() const; void clear(); inline const QChar at(int i) const; const QChar operator[](int i) const; QCharRef operator[](int i); const QChar operator[](uint i) const; QCharRef operator[](uint i); QString arg(qlonglong a, int fieldwidth=0, int base=10, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(qulonglong a, int fieldwidth=0, int base=10, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(long a, int fieldwidth=0, int base=10, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(ulong a, int fieldwidth=0, int base=10, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(int a, int fieldWidth = 0, int base = 10, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(uint a, int fieldWidth = 0, int base = 10, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(short a, int fieldWidth = 0, int base = 10, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(ushort a, int fieldWidth = 0, int base = 10, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(double a, int fieldWidth = 0, char fmt = 'g', int prec = -1, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(char a, int fieldWidth = 0, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(QChar a, int fieldWidth = 0, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(const QString &a, int fieldWidth = 0, const QChar &fillChar = QLatin1Char(' ')) const; QString arg(const QString &a1, const QString &a2) const; QString arg(const QString &a1, const QString &a2, const QString &a3) const; QString arg(const QString &a1, const QString &a2, const QString &a3, const QString &a4) const; QString &vsprintf(const char *format, va_list ap); QString &sprintf(const char *format, ...) ; int indexOf(QChar c, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; int indexOf(const QString &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; int lastIndexOf(QChar c, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; int lastIndexOf(const QString &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; inline QBool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; inline QBool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; int count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; int count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; int indexOf(const QRegExp &, int from = 0) const; int lastIndexOf(const QRegExp &, int from = -1) const; inline QBool contains(const QRegExp &rx) const { return QBool(indexOf(rx) != -1); } int count(const QRegExp &) const; enum SectionFlag { SectionDefault = 0x00, SectionSkipEmpty = 0x01, SectionIncludeLeadingSep = 0x02, SectionIncludeTrailingSep = 0x04, SectionCaseInsensitiveSeps = 0x08 }; typedef QFlags SectionFlags; QString section(QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault) const; QString section(const QString &in_sep, int start, int end = -1, SectionFlags flags = SectionDefault) const; QString section(const QRegExp ®, int start, int end = -1, SectionFlags flags = SectionDefault) const; QString left(int len) const; QString right(int len) const; QString mid(int i, int len = -1) const; bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; bool startsWith(const QLatin1String &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; bool startsWith(const QChar &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; bool endsWith(const QLatin1String &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; bool endsWith(const QChar &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; QString leftJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const; QString rightJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const; QString toLower() const; QString toUpper() const; QString trimmed() const; QString simplified() const; QString &insert(int i, QChar c); QString &insert(int i, const QChar *uc, int len); inline QString &insert(int i, const QString &s) { return insert(i, s.constData(), s.length()); } QString &insert(int i, const QLatin1String &s); QString &append(QChar c); QString &append(const QString &s); QString &append(const QLatin1String &s); inline QString &prepend(QChar c) { return insert(0, c); } inline QString &prepend(const QString &s) { return insert(0, s); } inline QString &prepend(const QLatin1String &s) { return insert(0, s); } inline QString &operator+=(QChar c) { return append(c); } inline QString &operator+=(QChar::SpecialCharacter c) { return append(QChar(c)); } inline QString &operator+=(const QString &s) { return append(s); } inline QString &operator+=(const QLatin1String &s) { return append(s); } QString &remove(int i, int len); QString &remove(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive); QString &remove(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive); QString &replace(int i, int len, QChar after); QString &replace(int i, int len, const QChar *s, int slen); QString &replace(int i, int len, const QString &after); QString &replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive); QString &replace(QChar c, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive); QString &replace(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive); QString &replace(const QRegExp &rx, const QString &after); inline QString &remove(const QRegExp &rx) { return replace(rx, QString()); } enum SplitBehavior { KeepEmptyParts, SkipEmptyParts }; QStringList split(const QString &sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; QStringList split(const QChar &sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; QStringList split(const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const; enum NormalizationForm { NormalizationForm_D, NormalizationForm_C, NormalizationForm_KD, NormalizationForm_KC }; QString normalized(NormalizationForm mode) const; QString normalized(NormalizationForm mode, QChar::UnicodeVersion version) const; const ushort *utf16() const; QByteArray toAscii() const; QByteArray toLatin1() const; QByteArray toUtf8() const; QByteArray toLocal8Bit() const; static QString fromAscii(const char *, int size = -1); static QString fromLatin1(const char *, int size = -1); static QString fromUtf8(const char *, int size = -1); static QString fromLocal8Bit(const char *, int size = -1); static QString fromUtf16(const ushort *, int size = -1); static QString fromRawData(const QChar *, int size); QString &setUnicode(const QChar *unicode, int size); inline QString &setUtf16(const ushort *utf16, int size); int compare(const QString &s) const; static inline int compare(const QString &s1, const QString &s2) { return s1.compare(s2); } int localeAwareCompare(const QString& s) const; static int localeAwareCompare(const QString& s1, const QString& s2) { return s1.localeAwareCompare(s2); } short toShort(bool *ok=0, int base=10) const; ushort toUShort(bool *ok=0, int base=10) const; int toInt(bool *ok=0, int base=10) const; uint toUInt(bool *ok=0, int base=10) const; long toLong(bool *ok=0, int base=10) const; ulong toULong(bool *ok=0, int base=10) const; qlonglong toLongLong(bool *ok=0, int base=10) const; qulonglong toULongLong(bool *ok=0, int base=10) const; float toFloat(bool *ok=0) const; double toDouble(bool *ok=0) const; QString &setNum(short, int base=10); QString &setNum(ushort, int base=10); QString &setNum(int, int base=10); QString &setNum(uint, int base=10); QString &setNum(long, int base=10); QString &setNum(ulong, int base=10); QString &setNum(qlonglong, int base=10); QString &setNum(qulonglong, int base=10); QString &setNum(float, char f='g', int prec=6); QString &setNum(double, char f='g', int prec=6); static QString number(int, int base=10); static QString number(uint, int base=10); static QString number(long, int base=10); static QString number(ulong, int base=10); static QString number(qlonglong, int base=10); static QString number(qulonglong, int base=10); static QString number(double, char f='g', int prec=6); bool operator==(const QString &s) const; bool operator<(const QString &s) const; inline bool operator>(const QString &s) const { return s < *this; } inline bool operator!=(const QString &s) const { return !operator==(s); } inline bool operator<=(const QString &s) const { return !operator>(s); } inline bool operator>=(const QString &s) const { return !operator<(s); } bool operator==(const QLatin1String &s) const; bool operator<(const QLatin1String &s) const; bool operator>(const QLatin1String &s) const; inline bool operator!=(const QLatin1String &s) const { return !operator==(s); } inline bool operator<=(const QLatin1String &s) const { return !operator>(s); } inline bool operator>=(const QLatin1String &s) const { return !operator<(s); } inline QString(const char *ch) : d(&shared_null) { d->ref.ref(); *this = fromAscii(ch); } inline QString(const QByteArray &a) : d(&shared_null) { d->ref.ref(); *this = fromAscii(a); } inline QString &operator=(const char *ch) { return (*this = fromAscii(ch)); } inline QString &operator=(const QByteArray &a) { return (*this = fromAscii(a)); } inline QString &operator=(char c) { return (*this = QChar(c)); } inline QString &prepend(const char *s) { return prepend(QString::fromAscii(s)); } inline QString &prepend(const QByteArray &s) { return prepend(QString(s)); } inline QString &append(const char *s) { return append(QString::fromAscii(s)); } inline QString &append(const QByteArray &s) { return append(QString(s)); } inline QString &operator+=(const char *s) { return append(QString::fromAscii(s)); } inline QString &operator+=(const QByteArray &s) { return append(QString(s)); } inline QString &operator+=(char c) { return append(QChar(c)); } inline bool operator==(const char *s) const; inline bool operator!=(const char *s) const; inline bool operator<(const char *s) const; inline bool operator<=(const char *s2) const; inline bool operator>(const char *s2) const; inline bool operator>=(const char *s2) const; inline bool operator==(const QByteArray &s) const { return (*this == s.constData()); } inline bool operator!=(const QByteArray &s) const { return !(*this == s.constData()); } inline bool operator<(const QByteArray &s) const { return *this < s.constData(); } inline bool operator>(const QByteArray &s) const { return *this > s.constData(); } inline bool operator<=(const QByteArray &s) const { return *this <= s.constData(); } inline bool operator>=(const QByteArray &s) const { return *this >= s.constData(); } typedef QChar *iterator; typedef const QChar *const_iterator; typedef iterator Iterator; typedef const_iterator ConstIterator; iterator begin(); const_iterator begin() const; const_iterator constBegin() const; iterator end(); const_iterator end() const; const_iterator constEnd() const; inline void push_back(QChar c) { append(c); } inline void push_back(const QString &s) { append(s); } inline void push_front(QChar c) { prepend(c); } inline void push_front(const QString &s) { prepend(s); } static inline QString fromStdString(const std::string &s); inline std::string toStdString() const; static inline QString fromStdWString(const QStdWString &s); inline QStdWString toStdWString() const; struct Null { }; static const Null null; inline QString(const Null &): d(&shared_null) { d->ref.ref(); } inline QString &operator=(const Null &) { *this = QString(); return *this; } inline bool isNull() const { return d == &shared_null; } inline const char *ascii() const { return ascii_helper(); } inline const char *latin1() const { return latin1_helper(); } inline QByteArray utf8() const { return toUtf8(); } inline QByteArray local8Bit() const{ return toLocal8Bit(); } inline void setLength(int nl) { resize(nl); } inline QString copy() const { return *this; } inline QString &remove(QChar c, bool cs) { return remove(c, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline QString &remove(const QString &s, bool cs) { return remove(s, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline QString &replace(QChar c, const QString &after, bool cs) { return replace(c, after, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline QString &replace(const QString &before, const QString &after, bool cs) { return replace(before, after, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline QString &replace(char c, const QString &after, bool cs) { return replace(QChar(c), after, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline QString &replace(char c, const QString &after, Qt::CaseSensitivity cs) { return replace(QChar(c), after, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline int find(QChar c, int i = 0, bool cs = true) const { return indexOf(c, i, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline int find(const QString &s, int i = 0, bool cs = true) const { return indexOf(s, i, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline int findRev(QChar c, int i = -1, bool cs = true) const { return lastIndexOf(c, i, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline int findRev(const QString &s, int i = -1, bool cs = true) const { return lastIndexOf(s, i, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline int find(const QRegExp &rx, int i=0) const { return indexOf(rx, i); } inline int findRev(const QRegExp &rx, int i=-1) const { return lastIndexOf(rx, i); } inline QBool contains(QChar c, bool cs) const { return contains(c, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline QBool contains(const QString &s, bool cs) const { return contains(s, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline bool startsWith(const QString &s, bool cs) const { return startsWith(s, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline bool endsWith(const QString &s, bool cs) const { return endsWith(s, cs?Qt::CaseSensitive:Qt::CaseInsensitive); } inline QChar constref(uint i) const { return at(i); } QChar &ref(uint i); inline QString leftJustify(int width, QChar fill = QLatin1Char(' '), bool trunc=false) const { return leftJustified(width, fill, trunc); } inline QString rightJustify(int width, QChar fill = QLatin1Char(' '), bool trunc=false) const { return rightJustified(width, fill, trunc); } inline QString lower() const { return toLower(); } inline QString upper() const { return toUpper(); } inline QString stripWhiteSpace() const { return trimmed(); } inline QString simplifyWhiteSpace() const { return simplified(); } inline QString &setUnicodeCodes(const ushort *unicode_as_ushorts, int size) { return setUtf16(unicode_as_ushorts, size); } inline const ushort *ucs2() const { return utf16(); } inline static QString fromUcs2(const ushort *unicode, int size = -1) { return fromUtf16(unicode, size); } inline QString &setAscii(const char *str, int len = -1) { *this = fromAscii(str, len); return *this; } inline QString &setLatin1(const char *str, int len = -1) { *this = fromLatin1(str, len); return *this; } protected: friend class QObject; const char *ascii_helper() const; const char *latin1_helper() const; public: #line 460 "../../include/QtCore/../../src/corelib/tools/qstring.h" bool isSimpleText() const { if (!d->clean) updateProperties(); return d->simpletext; } bool isRightToLeft() const { if (!d->clean) updateProperties(); return d->righttoleft; } private: #line 473 "../../include/QtCore/../../src/corelib/tools/qstring.h" struct Data { QBasicAtomic ref; int alloc, size; ushort *data; ushort clean : 1; ushort simpletext : 1; ushort righttoleft : 1; ushort asciiCache : 1; ushort reserved : 12; ushort array[1]; }; static Data shared_null; static Data shared_empty; Data *d; QString(Data *dd, int ) : d(dd) {} static QTextCodec *codecForCStrings; static int grow(int); static void free(Data *); void realloc(); void realloc(int alloc); void expand(int i); void updateProperties() const; QString multiArg(int numArgs, const QString **args) const; int toWCharArray(wchar_t *array) const; static QString fromWCharArray(const wchar_t *, int); static Data *fromLatin1_helper(const char *str, int size = -1); friend class QCharRef; friend class QTextCodec; }; class QLatin1String { public: inline explicit QLatin1String(const char *s) : chars(s) {} inline QLatin1String &operator=(const QLatin1String &other) { chars = other.chars; return *this; } inline const char *latin1() const { return chars; } inline bool operator==(const QString &s) const { return s == *this; } inline bool operator!=(const QString &s) const { return s != *this; } inline bool operator>(const QString &s) const { return s < *this; } inline bool operator<(const QString &s) const { return s > *this; } inline bool operator>=(const QString &s) const { return s <= *this; } inline bool operator<=(const QString &s) const { return s >= *this; } private: const char *chars; }; inline QString::QString(const QLatin1String &latin1) : d(fromLatin1_helper(latin1.latin1())) { } inline int QString::length() const { return d->size; } inline const QChar QString::at(int i) const { do {if(!(i >= 0 && i < size()))qt_assert("i >= 0 && i < size()","../../include/QtCore/../../src/corelib/tools/qstring.h",541);} while (0); return d->data[i]; } inline const QChar QString::operator[](int i) const { do {if(!(i >= 0 && i < size()))qt_assert("i >= 0 && i < size()","../../include/QtCore/../../src/corelib/tools/qstring.h",543);} while (0); return d->data[i]; } inline const QChar QString::operator[](uint i) const { do {if(!(i < uint(size())))qt_assert("i < uint(size())","../../include/QtCore/../../src/corelib/tools/qstring.h",545);} while (0); return d->data[i]; } inline bool QString::isEmpty() const { return d->size == 0; } inline const QChar *QString::unicode() const { return reinterpret_cast(d->data); } inline const QChar *QString::data() const { return reinterpret_cast(d->data); } inline QChar *QString::data() { detach(); return reinterpret_cast(d->data); } inline const QChar *QString::constData() const { return reinterpret_cast(d->data); } inline void QString::detach() { if (d->ref != 1 || d->data != d->array) realloc(); } inline bool QString::isDetached() const { return d->ref == 1; } inline QString &QString::operator=(const QLatin1String &s) { *this = fromLatin1(s.latin1()); return *this; } inline void QString::clear() { if (!isNull()) *this = QString(); } inline QString::QString(const QString &s) : d(s.d) { do {if(!(&s != this))qt_assert("&s != this","../../include/QtCore/../../src/corelib/tools/qstring.h",568);} while (0); d->ref.ref(); } inline int QString::capacity() const { return d->alloc; } inline QString &QString::setNum(short n, int base) { return setNum(qlonglong(n), base); } inline QString &QString::setNum(ushort n, int base) { return setNum(qulonglong(n), base); } inline QString &QString::setNum(int n, int base) { return setNum(qlonglong(n), base); } inline QString &QString::setNum(uint n, int base) { return setNum(qulonglong(n), base); } inline QString &QString::setNum(long n, int base) { return setNum(qlonglong(n), base); } inline QString &QString::setNum(ulong n, int base) { return setNum(qulonglong(n), base); } inline QString &QString::setNum(float n, char f, int prec) { return setNum(double(n),f,prec); } inline QString QString::arg(int a, int fieldWidth, int base, const QChar &fillChar) const { return arg(qlonglong(a), fieldWidth, base, fillChar); } inline QString QString::arg(uint a, int fieldWidth, int base, const QChar &fillChar) const { return arg(qulonglong(a), fieldWidth, base, fillChar); } inline QString QString::arg(long a, int fieldWidth, int base, const QChar &fillChar) const { return arg(qlonglong(a), fieldWidth, base, fillChar); } inline QString QString::arg(ulong a, int fieldWidth, int base, const QChar &fillChar) const { return arg(qulonglong(a), fieldWidth, base, fillChar); } inline QString QString::arg(short a, int fieldWidth, int base, const QChar &fillChar) const { return arg(qlonglong(a), fieldWidth, base, fillChar); } inline QString QString::arg(ushort a, int fieldWidth, int base, const QChar &fillChar) const { return arg(qulonglong(a), fieldWidth, base, fillChar); } inline QString QString::arg(const QString &a1, const QString &a2) const { const QString *args[2] = { &a1, &a2 }; return multiArg(2, args); } inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3) const { const QString *args[3] = { &a1, &a2, &a3 }; return multiArg(3, args); } inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3, const QString &a4) const { const QString *args[4] = { &a1, &a2, &a3, &a4 }; return multiArg(4, args); } inline QString QString::section(QChar asep, int astart, int aend, SectionFlags aflags) const { return section(QString(asep), astart, aend, aflags); } class QCharRef { QString &s; int i; inline QCharRef(QString &str, int idx) : s(str),i(idx) {} friend class QString; public: inline operator QChar() const { return i < s.d->size ? s.d->data[i] : 0; } inline QCharRef &operator=(const QChar &c) { if (s.d->ref != 1 || i >= s.d->size) s.expand(i); s.d->data[i] = c.unicode(); return *this; } inline QCharRef &operator=(char c) { return operator=(QChar(c)); } inline QCharRef &operator=(uchar c) { return operator=(QChar(c)); } inline QCharRef &operator=(const QCharRef &c) { return operator=(QChar(c)); } inline QCharRef &operator=(ushort rc) { return operator=(QChar(rc)); } inline QCharRef &operator=(short rc) { return operator=(QChar(rc)); } inline QCharRef &operator=(uint rc) { return operator=(QChar(rc)); } inline QCharRef &operator=(int rc) { return operator=(QChar(rc)); } inline bool isNull() const { return QChar(*this).isNull(); } inline bool isPrint() const { return QChar(*this).isPrint(); } inline bool isPunct() const { return QChar(*this).isPunct(); } inline bool isSpace() const { return QChar(*this).isSpace(); } inline bool isMark() const { return QChar(*this).isMark(); } inline bool isLetter() const { return QChar(*this).isLetter(); } inline bool isNumber() const { return QChar(*this).isNumber(); } inline bool isLetterOrNumber() { return QChar(*this).isLetterOrNumber(); } inline bool isDigit() const { return QChar(*this).isDigit(); } inline int digitValue() const { return QChar(*this).digitValue(); } QChar toLower() const { return QChar(*this).toLower(); } QChar toUpper() const { return QChar(*this).toUpper(); } inline QChar lower() const { return QChar(*this).toLower(); } inline QChar upper() const { return QChar(*this).toUpper(); } QChar::Category category() const { return QChar(*this).category(); } QChar::Direction direction() const { return QChar(*this).direction(); } QChar::Joining joining() const { return QChar(*this).joining(); } bool hasMirrored() const { return QChar(*this).hasMirrored(); } inline bool mirrored() const { return hasMirrored(); } QChar mirroredChar() const { return QChar(*this).mirroredChar(); } QString decomposition() const { return QChar(*this).decomposition(); } QChar::Decomposition decompositionTag() const { return QChar(*this).decompositionTag(); } uchar combiningClass() const { return QChar(*this).combiningClass(); } QChar::UnicodeVersion unicodeVersion() const { return QChar(*this).unicodeVersion(); } inline uchar cell() const { return QChar(*this).cell(); } inline uchar row() const { return QChar(*this).row(); } inline void setCell(uchar cell); inline void setRow(uchar row); const char toAscii() const { return QChar(*this).toAscii(); } const char toLatin1() const { return QChar(*this).toLatin1(); } const char latin1() const { return QChar(*this).toLatin1(); } const char ascii() const { return QChar(*this).toAscii(); } const ushort unicode() const { return QChar(*this).unicode(); } }; inline void QCharRef::setRow(uchar arow) { QChar(*this).setRow(arow); } inline void QCharRef::setCell(uchar acell) { QChar(*this).setCell(acell); } inline QString::QString() : d(&shared_null) { d->ref.ref(); } inline QString::~QString() { if (!d->ref.deref()) free(d); } inline void QString::reserve(int asize) { if (d->ref != 1 || asize > d->alloc) realloc(asize); } inline QString &QString::setUtf16(const ushort *autf16, int asize) { return setUnicode(reinterpret_cast(autf16), asize); } inline QCharRef QString::operator[](int i) { do {if(!(i >= 0))qt_assert("i >= 0","../../include/QtCore/../../src/corelib/tools/qstring.h",692);} while (0); return QCharRef(*this, i); } inline QCharRef QString::operator[](uint i) { return QCharRef(*this, i); } inline QString::iterator QString::begin() { detach(); return reinterpret_cast(d->data); } inline QString::const_iterator QString::begin() const { return reinterpret_cast(d->data); } inline QString::const_iterator QString::constBegin() const { return reinterpret_cast(d->data); } inline QString::iterator QString::end() { detach(); return reinterpret_cast(d->data + d->size); } inline QString::const_iterator QString::end() const { return reinterpret_cast(d->data + d->size); } inline QString::const_iterator QString::constEnd() const { return reinterpret_cast(d->data + d->size); } inline QBool QString::contains(const QString &s, Qt::CaseSensitivity cs) const { return QBool(indexOf(s, 0, cs) != -1); } inline QBool QString::contains(QChar c, Qt::CaseSensitivity cs) const { return QBool(indexOf(c, 0, cs) != -1); } inline bool operator==(QString::Null, QString::Null) { return true; } inline bool operator==(QString::Null, const QString &s) { return s.isNull(); } inline bool operator==(const QString &s, QString::Null) { return s.isNull(); } inline bool operator!=(QString::Null, QString::Null) { return false; } inline bool operator!=(QString::Null, const QString &s) { return !s.isNull(); } inline bool operator!=(const QString &s, QString::Null) { return !s.isNull(); } inline bool QString::operator==(const char *s) const { if (codecForCStrings) return (*this == QString::fromAscii(s)); return (*this == QLatin1String(s)); } inline bool QString::operator!=(const char *s) const{ return !(*this == s); } inline bool QString::operator<(const char *s) const { return *this < QString::fromAscii(s); } inline bool QString::operator>(const char *s) const { return *this > QString::fromAscii(s); } inline bool QString::operator<=(const char *s) const { return *this <= QString::fromAscii(s); } inline bool QString::operator>=(const char *s) const { return *this >= QString::fromAscii(s); } inline bool operator==(const char *s1, const QString &s2) { return (s2 == s1); } inline bool operator!=(const char *s1, const QString &s2) { return !(s2 == s1); } inline bool operator<(const char *s1, const QString &s2) { return (QString::fromAscii(s1) < s2); } inline bool operator>(const char *s1, const QString &s2) { return (QString::fromAscii(s1) > s2); } inline bool operator<=(const char *s1, const QString &s2) { return (QString::fromAscii(s1) <= s2); } inline bool operator>=(const char *s1, const QString &s2) { return (QString::fromAscii(s1) >= s2); } inline bool QByteArray::operator==(const QString &s) const { return constData() == s; } inline bool QByteArray::operator!=(const QString &s) const { return !(constData() == s); } inline bool QByteArray::operator<(const QString &s) const { return constData() < s; } inline bool QByteArray::operator>(const QString &s) const { return constData() > s; } inline bool QByteArray::operator<=(const QString &s) const { return constData() <= s; } inline bool QByteArray::operator>=(const QString &s) const { return constData() >= s; } #line 772 "../../include/QtCore/../../src/corelib/tools/qstring.h" inline const QString operator+(const QString &s1, const QString &s2) { QString t(s1); t += s2; return t; } inline const QString operator+(const QString &s1, QChar s2) { QString t(s1); t += s2; return t; } inline const QString operator+(QChar s1, const QString &s2) { QString t(s1); t += s2; return t; } inline const QString operator+(const QString &s1, const char *s2) { QString t(s1); t += QString::fromAscii(s2); return t; } inline const QString operator+(const char *s1, const QString &s2) { QString t(s1); t += s2; return t; } inline const QString operator+(char c, const QString &s) { QString t = s; t.prepend(QChar(c)); return t; } inline const QString operator+(const QString &s, char c) { QString t(s); t += c; return t; } inline const QString operator+(const QByteArray &ba, const QString &s) { QString t(ba); t += s; return t; } inline const QString operator+(const QString &s, const QByteArray &ba) { QString t(s); t += ba; return t; } inline std::string QString::toStdString() const { const QByteArray asc = toAscii(); return std::string(asc.constData(), asc.length()); } inline QString QString::fromStdString(const std::string &s) { return fromAscii(s.data(), int(s.size())); } inline QStdWString QString::toStdWString() const { QStdWString str; str.resize(length()); str.resize(toWCharArray(&(*str.begin()))); return str; } inline QString QString::fromStdWString(const QStdWString &s) { return fromWCharArray(s.data(), int(s.size())); } inline QChar &QString::ref(uint i) { if (int(i) > d->size || d->ref != 1) resize(qMax(int(i), d->size)); return reinterpret_cast(d->data[i]); } QDataStream &operator<<(QDataStream &, const QString &); QDataStream &operator>>(QDataStream &, QString &); class QConstString : public QString { public: inline explicit QConstString(const QChar *unicode, int size) :QString(unicode, size){} inline const QString &string() const { return *this; } }; template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QString)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QString"; } }; template <> inline bool qIsDetached(QString &t) { return t . isDetached(); } inline QFlags operator|(QString::SectionFlags::enum_type f1, QString::SectionFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QString::SectionFlags::enum_type f1, QFlags f2) { return f2 | f1; } #line 2 "../../include/QtCore/qstring.h" #line 29 "../../include/QtCore/../../src/corelib/kernel/qobject.h" #line 1 "../../include/QtCore/qbytearray.h" #line 30 "../../include/QtCore/../../src/corelib/kernel/qobject.h" #line 1 "../../include/QtCore/qlist.h" #line 31 "../../include/QtCore/../../src/corelib/kernel/qobject.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QEvent; class QTimerEvent; class QChildEvent; struct QMetaObject; class QVariant; class QObjectPrivate; class QObject; class QThread; class QWidget; class QRegExp; class QObjectUserData; typedef QList QObjectList; #line 64 "../../include/QtCore/../../src/corelib/kernel/qobject.h" template inline T qFindChild(const QObject *, const QString & = QString()); template inline QList qFindChildren(const QObject *, const QString & = QString()); template inline QList qFindChildren(const QObject *, const QRegExp &); class QObjectData { public: virtual ~QObjectData() = 0; QObject *q_ptr; QObject *parent; QObjectList children; uint isWidget : 1; uint pendTimer : 1; uint blockSig : 1; uint wasDeleted : 1; uint ownObjectName : 1; uint sendChildEvents : 1; uint receiveChildEvents : 1; uint unused : 25; int postedEvents; int postedChildInsertedEvents; }; class QObject { public: static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject . tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject . trUtf8(s, c); } virtual int qt_metacall(QMetaObject::Call, int, void * *); private: inline QObjectPrivate* d_func() { return reinterpret_cast(d_ptr); } inline const QObjectPrivate* d_func() const { return reinterpret_cast(d_ptr); } friend class QObjectPrivate; public: explicit QObject(QObject *parent=0); virtual ~QObject(); virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); #line 121 "../../include/QtCore/../../src/corelib/kernel/qobject.h" QString objectName() const; void setObjectName(const QString &name); inline bool isWidgetType() const { return d_ptr->isWidget; } inline bool signalsBlocked() const { return d_ptr->blockSig; } bool blockSignals(bool b); QThread *thread() const; void moveToThread(QThread *thread); int startTimer(int interval); void killTimer(int id); template inline T findChild(const QString &name = QString()) const { return qFindChild(this, name); } template inline QList findChildren(const QString &name = QString()) const { return qFindChildren(this, name); } template inline QList findChildren(const QRegExp &re) const { return qFindChildren(this, re); } QObject *child(const char *objName, const char *inheritsClass = 0, bool recursiveSearch = true) const; QObjectList queryList(const char *inheritsClass = 0, const char *objName = 0, bool regexpMatch = true, bool recursiveSearch = true) const; inline const QObjectList &children() const { return d_ptr->children; } void setParent(QObject *); void installEventFilter(QObject *); void removeEventFilter(QObject *); static bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoCompatConnection ); inline bool connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type = Qt::AutoCompatConnection ) const; static bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member); inline bool disconnect(const char *signal = 0, const QObject *receiver = 0, const char *member = 0) { return disconnect(this, signal, receiver, member); } inline bool disconnect(const QObject *receiver, const char *member = 0) { return disconnect(this, 0, receiver, member); } void dumpObjectTree(); void dumpObjectInfo(); bool setProperty(const char *name, const QVariant &value); QVariant property(const char *name) const; static uint registerUserData(); void setUserData(uint id, QObjectUserData* data); QObjectUserData* userData(uint id) const; protected: void destroyed(QObject * = 0); public: inline QObject *parent() const { return d_ptr->parent; } inline bool inherits(const char *classname) const { return const_cast(this)->qt_metacast(classname) != 0; } public : void deleteLater(); protected: QObject *sender() const; int receivers(const char* signal) const; virtual void timerEvent(QTimerEvent *); virtual void childEvent(QChildEvent *); virtual void customEvent(QEvent *); virtual void connectNotify(const char *signal); virtual void disconnectNotify(const char *signal); public: explicit QObject(QObject *parent, const char *name); inline void insertChild(QObject *o) { if (o) o->setParent(this); } inline void removeChild(QObject *o) { if (o) o->setParent(0); } inline bool isA(const char *classname) const { return qstrcmp(classname, metaObject()->className()) == 0; } inline const char *className() const { return metaObject()->className(); } inline const char *name() const { return objectName().latin1_helper(); } inline const char *name(const char *defaultName) const { QString s = objectName(); return s.isEmpty()?defaultName:s.latin1_helper(); } inline void setName(const char *name) { setObjectName(QLatin1String(name)); } protected: inline bool checkConnectArgs(const char *signal, const QObject *, const char *member) { return QMetaObject::checkConnectArgs(signal, member); } static inline QByteArray normalizeSignalSlot(const char *signalSlot) { return QMetaObject::normalizedSignature(signalSlot); } protected: QObject(QObjectPrivate &dd, QObject *parent = 0); protected: QObjectData *d_ptr; static const QMetaObject staticQtMetaObject; friend struct QMetaObject; friend class QApplication; friend class QApplicationPrivate; friend class QCoreApplication; friend class QCoreApplicationPrivate; friend class QWidget; friend class QThreadData; private: QObject(const QObject &); QObject &operator=(const QObject &); }; inline bool QObject::connect(const QObject *asender, const char *asignal, const char *amember, Qt::ConnectionType atype) const { return connect(asender, asignal, this, amember, atype); } class QObjectUserData { public: virtual ~QObjectUserData(); }; void qt_qFindChildren_helper(const QObject *parent, const QString &name, const QRegExp *re, const QMetaObject &mo, QList *list); QObject *qt_qFindChild_helper(const QObject *parent, const QString &name, const QMetaObject &mo); #line 358 "../../include/QtCore/../../src/corelib/kernel/qobject.h" template inline T qFindChild(const QObject *o, const QString &name) { return static_cast(qt_qFindChild_helper(o, name, reinterpret_cast(0)->staticMetaObject)); } template inline QList qFindChildren(const QObject *o, const QString &name) { QList list; qt_qFindChildren_helper(o, name, 0, reinterpret_cast(0)->staticMetaObject, reinterpret_cast*>(&list)); return list; } template inline QList qFindChildren(const QObject *o, const QRegExp &re) { QList list; qt_qFindChildren_helper(o, 0, &re, reinterpret_cast(0)->staticMetaObject, reinterpret_cast*>(&list)); return list; } template inline T qobject_cast(QObject *object) { return static_cast(reinterpret_cast(0)->staticMetaObject.cast(object)); } template inline T qobject_cast(const QObject *object) { return static_cast(const_cast(reinterpret_cast(0)->staticMetaObject.cast(const_cast(object)))); } QDebug operator<<(QDebug, const QObject *); #line 2 "../../include/QtCore/qobject.h" #line 27 "../../include/QtCore/../../src/corelib/io/qiodevice.h" #line 1 "../../include/QtCore/qstring.h" #line 31 "../../include/QtCore/../../src/corelib/io/qiodevice.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QByteArray; class QIODevicePrivate; class QIODevice : public QObject { public: static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject . tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject . trUtf8(s, c); } virtual int qt_metacall(QMetaObject::Call, int, void * *); private: public: enum OpenModeFlag { NotOpen = 0x0000, ReadOnly = 0x0001, WriteOnly = 0x0002, ReadWrite = ReadOnly | WriteOnly, Append = 0x0004, Truncate = 0x0008, Text = 0x0010, Unbuffered = 0x0020 }; typedef QFlags OpenMode; QIODevice(); explicit QIODevice(QObject *parent); virtual ~QIODevice(); OpenMode openMode() const; void setTextModeEnabled(bool enabled); bool isTextModeEnabled() const; bool isOpen() const; bool isReadable() const; bool isWritable() const; virtual bool isSequential() const; virtual bool open(OpenMode mode); virtual void close(); virtual qint64 pos() const; virtual qint64 size() const; virtual bool seek(qint64 pos); virtual bool atEnd() const; virtual bool reset(); virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; qint64 read(char *data, qint64 maxlen); QByteArray read(qint64 maxlen); QByteArray readAll(); qint64 readLine(char *data, qint64 maxlen); QByteArray readLine(qint64 maxlen = 0); virtual bool canReadLine() const; qint64 write(const char *data, qint64 len); inline qint64 write(const QByteArray &data) { return write(data.constData(), data.size()); } qint64 peek(char *data, qint64 maxlen); QByteArray peek(qint64 maxlen); virtual bool waitForReadyRead(int msecs); virtual bool waitForBytesWritten(int msecs); void ungetChar(char c); inline bool putChar(char c) { return write(&c, 1) == 1; } inline bool getChar(char *c) { char ch; bool result = read(&ch, 1) == 1; if (c) *c = ch; return result; } QString errorString() const; protected: void readyRead(); void bytesWritten(qint64 bytes); void aboutToClose(); protected: QIODevice(QIODevicePrivate &dd, QObject *parent = 0); virtual qint64 readData(char *data, qint64 maxlen) = 0; virtual qint64 readLineData(char *data, qint64 maxlen); virtual qint64 writeData(const char *data, qint64 len) = 0; void setOpenMode(OpenMode openMode); void setErrorString(const QString &errorString); private: inline QIODevicePrivate* d_func() { return reinterpret_cast(d_ptr); } inline const QIODevicePrivate* d_func() const { return reinterpret_cast(d_ptr); } friend class QIODevicePrivate; QIODevice(const QIODevice &); QIODevice &operator=(const QIODevice &); public: typedef qint64 Offset; inline int flags() const { return (int) openMode(); } inline int mode() const { return (int) openMode(); } inline int state() const; inline bool isDirectAccess() const { return !isSequential(); } inline bool isSequentialAccess() const { return isSequential(); } inline bool isCombinedAccess() const { return false; } inline bool isBuffered() const { return true; } inline bool isRaw() const { return false; } inline bool isSynchronous() const { return true; } inline bool isAsynchronous() const { return false; } inline bool isTranslated() const { return (openMode() & Text) != 0; } inline bool isInactive() const { return !isOpen(); } typedef int Status; Status status() const; void resetStatus(); inline Offset at() const { return pos(); } inline bool at(Offset offset) { return seek(offset); } inline qint64 readBlock(char *data, quint64 maxlen) { return read(data, maxlen); } inline qint64 writeBlock(const char *data, quint64 len) { return write(data, len); } inline qint64 writeBlock(const QByteArray &data) { return write(data); } inline int getch() { char c; return getChar(&c) ? int(uchar(c)) : -1; } inline int putch(int c) { return putChar(c) ? int(uchar(c)) : -1; } inline int ungetch(int c) { ungetChar(uchar(c)); return c; } }; inline QFlags operator|(QIODevice::OpenMode::enum_type f1, QIODevice::OpenMode::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QIODevice::OpenMode::enum_type f1, QFlags f2) { return f2 | f1; } static const uint IO_Direct = 0x0100; static const uint IO_Sequential = 0x0200; static const uint IO_Combined = 0x0300; static const uint IO_TypeMask = 0x0300; static const uint IO_Raw = 0x0000; static const uint IO_Async = 0x0000; #line 198 "../../include/QtCore/../../src/corelib/io/qiodevice.h" static const uint IO_Open = 0x1000; static const uint IO_StateMask = 0xf000; static const uint IO_Ok = 0; static const uint IO_ReadError = 1; static const uint IO_WriteError = 2; static const uint IO_FatalError = 3; static const uint IO_ResourceError = 4; static const uint IO_OpenError = 5; static const uint IO_ConnectError = 5; static const uint IO_AbortError = 6; static const uint IO_TimeOutError = 7; static const uint IO_UnspecifiedError = 8; inline int QIODevice::state() const { return isOpen() ? 0x1000 : 0; } class QDebug; QDebug operator<<(QDebug debug, QIODevice::OpenMode modes); #line 2 "../../include/QtCore/qiodevice.h" #line 26 "../../include/QtCore/../../src/corelib/io/qdatastream.h" #line 1 "../../include/QtCore/qglobal.h" #line 27 "../../include/QtCore/../../src/corelib/io/qdatastream.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QByteArray; class QIODevice; template class QList; template class QLinkedList; template class QVector; template class QSet; template class QHash; template class QMap; class QDataStreamPrivate; class QDataStream { public: enum Version { Qt_1_0 = 1, Qt_2_0 = 2, Qt_2_1 = 3, Qt_3_0 = 4, Qt_3_1 = 5, Qt_3_3 = 6, Qt_4_0 = 7, Qt_4_1 = Qt_4_0 }; enum ByteOrder { BigEndian = QSysInfo::BigEndian, LittleEndian = QSysInfo::LittleEndian }; enum Status { Ok, ReadPastEnd, ReadCorruptData }; QDataStream(); explicit QDataStream(QIODevice *); QDataStream(QByteArray *, int mode); QDataStream(QByteArray *, QIODevice::OpenMode flags); QDataStream(const QByteArray &); virtual ~QDataStream(); QIODevice *device() const; void setDevice(QIODevice *); void unsetDevice(); bool atEnd() const; inline bool eof() const { return atEnd(); } Status status() const; void setStatus(Status status); void resetStatus(); ByteOrder byteOrder() const; void setByteOrder(ByteOrder); int version() const; void setVersion(int); QDataStream &operator>>(qint8 &i); QDataStream &operator>>(quint8 &i); QDataStream &operator>>(qint16 &i); QDataStream &operator>>(quint16 &i); QDataStream &operator>>(qint32 &i); QDataStream &operator>>(quint32 &i); QDataStream &operator>>(qint64 &i); QDataStream &operator>>(quint64 &i); QDataStream &operator>>(bool &i); QDataStream &operator>>(float &f); QDataStream &operator>>(double &f); QDataStream &operator>>(char *&str); QDataStream &operator<<(qint8 i); QDataStream &operator<<(quint8 i); QDataStream &operator<<(qint16 i); QDataStream &operator<<(quint16 i); QDataStream &operator<<(qint32 i); QDataStream &operator<<(quint32 i); QDataStream &operator<<(qint64 i); QDataStream &operator<<(quint64 i); QDataStream &operator<<(bool i); QDataStream &operator<<(float f); QDataStream &operator<<(double f); QDataStream &operator<<(const char *str); QDataStream &readBytes(char *&, uint &len); int readRawData(char *, int len); QDataStream &writeBytes(const char *, uint len); int writeRawData(const char *, int len); int skipRawData(int len); inline QDataStream &readRawBytes(char *str, uint len) { readRawData(str, (int)len); return *this; } inline QDataStream &writeRawBytes(const char *str, uint len) { writeRawData(str, (int)len); return *this; } inline bool isPrintableData() const { return false; } inline void setPrintableData(bool) {} private: QDataStream(const QDataStream &); QDataStream &operator=(const QDataStream &); QDataStreamPrivate *d; QIODevice *dev; bool owndev; bool noswap; ByteOrder byteorder; int ver; Status q_status; }; inline QIODevice *QDataStream::device() const { return dev; } inline QDataStream::ByteOrder QDataStream::byteOrder() const { return byteorder; } inline int QDataStream::version() const { return ver; } inline void QDataStream::setVersion(int v) { ver = v; } inline QDataStream &QDataStream::operator>>(quint8 &i) { return *this >> reinterpret_cast(i); } inline QDataStream &QDataStream::operator>>(quint16 &i) { return *this >> reinterpret_cast(i); } inline QDataStream &QDataStream::operator>>(quint32 &i) { return *this >> reinterpret_cast(i); } inline QDataStream &QDataStream::operator>>(quint64 &i) { return *this >> reinterpret_cast(i); } inline QDataStream &QDataStream::operator<<(quint8 i) { return *this << qint8(i); } inline QDataStream &QDataStream::operator<<(quint16 i) { return *this << qint16(i); } inline QDataStream &QDataStream::operator<<(quint32 i) { return *this << qint32(i); } inline QDataStream &QDataStream::operator<<(quint64 i) { return *this << qint64(i); } template QDataStream& operator>>(QDataStream& s, QList& l) { l.clear(); quint32 c; s >> c; for(quint32 i = 0; i < c; ++i) { T t; s >> t; l.append(t); if (s.atEnd()) break; } return s; } template QDataStream& operator<<(QDataStream& s, const QList& l) { s << quint32(l.size()); for (int i = 0; i < l.size(); ++i) s << l.at(i); return s; } template QDataStream& operator>>(QDataStream& s, QLinkedList& l) { l.clear(); quint32 c; s >> c; for(quint32 i = 0; i < c; ++i) { T t; s >> t; l.append(t); if (s.atEnd()) break; } return s; } template QDataStream& operator<<(QDataStream& s, const QLinkedList& l) { s << quint32(l.size()); typename QLinkedList::ConstIterator it = l.constBegin(); for(; it != l.constEnd(); ++it) s << *it; return s; } template QDataStream& operator>>(QDataStream& s, QVector& v) { v.clear(); quint32 c; s >> c; v.resize(c); for(quint32 i = 0; i < c; ++i) { T t; s >> t; v[i] = t; } return s; } template QDataStream& operator<<(QDataStream& s, const QVector& v) { s << quint32(v.size()); const T* it = v.begin(); for(; it != v.end(); ++it) s << *it; return s; } template QDataStream &operator>>(QDataStream &in, QSet &set) { set.clear(); quint32 c; in >> c; for (quint32 i = 0; i < c; ++i) { T t; in >> t; set << t; if (in.atEnd()) break; } return in; } template QDataStream& operator<<(QDataStream &out, const QSet &set) { out << quint32(set.size()); typename QSet::const_iterator i = set.constBegin(); while (i != set.constEnd()) { out << *i; ++i; } return out; } template QDataStream &operator>>(QDataStream &in, QHash &hash) { QDataStream::Status oldStatus = in.status(); in.resetStatus(); hash.clear(); quint32 n; in >> n; for (quint32 i = 0; i < n; ++i) { if (in.status() != QDataStream::Ok) break; Key k; T t; in >> k >> t; hash.insertMulti(k, t); } if (in.status() != QDataStream::Ok) hash.clear(); if (oldStatus != QDataStream::Ok) in.setStatus(oldStatus); return in; } template QDataStream &operator<<(QDataStream &out, const QHash& hash) { out << quint32(hash.size()); typename QHash::ConstIterator it = hash.end(); typename QHash::ConstIterator begin = hash.begin(); while (it != begin) { --it; out << it.key() << it.value(); } return out; } template QDataStream &operator>>(QDataStream &in, QMap &map) { QDataStream::Status oldStatus = in.status(); in.resetStatus(); map.clear(); quint32 n; in >> n; map.detach(); map.d->insertInOrder = true; for (quint32 i = 0; i < n; ++i) { if (in.status() != QDataStream::Ok) break; aKey key; aT value; in >> key >> value; map.insertMulti(key, value); } map.d->insertInOrder = false; if (in.status() != QDataStream::Ok) map.clear(); if (oldStatus != QDataStream::Ok) in.setStatus(oldStatus); return in; } template QDataStream &operator<<(QDataStream &out, const QMap &map) { out << quint32(map.size()); typename QMap::ConstIterator it = map.end(); typename QMap::ConstIterator begin = map.begin(); while (it != begin) { --it; out << it.key() << it.value(); } return out; } #line 2 "../../include/QtCore/qdatastream.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qpair.h" typedef QtValidLicenseForCoreModule QtCoreModule; template struct QPair { typedef T1 first_type; typedef T2 second_type; QPair() : first(T1()), second(T2()) {} QPair(const T1 &t1, const T2 &t2) : first(t1), second(t2) {} QPair &operator=(const QPair &other) { first = other.first; second = other.second; return *this; } T1 first; T2 second; }; template inline bool operator==(const QPair &p1, const QPair &p2) { return p1.first == p2.first && p1.second == p2.second; } template inline bool operator!=(const QPair &p1, const QPair &p2) { return !(p1 == p2); } template inline bool operator<(const QPair &p1, const QPair &p2) { return p1.first < p2.first || (!(p2.first < p1.first) && p1.second < p2.second); } template inline bool operator>(const QPair &p1, const QPair &p2) { return p2 < p1; } template inline bool operator<=(const QPair &p1, const QPair &p2) { return !(p2 < p1); } template inline bool operator>=(const QPair &p1, const QPair &p2) { return !(p1 < p2); } template QPair qMakePair(const T1 &x, const T2 &y) { return QPair(x, y); } template inline QDataStream& operator>>(QDataStream& s, QPair& p) { s >> p.first >> p.second; return s; } template inline QDataStream& operator<<(QDataStream& s, const QPair& p) { s << p.first << p.second; return s; } #line 2 "../../include/QtCore/qpair.h" #line 30 "../../include/QtCore/../../src/corelib/io/qdebug.h" #line 1 "../../include/QtCore/qtextstream.h" #line 1 "../../include/QtCore/../../src/corelib/io/qtextstream.h" #line 1 "../../include/QtCore/qiodevice.h" #line 26 "../../include/QtCore/../../src/corelib/io/qtextstream.h" #line 1 "../../include/QtCore/qstring.h" #line 27 "../../include/QtCore/../../src/corelib/io/qtextstream.h" #line 1 "../../include/QtCore/qchar.h" #line 28 "../../include/QtCore/../../src/corelib/io/qtextstream.h" #line 1 "../../include/QtCore/qtextcodec.h" #line 1 "../../include/QtCore/../../src/corelib/codecs/qtextcodec.h" #line 1 "../../include/QtCore/qstring.h" #line 26 "../../include/QtCore/../../src/corelib/codecs/qtextcodec.h" #line 1 "../../include/QtCore/qlist.h" #line 27 "../../include/QtCore/../../src/corelib/codecs/qtextcodec.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QTextCodec; class QIODevice; class QTextDecoder; class QTextEncoder; class QTextCodec { QTextCodec(const QTextCodec &); QTextCodec &operator=(const QTextCodec &); public: static QTextCodec* codecForName(const QByteArray &name); static QTextCodec* codecForName(const char *name) { return codecForName(QByteArray(name)); } static QTextCodec* codecForMib(int mib); static QList availableCodecs(); static QList availableMibs(); static QTextCodec* codecForLocale(); static void setCodecForLocale(QTextCodec *c); static QTextCodec* codecForTr(); static void setCodecForTr(QTextCodec *c); static QTextCodec* codecForCStrings(); static void setCodecForCStrings(QTextCodec *c); static QTextCodec *codecForHtml(const QByteArray &ba); QTextDecoder* makeDecoder() const; QTextEncoder* makeEncoder() const; bool canEncode(QChar) const; bool canEncode(const QString&) const; QString toUnicode(const QByteArray&) const; QString toUnicode(const char* chars) const; QByteArray fromUnicode(const QString& uc) const; enum ConversionFlag { DefaultConversion, ConvertInvalidToNull = 0x80000000, IgnoreHeader = 0x1 }; typedef QFlags ConversionFlags; struct ConverterState { ConverterState(ConversionFlags f = DefaultConversion) : flags(f), remainingChars(0), invalidChars(0), d(0) { state_data[0] = state_data[1] = state_data[2] = 0; } ~ConverterState() { if (d) qFree(d); } ConversionFlags flags; int remainingChars; int invalidChars; uint state_data[3]; void *d; private: ConverterState(const ConverterState &); ConverterState &operator=(const ConverterState &); }; QString toUnicode(const char *in, int length, ConverterState *state = 0) const { return convertToUnicode(in, length, state); } QByteArray fromUnicode(const QChar *in, int length, ConverterState *state = 0) const { return convertFromUnicode(in, length, state); } virtual QByteArray name() const = 0; virtual QList aliases() const; virtual int mibEnum() const = 0; protected: virtual QString convertToUnicode(const char *in, int length, ConverterState *state) const = 0; virtual QByteArray convertFromUnicode(const QChar *in, int length, ConverterState *state) const = 0; QTextCodec(); virtual ~QTextCodec(); public: static QTextCodec* codecForContent(const char*, int) { return 0; } static const char* locale(); static QTextCodec* codecForName(const char* hint, int) { return codecForName(QByteArray(hint)); } QByteArray fromUnicode(const QString& uc, int& lenInOut) const; QString toUnicode(const QByteArray&, int len) const; QByteArray mimeName() const { return name(); } static QTextCodec *codecForIndex(int i) { return codecForName(availableCodecs().at(i)); } private: friend class QTextCodecCleanup; static QTextCodec *cftr; }; inline QFlags operator|(QTextCodec::ConversionFlags::enum_type f1, QTextCodec::ConversionFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QTextCodec::ConversionFlags::enum_type f1, QFlags f2) { return f2 | f1; } inline QTextCodec* QTextCodec::codecForTr() { return cftr; } inline void QTextCodec::setCodecForTr(QTextCodec *c) { cftr = c; } inline QTextCodec* QTextCodec::codecForCStrings() { return QString::codecForCStrings; } inline void QTextCodec::setCodecForCStrings(QTextCodec *c) { QString::codecForCStrings = c; } class QTextEncoder { QTextEncoder(const QTextEncoder &); QTextEncoder &operator=(const QTextEncoder &); public: explicit QTextEncoder(const QTextCodec *codec) : c(codec), state() {} ~QTextEncoder(); QByteArray fromUnicode(const QString& str); QByteArray fromUnicode(const QChar *uc, int len); QByteArray fromUnicode(const QString& uc, int& lenInOut); private: const QTextCodec *c; QTextCodec::ConverterState state; }; class QTextDecoder { QTextDecoder(const QTextDecoder &); QTextDecoder &operator=(const QTextDecoder &); public: explicit QTextDecoder(const QTextCodec *codec) : c(codec), state() {} ~QTextDecoder(); QString toUnicode(const char* chars, int len); QString toUnicode(const QByteArray &ba); private: const QTextCodec *c; QTextCodec::ConverterState state; }; #line 2 "../../include/QtCore/qtextcodec.h" #line 32 "../../include/QtCore/../../src/corelib/io/qtextstream.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QTextCodec; class QTextDecoder; class QTextStreamPrivate; class QTextStream { inline QTextStreamPrivate* d_func() { return reinterpret_cast(d_ptr); } inline const QTextStreamPrivate* d_func() const { return reinterpret_cast(d_ptr); } friend class QTextStreamPrivate; public: enum RealNumberNotation { SmartNotation, FixedNotation, ScientificNotation }; enum FieldAlignment { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle }; enum Status { Ok, ReadPastEnd, ReadCorruptData }; enum NumberFlag { ShowBase = 0x1, ForcePoint = 0x2, ForceSign = 0x4, UppercaseBase = 0x8, UppercaseDigits = 0x10 }; typedef QFlags NumberFlags; QTextStream(); explicit QTextStream(QIODevice *device); explicit QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite); explicit QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite); explicit QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite); explicit QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly); virtual ~QTextStream(); void setCodec(QTextCodec *codec); void setCodec(const char *codecName); QTextCodec *codec() const; void setAutoDetectUnicode(bool enabled); bool autoDetectUnicode() const; void setGenerateByteOrderMark(bool generate); bool generateByteOrderMark() const; void setDevice(QIODevice *device); QIODevice *device() const; void setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite); QString *string() const; Status status() const; void setStatus(Status status); void resetStatus(); bool atEnd() const; void reset(); void flush(); bool seek(qint64 pos); void skipWhiteSpace(); QString readLine(qint64 maxlen = 0); QString readAll(); QString read(qint64 maxlen); void setFieldAlignment(FieldAlignment alignment); FieldAlignment fieldAlignment() const; void setPadChar(QChar ch); QChar padChar() const; void setFieldWidth(int width); int fieldWidth() const; void setNumberFlags(NumberFlags flags); NumberFlags numberFlags() const; void setIntegerBase(int base); int integerBase() const; void setRealNumberNotation(RealNumberNotation notation); RealNumberNotation realNumberNotation() const; void setRealNumberPrecision(int precision); int realNumberPrecision() const; QTextStream &operator>>(QChar &ch); QTextStream &operator>>(char &ch); QTextStream &operator>>(signed short &i); QTextStream &operator>>(unsigned short &i); QTextStream &operator>>(signed int &i); QTextStream &operator>>(unsigned int &i); QTextStream &operator>>(signed long &i); QTextStream &operator>>(unsigned long &i); QTextStream &operator>>(qlonglong &i); QTextStream &operator>>(qulonglong &i); QTextStream &operator>>(float &f); QTextStream &operator>>(double &f); QTextStream &operator>>(QString &s); QTextStream &operator>>(QByteArray &array); QTextStream &operator>>(char *c); QTextStream &operator<<(QBool b); QTextStream &operator<<(QChar ch); QTextStream &operator<<(char ch); QTextStream &operator<<(signed short i); QTextStream &operator<<(unsigned short i); QTextStream &operator<<(signed int i); QTextStream &operator<<(unsigned int i); QTextStream &operator<<(signed long i); QTextStream &operator<<(unsigned long i); QTextStream &operator<<(qlonglong i); QTextStream &operator<<(qulonglong i); QTextStream &operator<<(float f); QTextStream &operator<<(double f); QTextStream &operator<<(const QString &s); QTextStream &operator<<(const QByteArray &array); QTextStream &operator<<(const char *c); QTextStream &operator<<(const void *ptr); inline int flags() const { return flagsInternal(); } inline int flags(int f) { return flagsInternal(f); } inline int setf(int bits) { int old = flagsInternal(); flagsInternal(flagsInternal() | bits); return old; } inline int setf(int bits, int mask) { int old = flagsInternal(); flagsInternal(flagsInternal() | (bits & mask)); return old; } inline int unsetf(int bits) { int old = flagsInternal(); flagsInternal(flagsInternal() & ~bits); return old; } inline int width(int w) { int old = fieldWidth(); setFieldWidth(w); return old; } inline int fill(int f) { QChar ch = padChar(); setPadChar(QChar(f)); return ch.unicode(); } inline int precision(int p) { int old = realNumberPrecision(); setRealNumberPrecision(p); return old; } enum { skipws = 0x0001, left = 0x0002, right = 0x0004, internal = 0x0008, bin = 0x0010, oct = 0x0020, dec = 0x0040, hex = 0x0080, showbase = 0x0100, showpoint = 0x0200, uppercase = 0x0400, showpos = 0x0800, scientific = 0x1000, fixed = 0x2000 }; enum { basefield = bin | oct | dec | hex, adjustfield = left | right | internal, floatfield = scientific | fixed }; enum Encoding { Locale, Latin1, Unicode, UnicodeNetworkOrder, UnicodeReverse, RawUnicode, UnicodeUTF8 }; void setEncoding(Encoding encoding); inline QString read() { return readAll(); } inline void unsetDevice() { setDevice(0); } private: int flagsInternal() const; int flagsInternal(int flags); QTextStream(const QTextStream &); QTextStream &operator=(const QTextStream &); QTextStreamPrivate *d_ptr; }; inline QFlags operator|(QTextStream::NumberFlags::enum_type f1, QTextStream::NumberFlags::enum_type f2) { return QFlags(f1) | f2; } inline QFlags operator|(QTextStream::NumberFlags::enum_type f1, QFlags f2) { return f2 | f1; } typedef QTextStream & (*QTextStreamFunction)(QTextStream &); typedef void (QTextStream::*QTSMFI)(int); typedef void (QTextStream::*QTSMFC)(QChar); class QTextStreamManipulator { public: QTextStreamManipulator(QTSMFI m, int a) { mf = m; mc = 0; arg = a; } QTextStreamManipulator(QTSMFC m, QChar c) { mf = 0; mc = m; ch = c; } void exec(QTextStream &s) { if (mf) { (s.*mf)(arg); } else { (s.*mc)(ch); } } private: QTSMFI mf; QTSMFC mc; int arg; QChar ch; }; inline QTextStream &operator>>(QTextStream &s, QTextStreamFunction f) { return (*f)(s); } inline QTextStream &operator<<(QTextStream &s, QTextStreamFunction f) { return (*f)(s); } inline QTextStream &operator<<(QTextStream &s, QTextStreamManipulator m) { m.exec(s); return s; } QTextStream &bin(QTextStream &s); QTextStream &oct(QTextStream &s); QTextStream &dec(QTextStream &s); QTextStream &hex(QTextStream &s); QTextStream &showbase(QTextStream &s); QTextStream &forcesign(QTextStream &s); QTextStream &forcepoint(QTextStream &s); QTextStream &noshowbase(QTextStream &s); QTextStream &noforcesign(QTextStream &s); QTextStream &noforcepoint(QTextStream &s); QTextStream &uppercasebase(QTextStream &s); QTextStream &uppercasedigits(QTextStream &s); QTextStream &lowercasebase(QTextStream &s); QTextStream &lowercasedigits(QTextStream &s); QTextStream &fixed(QTextStream &s); QTextStream &scientific(QTextStream &s); QTextStream &left(QTextStream &s); QTextStream &right(QTextStream &s); QTextStream ¢er(QTextStream &s); QTextStream &endl(QTextStream &s); QTextStream &flush(QTextStream &s); QTextStream &reset(QTextStream &s); QTextStream &bom(QTextStream &s); QTextStream &ws(QTextStream &s); inline QTextStreamManipulator qSetFieldWidth(int width) { QTSMFI func = &QTextStream::setFieldWidth; return QTextStreamManipulator(func,width); } inline QTextStreamManipulator qSetPadChar(QChar ch) { QTSMFC func = &QTextStream::setPadChar; return QTextStreamManipulator(func, ch); } inline QTextStreamManipulator qSetRealNumberPrecision(int precision) { QTSMFI func = &QTextStream::setRealNumberPrecision; return QTextStreamManipulator(func, precision); } typedef QTextStream QTS; class QTextIStream : public QTextStream { public: inline explicit QTextIStream(const QString *s) : QTextStream(const_cast(s), QIODevice::ReadOnly) {} inline explicit QTextIStream(QByteArray *a) : QTextStream(a, QIODevice::ReadOnly) {} inline QTextIStream(FILE *f) : QTextStream(f, QIODevice::ReadOnly) {} private: QTextIStream(const QTextIStream &); QTextIStream &operator=(const QTextIStream &); }; class QTextOStream : public QTextStream { public: inline explicit QTextOStream(QString *s) : QTextStream(s, QIODevice::WriteOnly) {} inline explicit QTextOStream(QByteArray *a) : QTextStream(a, QIODevice::WriteOnly) {} inline QTextOStream(FILE *f) : QTextStream(f, QIODevice::WriteOnly) {} private: QTextOStream(const QTextOStream &); QTextOStream &operator=(const QTextOStream &); }; #line 2 "../../include/QtCore/qtextstream.h" #line 31 "../../include/QtCore/../../src/corelib/io/qdebug.h" #line 1 "../../include/QtCore/qstring.h" #line 32 "../../include/QtCore/../../src/corelib/io/qdebug.h" #line 1 "../../include/QtCore/qvector.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qvector.h" #line 1 "../../include/QtCore/qiterator.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qvector.h" #line 1 "../../include/QtCore/qatomic.h" #line 27 "../../include/QtCore/../../src/corelib/tools/qvector.h" #line 1 "../../include/QtCore/qalgorithms.h" #line 28 "../../include/QtCore/../../src/corelib/tools/qvector.h" #line 1 "../../include/QtCore/qlist.h" #line 29 "../../include/QtCore/../../src/corelib/tools/qvector.h" #line 1 "/usr/include/CC/vector" #line 1 "/usr/include/CC/stdexcept" #ident "@(#)unixsrc:usr/src/common/lib/libC/stdexcept /main/1" #line 6 "/usr/include/CC/vector" namespace std { template class _Vector_val { protected: _Vector_val(_Alloc _Al = _Alloc()) : _Alval(_Al) {} typedef typename _Alloc::template rebind<_Ty>::other _Alty; _Alty _Alval; }; template > class vector : public _Vector_val<_Ty, _Ax> { public: typedef vector<_Ty, _Ax> _Myt; typedef _Vector_val<_Ty, _Ax> _Mybase; typedef typename _Mybase::_Alty _Alloc; typedef _Alloc allocator_type; typedef typename _Alloc::size_type size_type; typedef typename _Alloc::difference_type difference_type; typedef typename _Alloc::pointer _Tptr; typedef typename _Alloc::const_pointer _Ctptr; typedef _Tptr pointer; typedef _Ctptr const_pointer; typedef typename _Alloc::reference reference; typedef typename _Alloc::const_reference const_reference; typedef typename _Alloc::value_type value_type; typedef _Ptrit iterator; typedef _Ptrit const_iterator; typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; vector() : _Mybase() { _Buy(0); } explicit vector(const _Alloc& _Al) : _Mybase(_Al) { _Buy(0); } explicit vector(size_type _Count) : _Mybase() { if (_Buy(_Count)) _Mylast = _Ufill(_Myfirst, _Count, _Ty()); } vector(size_type _Count, const _Ty& _Val) : _Mybase() { if (_Buy(_Count)) _Mylast = _Ufill(_Myfirst, _Count, _Val); } vector(size_type _Count, const _Ty& _Val, const _Alloc& _Al) : _Mybase(_Al) { if (_Buy(_Count)) _Mylast = _Ufill(_Myfirst, _Count, _Val); } vector(const _Myt& _Right) : _Mybase(_Right._Alval) { if (_Buy(_Right.size())) _Mylast = _Ucopy(_Right.begin(), _Right.end(), _Myfirst); } template vector(_Iter _First, _Iter _Last) : _Mybase() { _Construct(_First, _Last, _Iter_cat(_First)); } template vector(_Iter _First, _Iter _Last, const _Alloc& _Al) : _Mybase(_Al) { _Construct(_First, _Last, _Iter_cat(_First)); } template void _Construct(_Iter _Count, _Iter _Val, _Int_iterator_tag) { size_type _Size = (size_type)_Count; if (_Buy(_Size)) _Mylast = _Ufill(_Myfirst, _Size, (_Ty)_Val); } template void _Construct(_Iter _First, _Iter _Last, input_iterator_tag) { _Buy(0); insert(begin(), _First, _Last); } ~vector() { if (_Myfirst != 0) { _Destroy(_Myfirst, _Mylast); _Mybase::_Alval.deallocate(_Myfirst, _Myend - _Myfirst); } _Myfirst = 0, _Mylast = 0, _Myend = 0; } _Myt& operator=(const _Myt& _Right) { if (this == &_Right) ; else if (_Right.size() == 0) clear(); else if (_Right.size() <= size()) { pointer _Ptr = copy(_Right.begin(), _Right.end(), _Myfirst); _Destroy(_Ptr, _Mylast); _Mylast = _Myfirst + _Right.size(); } else if (_Right.size() <= capacity()) { const_iterator _Where = _Right.begin() + size(); copy(_Right.begin(), _Where, _Myfirst); _Mylast = _Ucopy(_Where, _Right.end(), _Mylast); } else { _Destroy(_Myfirst, _Mylast); _Mybase::_Alval.deallocate(_Myfirst, _Myend - _Myfirst); if (_Buy(_Right.size())) _Mylast = _Ucopy(_Right.begin(), _Right.end(), _Myfirst); } return (*this); } void reserve(size_type _Count) { if (max_size() < _Count) _Xlen(); else if (capacity() < _Count) { pointer _Ptr = _Mybase::_Alval.allocate(_Count, (void *)0); try { _Ucopy(begin(), end(), _Ptr); } catch (...) { _Mybase::_Alval.deallocate(_Ptr, _Count); throw; } size_type _Size = size(); if (_Myfirst != 0) { _Destroy(_Myfirst, _Mylast); _Mybase::_Alval.deallocate(_Myfirst, _Myend - _Myfirst); } _Myend = _Ptr + _Count; _Mylast = _Ptr + _Size; _Myfirst = _Ptr; }} size_type capacity() const { return (_Myfirst == 0 ? 0 : _Myend - _Myfirst); } iterator begin() { return (iterator(_Myfirst)); } const_iterator begin() const { return (const_iterator(_Myfirst)); } iterator end() { return (iterator(_Mylast)); } const_iterator end() const { return (const_iterator(_Mylast)); } reverse_iterator rbegin() { return (reverse_iterator(end())); } const_reverse_iterator rbegin() const { return (const_reverse_iterator(end())); } reverse_iterator rend() { return (reverse_iterator(begin())); } const_reverse_iterator rend() const { return (const_reverse_iterator(begin())); } void resize(size_type _Newsize) { resize(_Newsize, _Ty()); } void resize(size_type _Newsize, _Ty _Val) { if (size() < _Newsize) insert(end(), _Newsize - size(), _Val); else if (_Newsize < size()) erase(begin() + _Newsize, end()); } size_type size() const { return (_Myfirst == 0 ? 0 : _Mylast - _Myfirst); } size_type max_size() const { return (_Mybase::_Alval.max_size()); } bool empty() const { return (size() == 0); } _Alloc get_allocator() const { return (_Mybase::_Alval); } const_reference at(size_type _Off) const { if (size() <= _Off) _Xran(); return (*(begin() + _Off)); } reference at(size_type _Off) { if (size() <= _Off) _Xran(); return (*(begin() + _Off)); } reference operator[](size_type _Off) { return (*(begin() + _Off)); } const_reference operator[](size_type _Off) const { return (*(begin() + _Off)); } reference front() { return (*begin()); } const_reference front() const { return (*begin()); } reference back() { return (*(end() - 1)); } const_reference back() const { return (*(end() - 1)); } void push_back(const _Ty& _Val) { if (size() < capacity()) _Mylast = _Ufill(_Mylast, 1, _Val); else insert(end(), _Val); } void pop_back() { if (!empty()) { _Destroy(_Mylast - 1, _Mylast); --_Mylast; }} template void assign(_Iter _First, _Iter _Last) { _Assign(_First, _Last, _Iter_cat(_First)); } template void _Assign(_Iter _Count, _Iter _Val, _Int_iterator_tag) { assign((size_type)_Count, (_Ty)_Val); } template void _Assign(_Iter _First, _Iter _Last, input_iterator_tag) { erase(begin(), end()); insert(begin(), _First, _Last); } void assign(size_type _Count, const _Ty& _Val) { _Ty _Tmp = _Val; erase(begin(), end()); insert(begin(), _Count, _Tmp); } iterator insert(iterator _Where, const _Ty& _Val) { size_type _Off = size() == 0 ? 0 : _Where - begin(); insert(_Where, (size_type)1, _Val); return (begin() + _Off); } void insert(iterator _Where, size_type _Count, const _Ty& _Val) { _Ty _Tmp = _Val; size_type _Capacity = capacity(); if (_Count == 0) ; else if (max_size() - size() < _Count) _Xlen(); else if (_Capacity < size() + _Count) { _Capacity = max_size() - _Capacity / 2 < _Capacity ? 0 : _Capacity + _Capacity / 2; if (_Capacity < size() + _Count) _Capacity = size() + _Count; pointer _Newvec = _Mybase::_Alval.allocate(_Capacity, (void *)0); pointer _Ptr = _Newvec; try { _Ptr = _Ucopy(begin(), _Where, _Newvec); _Ptr = _Ufill(_Ptr, _Count, _Tmp); _Ucopy(_Where, end(), _Ptr); } catch (...) { _Destroy(_Newvec, _Ptr); _Mybase::_Alval.deallocate(_Newvec, _Capacity); throw; } _Count += size(); if (_Myfirst != 0) { _Destroy(_Myfirst, _Mylast); _Mybase::_Alval.deallocate(_Myfirst, _Myend - _Myfirst); } _Myend = _Newvec + _Capacity; _Mylast = _Newvec + _Count; _Myfirst = _Newvec; } else if ((size_type)(end() - _Where) < _Count) { _Ucopy(_Where, end(), _Where.base() + _Count); try { _Ufill(_Mylast, _Count - (end() - _Where), _Tmp); } catch (...) { _Destroy(_Where.base() + _Count, _Mylast + _Count); throw; } _Mylast += _Count; fill(_Where, end() - _Count, _Tmp); } else { iterator _Oldend = end(); _Mylast = _Ucopy(_Oldend - _Count, _Oldend, _Mylast); copy_backward(_Where, _Oldend - _Count, _Oldend); fill(_Where, _Where + _Count, _Tmp); }} template void insert(iterator _Where, _Iter _First, _Iter _Last) { _Insert(_Where, _First, _Last, _Iter_cat(_First)); } template void _Insert(iterator _Where, _Iter _First, _Iter _Last, _Int_iterator_tag) { insert(_Where, (size_type)_First, (_Ty)_Last); } template void _Insert(iterator _Where, _Iter _First, _Iter _Last, input_iterator_tag) { for (; _First != _Last; ++_First, ++_Where) _Where = insert(_Where, *_First); } template void _Insert(iterator _Where, _Iter _First, _Iter _Last, forward_iterator_tag) { size_type _Count = 0; _Distance(_First, _Last, _Count); size_type _Capacity = capacity(); if (_Count == 0) ; else if (max_size() - size() < _Count) _Xlen(); else if (_Capacity < size() + _Count) { _Capacity = max_size() - _Capacity / 2 < _Capacity ? 0 : _Capacity + _Capacity / 2; if (_Capacity < size() + _Count) _Capacity = size() + _Count; pointer _Newvec = _Mybase::_Alval.allocate(_Capacity, (void *)0); pointer _Ptr = _Newvec; try { _Ptr = _Ucopy(begin(), _Where, _Newvec); _Ptr = _Ucopy(_First, _Last, _Ptr); _Ucopy(_Where, end(), _Ptr); } catch (...) { _Destroy(_Newvec, _Ptr); _Mybase::_Alval.deallocate(_Newvec, _Capacity); throw; } _Count += size(); if (_Myfirst != 0) { _Destroy(_Myfirst, _Mylast); _Mybase::_Alval.deallocate(_Myfirst, _Myend - _Myfirst); } _Myend = _Newvec + _Capacity; _Mylast = _Newvec + _Count; _Myfirst = _Newvec; } else if ((size_type)(end() - _Where) < _Count) { _Ucopy(_Where, end(), _Where.base() + _Count); _Iter _Mid = _First; advance(_Mid, end() - _Where); try { _Ucopy(_Mid, _Last, _Mylast); } catch (...) { _Destroy(_Where.base() + _Count, _Mylast + _Count); throw; } _Mylast += _Count; copy(_First, _Mid, _Where); } else { iterator _Oldend = end(); _Mylast = _Ucopy(_Oldend - _Count, _Oldend, _Mylast); copy_backward(_Where, _Oldend - _Count, _Oldend); copy(_First, _Last, _Where); }} iterator erase(iterator _Where) { copy(_Where + 1, end(), _Where); _Destroy(_Mylast - 1, _Mylast); --_Mylast; return (_Where); } iterator erase(iterator _First, iterator _Last) { if (_First != _Last) { pointer _Ptr = copy(_Last, end(), _First.base()); _Destroy(_Ptr, _Mylast); _Mylast = _Ptr; } return (_First); } void clear() { erase(begin(), end()); } bool _Eq(const _Myt& _Right) const { return (size() == _Right.size() && equal(begin(), end(), _Right.begin())); } bool _Lt(const _Myt& _Right) const { return (lexicographical_compare(begin(), end(), _Right.begin(), _Right.end())); } void swap(_Myt& _Right) { if (_Mybase::_Alval == _Right._Alval) { std::swap(_Myfirst, _Right._Myfirst); std::swap(_Mylast, _Right._Mylast); std::swap(_Myend, _Right._Myend); } else { _Myt _Ts = *this; *this = _Right, _Right = _Ts; }} protected: bool _Buy(size_type _Capacity) { _Myfirst = 0, _Mylast = 0, _Myend = 0; if (_Capacity == 0) return (false); else if (max_size() < _Capacity) _Xlen(); else { _Myfirst = _Mybase::_Alval.allocate(_Capacity, (void *)0); _Mylast = _Myfirst; _Myend = _Myfirst + _Capacity; } return (true); } void _Destroy(pointer _First, pointer _Last) { _Destroy_range(_First, _Last, _Alval); } template pointer _Ucopy(_Iter _First, _Iter _Last, pointer _Ptr) { return (uninitialized_copy(_First, _Last, _Ptr, _Alval)); } pointer _Ufill(pointer _Ptr, size_type _Count, const _Ty &_Val) { uninitialized_fill_n(_Ptr, _Count, _Val, _Alval); return (_Ptr + _Count); } void _Xlen() const { throw length_error("vector too long"); } void _Xran() const { throw out_of_range("invalid vector subscript"); } pointer _Myfirst; pointer _Mylast; pointer _Myend; }; template inline bool operator==(const vector<_Ty, _Alloc>& _Left, const vector<_Ty, _Alloc>& _Right) { return (_Left._Eq(_Right)); } template inline bool operator!=(const vector<_Ty, _Alloc>& _Left, const vector<_Ty, _Alloc>& _Right) { return (!(_Left == _Right)); } template inline bool operator<(const vector<_Ty, _Alloc>& _Left, const vector<_Ty, _Alloc>& _Right) { return (_Left._Lt(_Right)); } template inline bool operator>(const vector<_Ty, _Alloc>& _Left, const vector<_Ty, _Alloc>& _Right) { return (_Right < _Left); } template inline bool operator<=(const vector<_Ty, _Alloc>& _Left, const vector<_Ty, _Alloc>& _Right) { return (!(_Right < _Left)); } template inline bool operator>=(const vector<_Ty, _Alloc>& _Left, const vector<_Ty, _Alloc>& _Right) { return (!(_Left < _Right)); } template inline void swap(vector<_Ty, _Alloc>& _Left, vector<_Ty, _Alloc>& _Right) { _Left.swap(_Right); } typedef unsigned char _Vbase; const int _VBITS = 8 * sizeof (_Vbase); template class vector<_Bool, _Alloc> { public: typedef typename _Alloc::size_type size_type; typedef typename _Alloc::difference_type _Dift; typedef std::vector<_Vbase, typename _Alloc::template rebind<_Vbase>::other> _Vbtype; typedef std::vector<_Bool, _Alloc> _Myt; typedef _Dift difference_type; typedef _Bool _Ty; typedef _Alloc allocator_type; class reference { public: reference() : _Mask(0), _Myptr(0) {} reference(size_t _Off, _Vbase *_Ptr) : _Mask((_Vbase)(1 << _Off)), _Myptr(_Ptr) {} reference& operator=(const reference& _Right) { return (*this = bool(_Right)); } reference& operator=(bool _Val) { if (_Val) *_Myptr |= _Mask; else *_Myptr &= ~_Mask; return (*this); } void flip() { *_Myptr ^= _Mask; } bool operator~() const { return (!bool(*this)); } operator bool() const { return ((*_Myptr & _Mask) != 0); } protected: _Vbase _Mask; _Vbase *_Myptr; }; typedef reference _Reft; typedef bool const_reference; typedef bool value_type; class const_iterator : public _Ranit<_Bool, _Dift, const_reference *, const_reference> { public: typedef random_access_iterator_tag iterator_category; typedef _Bool value_type; typedef _Dift difference_type; typedef const_reference *pointer; typedef const_reference reference; const_iterator() : _Myoff(0), _Myptr(0) {} const_iterator(size_t _Off, typename _Vbtype::const_iterator _Where) : _Myoff(_Off), _Myptr(_Where.base()) {} const_reference operator*() const { return (_Reft(_Myoff, (_Vbase *)_Myptr)); } const_iterator& operator++() { _Inc(); return (*this); } const_iterator operator++(int) { const_iterator _Tmp = *this; _Inc(); return (_Tmp); } const_iterator& operator--() { _Dec(); return (*this); } const_iterator operator--(int) { const_iterator _Tmp = *this; _Dec(); return (_Tmp); } const_iterator& operator+=(difference_type _Off) { _Myoff += _Off; _Myptr += _Myoff / _VBITS; _Myoff %= _VBITS; return (*this); } const_iterator operator+(difference_type _Off) const { const_iterator _Tmp = *this; return (_Tmp += _Off); } const_iterator& operator-=(difference_type _Off) { return (*this += -_Off); } const_iterator operator-(difference_type _Off) const { const_iterator _Tmp = *this; return (_Tmp -= _Off); } difference_type operator-(const const_iterator _Right) const { return (_VBITS * (_Myptr - _Right._Myptr) + (difference_type)_Myoff - (difference_type)_Right._Myoff); } const_reference operator[](difference_type _Off) const { return (*(*this + _Off)); } bool operator==(const const_iterator& _Right) const { return (_Myptr == _Right._Myptr && _Myoff == _Right._Myoff); } bool operator!=(const const_iterator& _Right) const { return (!(*this == _Right)); } bool operator<(const const_iterator& _Right) const { return (_Myptr < _Right._Myptr || _Myptr == _Right._Myptr && _Myoff < _Right._Myoff); } bool operator>(const const_iterator& _Right) const { return (_Right < *this); } bool operator<=(const const_iterator& _Right) const { return (!(_Right < *this)); } bool operator>=(const const_iterator& _Right) const { return (!(*this < _Right)); } friend const_iterator operator+(difference_type _Off, const const_iterator& _Right) { return (_Right + _Off); } protected: void _Dec() { if (_Myoff != 0) --_Myoff; else _Myoff = _VBITS - 1, --_Myptr; } void _Inc() { if (_Myoff < _VBITS - 1) ++_Myoff; else _Myoff = 0, ++_Myptr; } size_t _Myoff; const _Vbase *_Myptr; }; class iterator : public const_iterator { public: typedef random_access_iterator_tag iterator_category; typedef _Bool value_type; typedef _Dift difference_type; typedef _Reft *pointer; typedef _Reft reference; iterator() : const_iterator() {} iterator(size_t _Off, typename _Vbtype::iterator _Where) : const_iterator(_Off, _Where) {} reference operator*() const { return (_Reft(_Myoff, (_Vbase *)_Myptr)); } iterator& operator++() { _Inc(); return (*this); } iterator operator++(int) { iterator _Tmp = *this; _Inc(); return (_Tmp); } iterator& operator--() { _Dec(); return (*this); } iterator operator--(int) { iterator _Tmp = *this; _Dec(); return (_Tmp); } iterator& operator+=(difference_type _Off) { _Myoff += _Off; _Myptr += _Myoff / _VBITS; _Myoff %= _VBITS; return (*this); } iterator operator+(difference_type _Off) const { iterator _Tmp = *this; return (_Tmp += _Off); } iterator& operator-=(difference_type _Off) { return (*this += -_Off); } iterator operator-(difference_type _Off) const { iterator _Tmp = *this; return (_Tmp -= _Off); } difference_type operator-(const iterator _Right) const { return (_VBITS * (_Myptr - _Right._Myptr) + (difference_type)_Myoff - (difference_type)_Right._Myoff); } reference operator[](difference_type _Off) const { return (*(*this + _Off)); } friend iterator operator+(difference_type _Off, const iterator& _Right) { return (_Right + _Off); } }; typedef iterator pointer; typedef const_iterator const_pointer; typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; vector() : _Mysize(0), _Myvec() {} explicit vector(const _Alloc& _Al) : _Mysize(0), _Myvec(_Al) {} explicit vector(size_type _Count, bool _Val = false) : _Mysize(0), _Myvec(_Nw(_Count), (_Vbase)(_Val ? -1 : 0)) { _Trim(_Count); } vector(size_type _Count, bool _Val, const _Alloc& _Al) : _Mysize(0), _Myvec(_Nw(_Count), (_Vbase)(_Val ? -1 : 0), _Al) { _Trim(_Count); } template vector(_Iter _First, _Iter _Last) : _Mysize(0), _Myvec() { _BConstruct(_First, _Last, _Iter_cat(_First)); } template vector(_Iter _First, _Iter _Last, const _Alloc& _Al) : _Mysize(0), _Myvec(_Al) { _BConstruct(_First, _Last, _Iter_cat(_First)); } template void _BConstruct(_Iter _Count, _Iter _Val, _Int_iterator_tag) { size_type _Num = (size_type)_Count; _Myvec.assign(_Num, (_Ty)_Val ? -1 : 0); _Trim(_Num); } template void _BConstruct(_Iter _First, _Iter _Last, input_iterator_tag) { insert(begin(), _First, _Last); } ~vector() { _Mysize = 0; } void reserve(size_type _Count) { _Myvec.reserve(_Nw(_Count)); } size_type capacity() const { return (_Myvec.capacity() * _VBITS); } iterator begin() { return (iterator(0, _Myvec.begin())); } const_iterator begin() const { return (const_iterator(0, _Myvec.begin())); } iterator end() { iterator _Tmp = begin(); if (0 < _Mysize) _Tmp += _Mysize; return (_Tmp); } const_iterator end() const { const_iterator _Tmp = begin(); if (0 < _Mysize) _Tmp += _Mysize; return (_Tmp); } reverse_iterator rbegin() { return (reverse_iterator(end())); } const_reverse_iterator rbegin() const { return (const_reverse_iterator(end())); } reverse_iterator rend() { return (reverse_iterator(begin())); } const_reverse_iterator rend() const { return (const_reverse_iterator(begin())); } void resize(size_type _Newsize, bool _Val = false) { if (size() < _Newsize) insert(end(), _Newsize - size(), _Val); else if (_Newsize < size()) erase(begin() + _Newsize, end()); } size_type size() const { return (_Mysize); } size_type max_size() const { static const size_type _Maxsize = _Myvec.max_size() < (size_type)(-1) / _VBITS ? _Myvec.max_size() * _VBITS : (size_type)(-1); return (_Maxsize); } bool empty() const { return (size() == 0); } _Alloc get_allocator() const { return (_Myvec.get_allocator()); } const_reference at(size_type _Off) const { if (size() <= _Off) _Xran(); return (*(begin() + _Off)); } reference at(size_type _Off) { if (size() <= _Off) _Xran(); return (*(begin() + _Off)); } const_reference operator[](size_type _Off) const { return (*(begin() + _Off)); } reference operator[](size_type _Off) { return (*(begin() + _Off)); } reference front() { return (*begin()); } const_reference front() const { return (*begin()); } reference back() { return (*(end() - 1)); } const_reference back() const { return (*(end() - 1)); } void push_back(bool _Val) { insert(end(), _Val); } void pop_back() { if (!empty()) erase(end() - 1); } template void assign(_Iter _First, _Iter _Last) { _Assign(_First, _Last, _Iter_cat(_First)); } template void _Assign(_Iter _Count, _Iter _Val, _Int_iterator_tag) { assign((size_type)_Count, (_Ty)_Val); } template void _Assign(_Iter _First, _Iter _Last, input_iterator_tag) { erase(begin(), end()); insert(begin(), _First, _Last); } void assign(size_type _Count, bool _Val) { erase(begin(), end()); insert(begin(), _Count, _Val); } iterator insert(iterator _Where, bool _Val) { size_type _Off = _Where - begin(); insert(_Where, (size_type)1, _Val); return (begin() + _Off); } void insert(iterator _Where, size_type _Count, bool _Val) { if (_Count == 0) ; else if (max_size() - size() < _Count) _Xlen(); else { if (size() == 0) { _Myvec.resize(_Nw(size() + _Count), 0); _Where = begin(); } else { size_type _Off = _Where - begin(); _Myvec.resize(_Nw(size() + _Count), 0); _Where = begin() + _Off; copy_backward(_Where, end(), end() + _Count); } fill(_Where, _Where + _Count, _Val); _Mysize += _Count; }} template void insert(iterator _Where, _Iter _First, _Iter _Last) { _Insert(_Where, _First, _Last, _Iter_cat(_First)); } template void _Insert(iterator _Where, _Iter _Count, _Iter _Val, _Int_iterator_tag) { insert(_Where, (size_type)_Count, (_Ty)_Val); } template void _Insert(iterator _Where, _Iter _First, _Iter _Last, input_iterator_tag) { size_type _Off = _Where - begin(); for (; _First != _Last; ++_First, ++_Off) insert(begin() + _Off, *_First); } template void _Insert(iterator _Where, _Iter _First, _Iter _Last, forward_iterator_tag) { size_type _Capacity = 0; _Distance(_First, _Last, _Capacity); if (_Capacity == 0) ; else if (max_size() - size() < _Capacity) _Xlen(); else { if (size() == 0) { _Myvec.resize(_Nw(size() + _Capacity), 0); _Where = begin(); } else { size_type _Off = _Where - begin(); _Myvec.resize(_Nw(size() + _Capacity), 0); _Where = begin() + _Off; copy_backward(_Where, end(), end() + _Capacity); } copy(_First, _Last, _Where); _Mysize += _Capacity; }} iterator erase(iterator _Where) { copy(_Where + 1, end(), _Where); _Trim(_Mysize - 1); return (_Where); } iterator erase(iterator _First, iterator _Last) { iterator _Next = copy(_Last, end(), _First); _Trim(_Next - begin()); return (_First); } void clear() { erase(begin(), end()); } void flip() { for (typename _Vbtype::iterator _Next = _Myvec.begin(); _Next != _Myvec.end(); ++_Next) *_Next = (_Vbase)~*_Next; _Trim(_Mysize); } bool _Eq(const _Myt& _Right) const { return (_Mysize == _Right._Mysize && _Myvec == _Right._Myvec); } bool _Lt(const _Myt& _Right) const { return (lexicographical_compare(begin(), end(), _Right.begin(), _Right.end())); } void swap(_Myt& _Right) { std::swap(_Mysize, _Right._Mysize); _Myvec.swap(_Right._Myvec); } static void swap(reference _Left, reference _Right) { bool _Val = _Left; _Left = _Right; _Right = _Val; } protected: static size_type _Nw(size_type _Count) { return ((_Count + _VBITS - 1) / _VBITS); } void _Trim(size_type _Size) { if (max_size() < _Size) _Xlen(); size_type _Words = _Nw(_Size); if (_Words < _Myvec.size()) _Myvec.erase(_Myvec.begin() + _Words, _Myvec.end()); _Mysize = _Size; _Size %= _VBITS; if (0 < _Size) _Myvec[_Words - 1] &= (_Vbase)((1 << _Size) - 1); } void _Xlen() const { throw length_error("vector too long"); } void _Xran() const { throw out_of_range("invalid vector subscript"); } size_type _Mysize; _Vbtype _Myvec; }; typedef vector > _Bvector; } #line 33 "../../include/QtCore/../../src/corelib/tools/qvector.h" typedef QtValidLicenseForCoreModule QtCoreModule; struct QVectorData { QBasicAtomic ref; int alloc; int size; uint sharable : 1; static QVectorData shared_null; static QVectorData *malloc(int sizeofTypedData, int size, int sizeofT, QVectorData *init); static int grow(int sizeofTypedData, int size, int sizeofT, bool excessive); }; template struct QVectorTypedData { QBasicAtomic ref; int alloc; int size; uint sharable : 1; T array[1]; }; template class QVector { typedef QVectorTypedData Data; union { QVectorData *p; QVectorTypedData *d; }; public: inline QVector() : p(&QVectorData::shared_null) { d->ref.ref(); } explicit QVector(int size); QVector(int size, const T &t); inline QVector(const QVector &v) : d(v.d) { d->ref.ref(); if (!d->sharable) detach_helper(); } inline ~QVector() { if (!d) return; if (!d->ref.deref()) free(d); } QVector &operator=(const QVector &v); bool operator==(const QVector &v) const; inline bool operator!=(const QVector &v) const { return !(*this == v); } inline int size() const { return d->size; } inline bool isEmpty() const { return d->size == 0; } void resize(int size); inline int capacity() const { return d->alloc; } void reserve(int size); inline void squeeze() { realloc(d->size, d->size); } inline void detach() { if (d->ref != 1) detach_helper(); } inline bool isDetached() const { return d->ref == 1; } inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; } inline T *data() { detach(); return d->array; } inline const T *data() const { return d->array; } inline const T *constData() const { return d->array; } void clear(); const T &at(int i) const; T &operator[](int i); const T &operator[](int i) const; void append(const T &t); void prepend(const T &t); void insert(int i, const T &t); void insert(int i, int n, const T &t); void replace(int i, const T &t); void remove(int i); void remove(int i, int n); QVector &fill(const T &t, int size = -1); int indexOf(const T &t, int from = 0) const; int lastIndexOf(const T &t, int from = -1) const; bool contains(const T &t) const; int count(const T &t) const; typedef T* iterator; typedef const T* const_iterator; inline iterator begin() { detach(); return d->array; } inline const_iterator begin() const { return d->array; } inline const_iterator constBegin() const { return d->array; } inline iterator end() { detach(); return d->array + d->size; } inline const_iterator end() const { return d->array + d->size; } inline const_iterator constEnd() const { return d->array + d->size; } iterator insert(iterator before, int n, const T &x); inline iterator insert(iterator before, const T &x) { return insert(before, 1, x); } iterator erase(iterator begin, iterator end); inline iterator erase(iterator pos) { return erase(pos, pos+1); } inline int count() const { return d->size; } inline T& first() { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qvector.h",132);} while (0); return *begin(); } inline const T &first() const { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qvector.h",133);} while (0); return *begin(); } inline T& last() { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qvector.h",134);} while (0); return *(end()-1); } inline const T &last() const { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qvector.h",135);} while (0); return *(end()-1); } QVector mid(int pos, int length = -1) const; T value(int i) const; T value(int i, const T &defaultValue) const; typedef T value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type& reference; typedef const value_type& const_reference; typedef ptrdiff_t difference_type; typedef iterator Iterator; typedef const_iterator ConstIterator; typedef int size_type; inline void push_back(const T &t) { append(t); } inline void push_front(const T &t) { prepend(t); } void pop_back() { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qvector.h",157);} while (0); erase(end()-1); } void pop_front() { do {if(!(!isEmpty()))qt_assert("!isEmpty()","../../include/QtCore/../../src/corelib/tools/qvector.h",158);} while (0); erase(begin()); } inline bool empty() const { return d->size == 0; } inline T& front() { return first(); } inline const_reference front() const { return first(); } inline reference back() { return last(); } inline const_reference back() const { return last(); } QVector &operator+=(const QVector &l); inline QVector operator+(const QVector &l) const { QVector n = *this; n += l; return n; } inline QVector &operator+=(const T &t) { append(t); return *this; } inline QVector &operator<< (const T &t) { append(t); return *this; } inline QVector &operator<<(const QVector &l) { *this += l; return *this; } QList toList() const; static QVector fromList(const QList &list); static inline QVector fromStdVector(const std::vector &vector) { QVector tmp; qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; } inline std::vector toStdVector() const { std::vector tmp; qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; } private: void detach_helper(); QVectorData *malloc(int alloc); void realloc(int size, int alloc); void free(Data *d); }; template void QVector::detach_helper() { realloc(d->size, d->alloc); } template void QVector::reserve(int asize) { if (asize > d->alloc) realloc(d->size, asize); } template void QVector::resize(int asize) { realloc(asize, (asize > d->alloc || (asize < d->size && asize < (d->alloc >> 1))) ? QVectorData::grow(sizeof(Data), asize, sizeof(T), QTypeInfo::isStatic) : d->alloc); } template inline void QVector::clear() { *this = QVector(); } template inline const T &QVector::at(int i) const { do {if(!(i >= 0 && i < d->size))qt_assert_x("QVector::at", "index out of range","../../include/QtCore/../../src/corelib/tools/qvector.h",211);} while (0); return d->array[i]; } template inline const T &QVector::operator[](int i) const { do {if(!(i >= 0 && i < d->size))qt_assert_x("QVector::operator[]", "index out of range","../../include/QtCore/../../src/corelib/tools/qvector.h",215);} while (0); return d->array[i]; } template inline T &QVector::operator[](int i) { do {if(!(i >= 0 && i < d->size))qt_assert_x("QVector::operator[]", "index out of range","../../include/QtCore/../../src/corelib/tools/qvector.h",219);} while (0); return data()[i]; } template inline void QVector::insert(int i, const T &t) { do {if(!(i >= 0 && i <= d->size))qt_assert_x("QVector::insert", "index out of range","../../include/QtCore/../../src/corelib/tools/qvector.h",223);} while (0); insert(begin() + i, 1, t); } template inline void QVector::insert(int i, int n, const T &t) { do {if(!(i >= 0 && i <= d->size))qt_assert_x("QVector::insert", "index out of range","../../include/QtCore/../../src/corelib/tools/qvector.h",227);} while (0); insert(begin() + i, n, t); } template inline void QVector::remove(int i, int n) { do {if(!(i >= 0 && n >= 0 && i + n <= d->size))qt_assert_x("QVector::remove", "index out of range","../../include/QtCore/../../src/corelib/tools/qvector.h",231);} while (0); erase(begin() + i, begin() + i + n); } template inline void QVector::remove(int i) { do {if(!(i >= 0 && i < d->size))qt_assert_x("QVector::remove", "index out of range","../../include/QtCore/../../src/corelib/tools/qvector.h",235);} while (0); erase(begin() + i, begin() + i + 1); } template inline void QVector::prepend(const T &t) { insert(begin(), 1, t); } template inline void QVector::replace(int i, const T &t) { do {if(!(i >= 0 && i < d->size))qt_assert_x("QVector::replace", "index out of range","../../include/QtCore/../../src/corelib/tools/qvector.h",244);} while (0); const T copy(t); data()[i] = copy; } template QVector &QVector::operator=(const QVector &v) { typename QVector::Data *x = v.d; x->ref.ref(); x = qAtomicSetPtr(&d, x); if (!x->ref.deref()) free(x); if (!d->sharable) detach_helper(); return *this; } template inline QVectorData *QVector::malloc(int aalloc) { return static_cast(qMalloc(sizeof(Data) + (aalloc - 1) * sizeof(T))); } template QVector::QVector(int asize) { p = malloc(asize); d->ref.init(1); d->alloc = d->size = asize; d->sharable = true; if (QTypeInfo::isComplex) { T* b = d->array; T* i = d->array + d->size; while (i != b) new (--i) T; } else { qMemSet(d->array, 0, asize * sizeof(T)); } } template QVector::QVector(int asize, const T &t) { p = malloc(asize); d->ref.init(1); d->alloc = d->size = asize; d->sharable = true; T* i = d->array + d->size; while (i != d->array) new (--i) T(t); } template void QVector::free(Data *x) { if (QTypeInfo::isComplex) { T* b = x->array; T* i = b + x->size; while (i-- != b) i->~T(); } qFree(x); } template void QVector::realloc(int asize, int aalloc) { T *j, *i, *b; union { QVectorData *p; Data *d; } x; x.d = d; if (QTypeInfo::isComplex && aalloc == d->alloc && d->ref == 1) { i = d->array + d->size; j = d->array + asize; if (i > j) { while (i-- != j) i->~T(); } else { while (j-- != i) new (j) T; } d->size = asize; return; } if (aalloc != d->alloc || d->ref != 1) { if (QTypeInfo::isStatic) { x.p = malloc(aalloc); } else if (d->ref != 1) { x.p = QVectorData::malloc(sizeof(Data), aalloc, sizeof(T), p); } else { if (QTypeInfo::isComplex) { if (asize < d->size) { j = d->array + asize; i = d->array + d->size; while (i-- != j) i->~T(); i = d->array + asize; } } x.p = p = static_cast(qRealloc(p, sizeof(Data) + (aalloc - 1) * sizeof(T))); } x.d->ref.init(1); x.d->sharable = true; } if (QTypeInfo::isComplex) { if (asize < d->size) { j = d->array + asize; i = x.d->array + asize; } else { i = x.d->array + asize; j = x.d->array + d->size; while (i != j) new (--i) T; j = d->array + d->size; } if (i != j) { b = x.d->array; while (i != b) new (--i) T(*--j); } } else if (asize > d->size) { qMemSet(x.d->array + d->size, 0, (asize - d->size) * sizeof(T)); } x.d->size = asize; x.d->alloc = aalloc; if (d != x.d) { x.d = qAtomicSetPtr(&d, x.d); if (!x.d->ref.deref()) free(x.d); } } template T QVector::value(int i) const { if (i < 0 || i >= p->size) { return T(); } return d->array[i]; } template T QVector::value(int i, const T &defaultValue) const { return ((i < 0 || i >= p->size) ? defaultValue : d->array[i]); } template void QVector::append(const T &t) { const T copy(t); if (d->ref != 1 || d->size + 1 > d->alloc) realloc(d->size, QVectorData::grow(sizeof(Data), d->size + 1, sizeof(T), QTypeInfo::isStatic)); if (QTypeInfo::isComplex) new (d->array + d->size) T(copy); else d->array[d->size] = copy; ++d->size; } template typename QVector::iterator QVector::insert(iterator before, size_type n, const T &t) { int offset = before - d->array; if (n != 0) { const T copy(t); if (d->ref != 1 || d->size + n > d->alloc) realloc(d->size, QVectorData::grow(sizeof(Data), d->size + n, sizeof(T), QTypeInfo::isStatic)); if (QTypeInfo::isStatic) { T *b = d->array + d->size; T *i = d->array + d->size + n; while (i != b) new (--i) T; i = d->array + d->size; T *j = i + n; b = d->array + offset; while (i != b) *--j = *--i; i = b+n; while (i != b) *--i = copy; } else { T *b = d->array + offset; T *i = b + n; memmove(i, b, (d->size - offset) * sizeof(T)); while (i != b) new (--i) T(copy); } d->size += n; } return d->array + offset; } template typename QVector::iterator QVector::erase(iterator abegin, iterator aend) { int f = abegin - d->array; int l = aend - d->array; int n = l - f; detach(); if (QTypeInfo::isComplex) { qCopy(d->array+l, d->array+d->size, d->array+f); T *i = d->array+d->size; T* b = d->array+d->size-n; while (i != b) { --i; i->~T(); } } else { memmove(d->array + f, d->array + l, (d->size-l)*sizeof(T)); } d->size -= n; return d->array + f; } template bool QVector::operator==(const QVector &v) const { if (d->size != v.d->size) return false; if (d == v.d) return true; T* b = d->array; T* i = b + d->size; T* j = v.d->array + d->size; while (i != b) if (!(*--i == *--j)) return false; return true; } template QVector &QVector::fill(const T &from, int asize) { const T copy(from); resize(asize < 0 ? d->size : asize); if (d->size) { T *i = d->array + d->size; T *b = d->array; while (i != b) *--i = copy; } return *this; } template QVector &QVector::operator+=(const QVector &l) { int newSize = d->size + l.d->size; realloc(d->size, newSize); T *w = d->array + newSize; T *i = l.d->array + l.d->size; T *b = l.d->array; while (i != b) { if (QTypeInfo::isComplex) new (--w) T(*--i); else *--w = *--i; } d->size = newSize; return *this; } template int QVector::indexOf(const T &t, int from) const { if (from < 0) from = qMax(from + d->size, 0); if (from < d->size) { T* n = d->array + from - 1; T* e = d->array + d->size; while (++n != e) if (*n == t) return n - d->array; } return -1; } template int QVector::lastIndexOf(const T &t, int from) const { if (from < 0) from += d->size; else if (from >= d->size) from = d->size-1; if (from >= 0) { T* b = d->array; T* n = d->array + from + 1; while (n != b) { if (*--n == t) return n - b; } } return -1; } template bool QVector::contains(const T &t) const { T* b = d->array; T* i = d->array + d->size; while (i != b) if (*--i == t) return true; return false; } template int QVector::count(const T &t) const { int c = 0; T* b = d->array; T* i = d->array + d->size; while (i != b) if (*--i == t) ++c; return c; } template QVector QVector::mid(int pos, int length) const { if (length < 0) length = size() - pos; if (pos == 0 && length == size()) return *this; QVector copy; if (pos + length > size()) length = size() - pos; for (int i = pos; i < pos + length; ++i) copy += at(i); return copy; } template QList QVector::toList() const { QList result; for (int i = 0; i < size(); ++i) result.append(at(i)); return result; } template QVector QList::toVector() const { QVector result(size()); for (int i = 0; i < size(); ++i) result[i] = at(i); return result; } template QVector QVector::fromList(const QList &list) { return list.toVector(); } template QList QList::fromVector(const QVector &vector) { return vector.toList(); } template class QVectorIterator { typedef typename QVector ::const_iterator const_iterator; QVector c; const_iterator i; public: inline QVectorIterator(const QVector &container) : c(container), i(c . constBegin()) {} inline QVectorIterator &operator=(const QVector &container) { c = container; i = c . constBegin(); return *this; } inline void toFront() { i = c . constBegin(); } inline void toBack() { i = c . constEnd(); } inline bool hasNext() const { return i != c . constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c . constBegin(); } inline const T &previous() { return * --i; } inline const T &peekPrevious() const { const_iterator p = i; return * --p; } inline bool findNext(const T &t) { while (i != c . constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c . constBegin()) if (*(--i) == t) return true; return false; } }; template class QMutableVectorIterator { typedef typename QVector ::iterator iterator; QVector *c; iterator i, n; inline bool item_exists() const { return n != c->constEnd(); } public: inline QMutableVectorIterator(QVector &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableVectorIterator() { c->setSharable(true); } inline QMutableVectorIterator &operator=(QVector &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = i; } inline bool hasNext() const { return c->constEnd() != i; } inline T &next() { n = i++; return *n; } inline T &peekNext() const { return *i; } inline bool hasPrevious() const { return c->constBegin() != i; } inline T &previous() { n = --i; return *n; } inline T &peekPrevious() const { iterator p = i; return * --p; } inline void remove() { if (c->constEnd() != n) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) const { if (c->constEnd() != n) *n = t; } inline T &value() { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qvector.h",622);} while (0); return *n; } inline const T &value() const { do {if(!(item_exists()))qt_assert("item_exists()","../../include/QtCore/../../src/corelib/tools/qvector.h",622);} while (0); return *n; } inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } inline bool findNext(const T &t) { while (c->constEnd() != (n = i)) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (c->constBegin() != i) if (*(n = --i) == t) return true; n = c->end(); return false; } }; #line 2 "../../include/QtCore/qvector.h" #line 33 "../../include/QtCore/../../src/corelib/io/qdebug.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QDebug { struct Stream { Stream(QtMsgType t) : ts(&buffer, QIODevice::WriteOnly), ref(1), type(t), space(true){} QTextStream ts; QString buffer; int ref; QtMsgType type; bool space; } *stream; public: inline QDebug(QtMsgType t) : stream(new Stream(t)) {} inline QDebug(const QDebug &o):stream(o.stream) { ++stream->ref; } inline QDebug &operator=(const QDebug &other); inline ~QDebug() { if (!--stream->ref) { qt_message_output(stream->type, stream->buffer.toLocal8Bit().data()); delete stream; } } inline QDebug &space() { stream->space = true; stream->ts << " "; return *this; } inline QDebug &nospace() { stream->space = false; return *this; } inline QDebug &maybeSpace() { if (stream->space) stream->ts << " "; return *this; } inline QDebug &operator<<(QChar t) { stream->ts << "\'" << t << "\'"; return maybeSpace(); } inline QDebug &operator<<(bool t) { stream->ts << (t ? "true" : "false"); return maybeSpace(); } inline QDebug &operator<<(char t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(signed short t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(unsigned short t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(signed int t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(unsigned int t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(signed long t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(unsigned long t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(qint64 t) { stream->ts << QString::number(t); return maybeSpace(); } inline QDebug &operator<<(quint64 t) { stream->ts << QString::number(t); return maybeSpace(); } inline QDebug &operator<<(float t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(double t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(const char* t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(const QString & t) { stream->ts << "\"" << t << "\""; return maybeSpace(); } inline QDebug &operator<<(const QLatin1String &t) { stream->ts << "\"" << t.latin1() << "\""; return maybeSpace(); } inline QDebug &operator<<(const QByteArray & t) { stream->ts << "\"" << t << "\""; return maybeSpace(); } inline QDebug &operator<<(const void * t) { stream->ts << t; return maybeSpace(); } inline QDebug &operator<<(QTextStreamFunction f) { stream->ts << f; return *this; } inline QDebug &operator<<(QTextStreamManipulator m) { stream->ts << m; return *this; } }; inline QDebug &QDebug::operator=(const QDebug &other) { if (this != &other) { QDebug copy(other); qSwap(stream, copy.stream); } return *this; } template inline QDebug operator<<(QDebug debug, const QList &list) { debug.nospace() << "("; for (typename QList::size_type i = 0; i < list.count(); ++i) { if (i) debug << ", "; debug << list.at(i); } debug << ")"; return debug.space(); } template inline QDebug operator<<(QDebug debug, const QVector &vec) { return operator<<(debug, vec.toList()); } template inline QDebug operator<<(QDebug debug, const QMap &map) { debug.nospace() << "QMap("; for (typename QMap::const_iterator it = map.constBegin(); it != map.constEnd(); ++it) { debug << "(" << it.key() << ", " << it.value() << ")"; } debug << ")"; return debug.space(); } template inline QDebug operator<<(QDebug debug, const QHash &hash) { debug.nospace() << "QHash("; for (typename QHash::const_iterator it = hash.constBegin(); it != hash.constEnd(); ++it) debug << "(" << it.key() << ", " << it.value() << ")"; debug << ")"; return debug.space(); } template inline QDebug operator<<(QDebug debug, const QPair &pair) { debug.nospace() << "QPair(" << pair.first << "," << pair.second << ")"; return debug.space(); } inline QDebug qDebug() { return QDebug(QtDebugMsg); } inline QDebug qWarning() { return QDebug(QtWarningMsg); } inline QDebug qCritical() { return QDebug(QtCriticalMsg); } #line 181 "../../include/QtCore/../../src/corelib/io/qdebug.h" #line 2 "../../include/QtCore/qdebug.h" #line 23 "text/qtextengine.cpp" #line 1 "text/qtextformat.h" #line 1 "../../include/QtGui/qcolor.h" #line 1 "../../include/QtGui/../../src/gui/painting/qcolor.h" #line 1 "../../include/QtGui/qrgb.h" #line 1 "../../include/QtGui/../../src/gui/painting/qrgb.h" #line 1 "../../include/QtCore/qglobal.h" #line 26 "../../include/QtGui/../../src/gui/painting/qrgb.h" typedef QtValidLicenseForGuiModule QtGuiModule; typedef unsigned int QRgb; const QRgb RGB_MASK = 0x00ffffff; inline int qRed(QRgb rgb) { return ((rgb >> 16) & 0xff); } inline int qGreen(QRgb rgb) { return ((rgb >> 8) & 0xff); } inline int qBlue(QRgb rgb) { return (rgb & 0xff); } inline int qAlpha(QRgb rgb) { return ((rgb >> 24) & 0xff); } inline QRgb qRgb(int r, int g, int b) { return (0xff << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff); } inline QRgb qRgba(int r, int g, int b, int a) { return ((a & 0xff) << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff); } inline int qGray(int r, int g, int b) { return (r*11+g*16+b*5)/32; } inline int qGray(QRgb rgb) { return qGray(qRed(rgb), qGreen(rgb), qBlue(rgb)); } inline bool qIsGray(QRgb rgb) { return qRed(rgb) == qGreen(rgb) && qRed(rgb) == qBlue(rgb); } #line 2 "../../include/QtGui/qrgb.h" #line 26 "../../include/QtGui/../../src/gui/painting/qcolor.h" #line 1 "../../include/QtCore/qnamespace.h" #line 27 "../../include/QtGui/../../src/gui/painting/qcolor.h" #line 1 "../../include/QtCore/qstringlist.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qstringlist.h" #line 1 "../../include/QtCore/qalgorithms.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qstringlist.h" #line 1 "../../include/QtCore/qdatastream.h" #line 27 "../../include/QtCore/../../src/corelib/tools/qstringlist.h" #line 1 "../../include/QtCore/qlist.h" #line 28 "../../include/QtCore/../../src/corelib/tools/qstringlist.h" #line 1 "../../include/QtCore/qregexp.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qregexp.h" #line 1 "../../include/QtCore/qstring.h" #line 28 "../../include/QtCore/../../src/corelib/tools/qregexp.h" #line 1 "/usr/include/CC/new" #ident "@(#)unixsrc:usr/src/common/lib/libC/new /main/1" #line 30 "../../include/QtCore/../../src/corelib/tools/qregexp.h" typedef QtValidLicenseForCoreModule QtCoreModule; struct QRegExpPrivate; class QStringList; class QRegExp { public: enum PatternSyntax { RegExp, Wildcard, FixedString }; enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch }; QRegExp(); explicit QRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, PatternSyntax syntax = RegExp); QRegExp(const QRegExp &rx); ~QRegExp(); QRegExp &operator=(const QRegExp &rx); bool operator==(const QRegExp &rx) const; inline bool operator!=(const QRegExp &rx) const { return !operator==(rx); } bool isEmpty() const; bool isValid() const; QString pattern() const; void setPattern(const QString &pattern); Qt::CaseSensitivity caseSensitivity() const; void setCaseSensitivity(Qt::CaseSensitivity cs); inline bool caseSensitive() const { return caseSensitivity() == Qt::CaseSensitive; } inline void setCaseSensitive(bool sensitive) { setCaseSensitivity(sensitive ? Qt::CaseSensitive : Qt::CaseInsensitive); } PatternSyntax patternSyntax() const; void setPatternSyntax(PatternSyntax syntax); inline bool wildcard() const { return patternSyntax() == Wildcard; } inline void setWildcard(bool wildcard) { setPatternSyntax(wildcard ? Wildcard : RegExp); } bool isMinimal() const; void setMinimal(bool minimal); inline bool minimal() const { return isMinimal(); } bool exactMatch(const QString &str) const; int indexIn(const QString &str, int offset = 0, CaretMode caretMode = CaretAtZero) const; int lastIndexIn(const QString &str, int offset = -1, CaretMode caretMode = CaretAtZero) const; inline int search(const QString &str, int from = 0, CaretMode caretMode = CaretAtZero) const { return indexIn(str, from, caretMode); } inline int searchRev(const QString &str, int from = -1, CaretMode caretMode = CaretAtZero) const { return lastIndexIn(str, from, caretMode); } int matchedLength() const; int numCaptures() const; QStringList capturedTexts(); QString cap(int nth = 0); int pos(int nth = 0); QString errorString(); static QString escape(const QString &str); inline explicit QRegExp(const QString &pattern, bool cs, bool wildcard = false) { new (this) QRegExp(pattern, cs ? Qt::CaseSensitive : Qt::CaseInsensitive, wildcard ? Wildcard : RegExp); } private: QRegExpPrivate *priv; }; template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QRegExp)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QRegExp"; } }; QDataStream &operator<<(QDataStream &out, const QRegExp ®Exp); QDataStream &operator>>(QDataStream &in, QRegExp ®Exp); #line 2 "../../include/QtCore/qregexp.h" #line 29 "../../include/QtCore/../../src/corelib/tools/qstringlist.h" #line 1 "../../include/QtCore/qstring.h" #line 30 "../../include/QtCore/../../src/corelib/tools/qstringlist.h" #line 1 "../../include/QtCore/qstringmatcher.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qstringmatcher.h" #line 1 "../../include/QtCore/qstring.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qstringmatcher.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QStringMatcherPrivate; class QStringMatcher { public: QStringMatcher(); QStringMatcher(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive); QStringMatcher(const QStringMatcher &other); ~QStringMatcher(); QStringMatcher &operator=(const QStringMatcher &other); void setPattern(const QString &pattern); void setCaseSensitivity(Qt::CaseSensitivity cs); int indexIn(const QString &str, int from = 0) const; inline QString pattern() const { return q_pattern; } inline Qt::CaseSensitivity caseSensitivity() const { return q_cs; } private: QStringMatcherPrivate *d_ptr; QString q_pattern; Qt::CaseSensitivity q_cs; uint q_skiptable[256]; }; #line 2 "../../include/QtCore/qstringmatcher.h" #line 31 "../../include/QtCore/../../src/corelib/tools/qstringlist.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QRegExp; typedef QListIterator QStringListIterator; typedef QMutableListIterator QMutableStringListIterator; class QStringList : public QList { public: inline QStringList() { } inline explicit QStringList(const QString &i) { append(i); } inline QStringList(const QStringList &l) : QList(l) { } inline QStringList(const QList &l) : QList(l) { } inline void sort(); inline QString join(const QString &sep) const; inline QStringList filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; inline QBool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; inline QStringList &replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive); inline QStringList operator+(const QStringList &other) const { QStringList n = *this; n += other; return n; } inline QStringList &operator<<(const QString &str) { append(str); return *this; } inline QStringList &operator<<(const QStringList &l) { *this += l; return *this; } inline QStringList filter(const QRegExp &rx) const; inline QStringList &replaceInStrings(const QRegExp &rx, const QString &after); inline int indexOf(const QRegExp &rx, int from = 0) const; inline int lastIndexOf(const QRegExp &rx, int from = -1) const; inline int indexOf(const QString &str, int from = 0) const { return QList::indexOf(str, from); } inline int lastIndexOf(const QString &str, int from = -1) const { return QList::lastIndexOf(str, from); } static inline QStringList split(const QString &sep, const QString &str, bool allowEmptyEntries = false); static inline QStringList split(const QChar &sep, const QString &str, bool allowEmptyEntries = false); inline QStringList grep(const QString &str, bool cs = true) const { return filter(str, cs ? Qt::CaseSensitive : Qt::CaseInsensitive); } static inline QStringList split(const QRegExp &sep, const QString &str, bool allowEmptyEntries = false); inline QStringList grep(const QRegExp &rx) const { return filter(rx); } inline QStringList &gres(const QRegExp &rx, const QString &after) { return replaceInStrings(rx, after); } inline QStringList &gres(const QString &before, const QString &after, bool cs = true) { return replaceInStrings(before, after, cs ? Qt::CaseSensitive : Qt::CaseInsensitive); } inline Iterator fromLast() { return (isEmpty() ? end() : --end()); } inline ConstIterator fromLast() const { return (isEmpty() ? end() : --end()); } }; namespace QtPrivate { void QStringList_sort(QStringList *that); QString QStringList_join(const QStringList *that, const QString &sep); QStringList QStringList_filter(const QStringList *that, const QString &str, Qt::CaseSensitivity cs); QBool QStringList_contains(const QStringList *that, const QString &str, Qt::CaseSensitivity cs); void QStringList_replaceInStrings(QStringList *that, const QString &before, const QString &after, Qt::CaseSensitivity cs); void QStringList_replaceInStrings(QStringList *that, const QRegExp &rx, const QString &after); QStringList QStringList_filter(const QStringList *that, const QRegExp &re); int QStringList_indexOf(const QStringList *that, const QRegExp &rx, int from); int QStringList_lastIndexOf(const QStringList *that, const QRegExp &rx, int from); } inline void QStringList::sort() { QtPrivate::QStringList_sort(this); } inline QString QStringList::join(const QString &sep) const { return QtPrivate::QStringList_join(this, sep); } inline QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity cs) const { return QtPrivate::QStringList_filter(this, str, cs); } inline QBool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const { return QtPrivate::QStringList_contains(this, str, cs); } inline QStringList &QStringList::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs) { QtPrivate::QStringList_replaceInStrings(this, before, after, cs); return *this; } inline QStringList &QStringList::replaceInStrings(const QRegExp &rx, const QString &after) { QtPrivate::QStringList_replaceInStrings(this, rx, after); return *this; } inline QStringList QStringList::filter(const QRegExp &rx) const { return QtPrivate::QStringList_filter(this, rx); } inline int QStringList::indexOf(const QRegExp &rx, int from) const { return QtPrivate::QStringList_indexOf(this, rx, from); } inline int QStringList::lastIndexOf(const QRegExp &rx, int from) const { return QtPrivate::QStringList_lastIndexOf(this, rx, from); } inline QStringList QStringList::split(const QChar &sep, const QString &str, bool allowEmptyEntries) { if (str.isEmpty()) return QStringList(); return str.split(sep, allowEmptyEntries ? QString::KeepEmptyParts : QString::SkipEmptyParts); } inline QStringList QStringList::split(const QString &sep, const QString &str, bool allowEmptyEntries) { if (str.isEmpty()) return QStringList(); return str.split(sep, allowEmptyEntries ? QString::KeepEmptyParts : QString::SkipEmptyParts); } inline QStringList QStringList::split(const QRegExp &sep, const QString &str, bool allowEmptyEntries) { if (str.isEmpty()) return QStringList(); return str.split(sep, allowEmptyEntries ? QString::KeepEmptyParts : QString::SkipEmptyParts); } inline QDataStream &operator>>(QDataStream &in, QStringList &list) { return operator>>(in, static_cast &>(list)); } inline QDataStream &operator<<(QDataStream &out, const QStringList &list) { return operator<<(out, static_cast &>(list)); } #line 2 "../../include/QtCore/qstringlist.h" #line 28 "../../include/QtGui/../../src/gui/painting/qcolor.h" typedef QtValidLicenseForGuiModule QtGuiModule; class QColor; class QColormap; class QVariant; QDebug operator<<(QDebug, const QColor &); QDataStream &operator<<(QDataStream &, const QColor &); QDataStream &operator>>(QDataStream &, QColor &); class QColor { public: enum Spec { Invalid, Rgb, Hsv, Cmyk }; QColor(); QColor(Qt::GlobalColor color); QColor(int r, int g, int b, int a = 255); QColor(QRgb rgb); QColor(const QString& name); QColor(const char *name); QColor(const QColor &color); bool isValid() const; QString name() const; void setNamedColor(const QString& name); static QStringList colorNames(); inline Spec spec() const { return cspec; } int alpha() const; void setAlpha(int alpha); qreal alphaF() const; void setAlphaF(qreal alpha); int red() const; int green() const; int blue() const; void setRed(int red); void setGreen(int green); void setBlue(int blue); qreal redF() const; qreal greenF() const; qreal blueF() const; void setRedF(qreal red); void setGreenF(qreal green); void setBlueF(qreal blue); void getRgb(int *r, int *g, int *b, int *a = 0) const; void setRgb(int r, int g, int b, int a = 255); void getRgbF(qreal *r, qreal *g, qreal *b, qreal *a = 0) const; void setRgbF(qreal r, qreal g, qreal b, qreal a = 1.0); QRgb rgba() const; void setRgba(QRgb rgba); QRgb rgb() const; void setRgb(QRgb rgb); int hue() const; int saturation() const; int value() const; qreal hueF() const; qreal saturationF() const; qreal valueF() const; void getHsv(int *h, int *s, int *v, int *a = 0) const; void setHsv(int h, int s, int v, int a = 255); void getHsvF(qreal *h, qreal *s, qreal *v, qreal *a = 0) const; void setHsvF(qreal h, qreal s, qreal v, qreal a = 1.0); int cyan() const; int magenta() const; int yellow() const; int black() const; qreal cyanF() const; qreal magentaF() const; qreal yellowF() const; qreal blackF() const; void getCmyk(int *c, int *m, int *y, int *k, int *a = 0); void setCmyk(int c, int m, int y, int k, int a = 255); void getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *a = 0); void setCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0); QColor toRgb() const; QColor toHsv() const; QColor toCmyk() const; QColor convertTo(Spec colorSpec) const; static QColor fromRgb(QRgb rgb); static QColor fromRgba(QRgb rgba); static QColor fromRgb(int r, int g, int b, int a = 255); static QColor fromRgbF(qreal r, qreal g, qreal b, qreal a = 1.0); static QColor fromHsv(int h, int s, int v, int a = 255); static QColor fromHsvF(qreal h, qreal s, qreal v, qreal a = 1.0); static QColor fromCmyk(int c, int m, int y, int k, int a = 255); static QColor fromCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0); QColor light(int f = 150) const; QColor dark(int f = 200) const; QColor &operator=(const QColor &); QColor &operator=(Qt::GlobalColor color); bool operator==(const QColor &c) const; bool operator!=(const QColor &c) const; operator QVariant() const; inline explicit QColor(int x, int y, int z, Spec colorSpec) { if (colorSpec == Hsv) setHsv(x, y, z); else setRgb(x, y, z); } inline void rgb(int *r, int *g, int *b) const { getRgb(r, g, b); } inline void hsv(int *h, int *s, int *v) const { getHsv(h, s, v); } inline void setRgba(int r, int g, int b, int a) { setRgb(r, g, b, a); } inline void getRgba(int *r, int *g, int *b, int *a) const { getRgb(r, g, b, a); } uint pixel(int screen = -1) const; private: void invalidate(); Spec cspec; union { struct { ushort alpha; ushort red; ushort green; ushort blue; ushort pad; } argb; struct { ushort alpha; ushort hue; ushort saturation; ushort value; ushort pad; } ahsv; struct { ushort alpha; ushort cyan; ushort magenta; ushort yellow; ushort black; } acmyk; } ct; friend class QColormap; friend QDataStream &operator<<(QDataStream &, const QColor &); friend QDataStream &operator>>(QDataStream &, QColor &); }; inline QColor::QColor() { invalidate(); } inline QColor::QColor(int r, int g, int b, int a) { setRgb(r, g, b, a); } inline QColor::QColor(const char *aname) { setNamedColor(QLatin1String(aname)); } inline QColor::QColor(const QString& aname) { setNamedColor(aname); } inline QColor::QColor(const QColor &acolor) : cspec(acolor.cspec) { ct.argb = acolor.ct.argb; } inline bool QColor::isValid() const { return cspec != Invalid; } #line 2 "../../include/QtGui/qcolor.h" #line 26 "text/qtextformat.h" #line 1 "../../include/QtGui/qfont.h" #line 1 "../../include/QtGui/../../src/gui/text/qfont.h" #line 1 "../../include/QtGui/qwindowdefs.h" #line 1 "../../include/QtGui/../../src/gui/kernel/qwindowdefs.h" #line 1 "../../include/QtCore/qobjectdefs.h" #line 26 "../../include/QtGui/../../src/gui/kernel/qwindowdefs.h" #line 1 "../../include/QtCore/qnamespace.h" #line 27 "../../include/QtGui/../../src/gui/kernel/qwindowdefs.h" typedef QtValidLicenseForGuiModule QtGuiModule; class QPaintDevice; class QWidget; class QDialog; class QColor; class QPalette; class QColorGroup; class QCursor; class QPoint; class QSize; class QRect; class QPolygon; class QPainter; class QRegion; class QFont; class QFontMetrics; class QFontInfo; class QPen; class QBrush; class QMatrix; class QPixmap; class QBitmap; class QMovie; class QImage; class QPicture; class QPrinter; class QTimer; class QTime; class QClipboard; class QString; class QByteArray; class QApplication; template class QList; typedef QList QWidgetList; #line 108 "../../include/QtGui/../../src/gui/kernel/qwindowdefs.h" typedef struct _XDisplay Display; typedef union _XEvent XEvent; typedef struct _XGC *GC; typedef struct _XRegion *Region; typedef unsigned long WId; #line 133 "../../include/QtGui/../../src/gui/kernel/qwindowdefs.h" template class QHash; typedef QHash QWidgetMapper; #line 2 "../../include/QtGui/qwindowdefs.h" #line 26 "../../include/QtGui/../../src/gui/text/qfont.h" #line 1 "../../include/QtCore/qstring.h" #line 27 "../../include/QtGui/../../src/gui/text/qfont.h" typedef QtValidLicenseForGuiModule QtGuiModule; class QFontPrivate; class QStringList; class QVariant; class Q3TextFormatCollection; class QFont { public: enum StyleHint { Helvetica, SansSerif = Helvetica, Times, Serif = Times, Courier, TypeWriter = Courier, OldEnglish, Decorative = OldEnglish, System, AnyStyle }; enum StyleStrategy { PreferDefault = 0x0001, PreferBitmap = 0x0002, PreferDevice = 0x0004, PreferOutline = 0x0008, ForceOutline = 0x0010, PreferMatch = 0x0020, PreferQuality = 0x0040, PreferAntialias = 0x0080, NoAntialias = 0x0100, OpenGLCompatible = 0x0200 }; enum Weight { Light = 25, Normal = 50, DemiBold = 63, Bold = 75, Black = 87 }; enum Style { StyleNormal, StyleItalic, StyleOblique }; enum Stretch { UltraCondensed = 50, ExtraCondensed = 62, Condensed = 75, SemiCondensed = 87, Unstretched = 100, SemiExpanded = 112, Expanded = 125, ExtraExpanded = 150, UltraExpanded = 200 }; QFont(); QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false); QFont(const QFont &, QPaintDevice *pd); QFont(const QFont &); ~QFont(); QString family() const; void setFamily(const QString &); int pointSize() const; void setPointSize(int); qreal pointSizeF() const; void setPointSizeF(qreal); int pixelSize() const; void setPixelSize(int); int weight() const; void setWeight(int); inline bool bold() const; inline void setBold(bool); void setStyle(Style style); Style style() const; inline bool italic() const; inline void setItalic(bool b); bool underline() const; void setUnderline(bool); bool overline() const; void setOverline(bool); bool strikeOut() const; void setStrikeOut(bool); bool fixedPitch() const; void setFixedPitch(bool); bool kerning() const; void setKerning(bool); StyleHint styleHint() const; StyleStrategy styleStrategy() const; void setStyleHint(StyleHint, StyleStrategy = PreferDefault); void setStyleStrategy(StyleStrategy s); int stretch() const; void setStretch(int); bool rawMode() const; void setRawMode(bool); bool exactMatch() const; QFont &operator=(const QFont &); bool operator==(const QFont &) const; bool operator!=(const QFont &) const; bool operator<(const QFont &) const; operator QVariant() const; bool isCopyOf(const QFont &) const; Qt::HANDLE handle() const; void setRawName(const QString &); QString rawName() const; QString key() const; QString toString() const; bool fromString(const QString &); static QString substitute(const QString &); static QStringList substitutes(const QString &); static QStringList substitutions(); static void insertSubstitution(const QString&, const QString &); static void insertSubstitutions(const QString&, const QStringList &); static void removeSubstitution(const QString &); static void initialize(); static void cleanup(); static void cacheStatistics(); QString defaultFamily() const; QString lastResortFamily() const; QString lastResortFont() const; QFont resolve(const QFont &) const; inline uint resolve() const { return resolve_mask; } inline void resolve(uint mask) { resolve_mask = mask; } static QFont defaultFont(); static void setDefaultFont(const QFont &); void setPixelSizeFloat(qreal); qreal pointSizeFloat() const { return pointSizeF(); } void setPointSizeFloat(qreal size) { setPointSizeF(size); } private: QFont(QFontPrivate *); void detach(); void x11SetScreen(int screen = -1); int x11Screen() const; friend class QFontMetrics; friend class QFontMetricsF; friend class QFontInfo; friend class QPainter; friend class QPSPrintEngineFont; friend class QApplication; friend class QWidget; friend class QWidgetPrivate; friend class Q3TextFormatCollection; friend class QTextLayout; friend class QTextEngine; friend class QTextLine; friend struct QScriptLine; friend class QGLContext; friend class QWin32PaintEngine; friend class QPainterPath; friend QDataStream &operator<<(QDataStream &, const QFont &); friend QDataStream &operator>>(QDataStream &, QFont &); QFontPrivate *d; uint resolve_mask; }; inline bool QFont::bold() const { return weight() > Normal; } inline void QFont::setBold(bool enable) { setWeight(enable ? Bold : Normal); } inline bool QFont::italic() const { return (style() != StyleNormal); } inline void QFont::setItalic(bool b) { setStyle(b ? StyleItalic : StyleNormal); } QDataStream &operator<<(QDataStream &, const QFont &); QDataStream &operator>>(QDataStream &, QFont &); #line 2 "../../include/QtGui/qfont.h" #line 27 "text/qtextformat.h" #line 1 "../../include/QtCore/qshareddata.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qshareddata.h" #line 1 "../../include/QtCore/qglobal.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qshareddata.h" #line 1 "../../include/QtCore/qatomic.h" #line 27 "../../include/QtCore/../../src/corelib/tools/qshareddata.h" typedef QtValidLicenseForCoreModule QtCoreModule; template class QSharedDataPointer; class QSharedData { public: QAtomic ref; inline QSharedData() : ref(0) { } inline QSharedData(const QSharedData &) : ref(0) { } private: QSharedData &operator=(const QSharedData &); }; template class QSharedDataPointer { public: inline void detach() { if (d && d->ref != 1) detach_helper(); } inline T &operator*() { detach(); return *d; } inline const T &operator*() const { return *d; } inline T *operator->() { detach(); return d; } inline const T *operator->() const { return d; } inline operator T *() { detach(); return d; } inline operator const T *() const { return d; } inline T *data() { detach(); return d; } inline const T *data() const { return d; } inline const T *constData() const { return d; } inline bool operator==(const QSharedDataPointer &other) const { return d == other.d; } inline bool operator!=(const QSharedDataPointer &other) const { return d != other.d; } inline QSharedDataPointer() { d = 0; } inline ~QSharedDataPointer() { if (d && !d->ref.deref()) delete d; } explicit QSharedDataPointer(T *data); inline QSharedDataPointer(const QSharedDataPointer &o) : d(o.d) { if (d) d->ref.ref(); } inline QSharedDataPointer & operator=(const QSharedDataPointer &o) { if (o.d != d) { T *x = o.d; if (x) x->ref.ref(); x = qAtomicSetPtr(&d, x); if (x && !x->ref.deref()) delete x; } return *this; } inline QSharedDataPointer &operator=(T *o) { if (o != d) { T *x = o; if (x) x->ref.ref(); x = qAtomicSetPtr(&d, x); if (x && !x->ref.deref()) delete x; } return *this; } inline bool operator!() const { return !d; } private: void detach_helper(); T *d; }; template inline QSharedDataPointer::QSharedDataPointer(T *adata) : d(adata) { if (d) d->ref.ref(); } template void QSharedDataPointer::detach_helper() { T *x = new T(*d); x->ref.ref(); x = qAtomicSetPtr(&d, x); if (!x->ref.deref()) delete x; } #line 2 "../../include/QtCore/qshareddata.h" #line 28 "text/qtextformat.h" #line 1 "../../include/QtCore/qvector.h" #line 29 "text/qtextformat.h" #line 1 "../../include/QtCore/qvariant.h" #line 1 "../../include/QtCore/../../src/corelib/kernel/qvariant.h" #line 1 "../../include/QtCore/qatomic.h" #line 26 "../../include/QtCore/../../src/corelib/kernel/qvariant.h" #line 1 "../../include/QtCore/qbytearray.h" #line 27 "../../include/QtCore/../../src/corelib/kernel/qvariant.h" #line 1 "../../include/QtCore/qlist.h" #line 28 "../../include/QtCore/../../src/corelib/kernel/qvariant.h" #line 1 "../../include/QtCore/qmetatype.h" #line 1 "../../include/QtCore/../../src/corelib/kernel/qmetatype.h" #line 1 "../../include/QtCore/qglobal.h" #line 26 "../../include/QtCore/../../src/corelib/kernel/qmetatype.h" #line 1 "../../include/QtCore/qatomic.h" #line 27 "../../include/QtCore/../../src/corelib/kernel/qmetatype.h" #line 1 "../../include/QtCore/qdatastream.h" #line 30 "../../include/QtCore/../../src/corelib/kernel/qmetatype.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QMetaType { public: enum Type { Void = 0, Bool = 1, Int = 2, UInt = 3, Double = 6, QChar = 7, QString = 10, QByteArray = 12, VoidStar = 128, Long, Short, Char, ULong, UShort, UChar, Float, QObjectStar, QWidgetStar, User = 256 }; typedef void (*Destructor)(void *); typedef void *(*Constructor)(const void *); typedef void (*SaveOperator)(QDataStream &, const void *); typedef void (*LoadOperator)(QDataStream &, void *); static void registerStreamOperators(const char *typeName, SaveOperator saveOp, LoadOperator loadOp); static int registerType(const char *typeName, Destructor destructor, Constructor constructor); static int type(const char *typeName); static const char *typeName(int type); static bool isRegistered(int type); static void *construct(int type, const void *copy); static void destroy(int type, void *data); static bool save(QDataStream &stream, int type, const void *data); static bool load(QDataStream &stream, int type, void *data); }; template void qMetaTypeDeleteHelper(T *t) { delete t; } template void *qMetaTypeConstructHelper(const T *t) { if (!t) return new T; return new T(*static_cast(t)); } template int qRegisterMetaType(const char *typeName , T * = 0 ) { typedef void*(*ConstructPtr)(const T*); ConstructPtr cptr = qMetaTypeConstructHelper; typedef void(*DeletePtr)(T*); DeletePtr dptr = qMetaTypeDeleteHelper; return QMetaType::registerType(typeName, reinterpret_cast(dptr), reinterpret_cast(cptr)); } template void qMetaTypeSaveHelper(QDataStream &stream, const T *t) { stream << *t; } template void qMetaTypeLoadHelper(QDataStream &stream, T *t) { stream >> *t; } template void qRegisterMetaTypeStreamOperators(const char *typeName , T * = 0 ) { typedef void(*SavePtr)(QDataStream &, const T *); typedef void(*LoadPtr)(QDataStream &, T *); SavePtr sptr = qMetaTypeSaveHelper; LoadPtr lptr = qMetaTypeLoadHelper; qRegisterMetaType(typeName); QMetaType::registerStreamOperators(typeName, reinterpret_cast(sptr), reinterpret_cast(lptr)); } template struct QMetaTypeId { enum { Defined = 0 }; }; template inline int qMetaTypeId( T * = 0 ) { return QMetaTypeId::qt_metatype_id(); } #line 165 "../../include/QtCore/../../src/corelib/kernel/qmetatype.h" class QString; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::QString; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Int; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::UInt; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Bool; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Double; } }; class QByteArray; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::QByteArray; } }; class QChar; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::QChar; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Void; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Long; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Short; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Char; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::ULong; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::UShort; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::UChar; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Float; } }; class QObject; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::QObjectStar; } }; class QWidget; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::QWidgetStar; } }; template<> struct QMetaTypeId { enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::VoidStar; } }; #line 2 "../../include/QtCore/qmetatype.h" #line 29 "../../include/QtCore/../../src/corelib/kernel/qvariant.h" #line 1 "../../include/QtCore/qmap.h" #line 30 "../../include/QtCore/../../src/corelib/kernel/qvariant.h" #line 1 "../../include/QtCore/qstring.h" #line 31 "../../include/QtCore/../../src/corelib/kernel/qvariant.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QBitArray; class QDataStream; class QDate; class QDateTime; class QLine; class QLineF; class QLocale; class QStringList; class QTime; class QPoint; class QPointF; class QSize; class QSizeF; class QRect; class QRectF; class QRegExp; class QTextFormat; class QTextLength; class QUrl; class QVariant; class QVariantComparisonHelper; template inline QVariant qVariantFromValue(const T &); template inline void qVariantSetValue(QVariant &, const T &); template inline T qVariantValue(const QVariant &); template inline bool qVariantCanConvert(const QVariant &); class QVariant { public: enum Type { Invalid = 0, Bool = 1, Int = 2, UInt = 3, LongLong = 4, ULongLong = 5, Double = 6, Char = 7, Map = 8, List = 9, String = 10, StringList = 11, ByteArray = 12, BitArray = 13, Date = 14, Time = 15, DateTime = 16, Url = 17, Locale = 18, Rect = 19, RectF = 20, Size = 21, SizeF = 22, Line = 23, LineF = 24, Point = 25, PointF = 26, RegExp = 27, ColorGroup = 63, Font = 64, Pixmap = 65, Brush = 66, Color = 67, Palette = 68, Icon = 69, Image = 70, Polygon = 71, Region = 72, Bitmap = 73, Cursor = 74, SizePolicy = 75, KeySequence = 76, Pen = 77, TextLength = 78, TextFormat = 79, UserType = 127, IconSet = Icon, CString = ByteArray, PointArray = Polygon, LastType = 0xffffffff }; inline QVariant(); ~QVariant(); QVariant(Type type); QVariant(int typeOrUserType, const void *copy); QVariant(const QVariant &other); QVariant(QDataStream &s); QVariant(int i); QVariant(uint ui); QVariant(qlonglong ll); QVariant(qulonglong ull); QVariant(bool b); QVariant(double d); QVariant(const char *str); QVariant(const QByteArray &bytearray); QVariant(const QBitArray &bitarray); QVariant(const QString &string); QVariant(const QLatin1String &string); QVariant(const QStringList &stringlist); QVariant(const QChar &qchar); QVariant(const QDate &date); QVariant(const QTime &time); QVariant(const QDateTime &datetime); QVariant(const QList &list); QVariant(const QMap &map); QVariant(const QSize &size); QVariant(const QSizeF &size); QVariant(const QPoint &pt); QVariant(const QPointF &pt); QVariant(const QLine &line); QVariant(const QLineF &line); QVariant(const QRect &rect); QVariant(const QRectF &rect); QVariant(const QUrl &url); QVariant(const QLocale &locale); QVariant(const QRegExp ®Exp); QVariant& operator=(const QVariant &other); Type type() const; int userType() const; const char *typeName() const; bool canConvert(Type t) const; bool convert(Type t); inline bool canCast(Type t) const { return canConvert(t); } inline bool cast(Type t) { return convert(t); } inline bool isValid() const; bool isNull() const; void clear(); void detach(); inline bool isDetached() const; int toInt(bool *ok = 0) const; uint toUInt(bool *ok = 0) const; qlonglong toLongLong(bool *ok = 0) const; qulonglong toULongLong(bool *ok = 0) const; bool toBool() const; double toDouble(bool *ok = 0) const; QByteArray toByteArray() const; QBitArray toBitArray() const; QString toString() const; QStringList toStringList() const; QChar toChar() const; QDate toDate() const; QTime toTime() const; QDateTime toDateTime() const; QList toList() const; QMap toMap() const; QPoint toPoint() const; QPointF toPointF() const; QRect toRect() const; QSize toSize() const; QSizeF toSizeF() const; QLine toLine() const; QLineF toLineF() const; QRectF toRectF() const; QUrl toUrl() const; QLocale toLocale() const; QRegExp toRegExp() const; inline int &asInt(); inline uint &asUInt(); inline qlonglong &asLongLong(); inline qulonglong &asULongLong(); inline bool &asBool(); inline double &asDouble(); inline QByteArray &asByteArray(); inline QBitArray &asBitArray(); inline QString &asString(); inline QStringList &asStringList(); inline QDate &asDate(); inline QTime &asTime(); inline QDateTime &asDateTime(); inline QList &asList(); inline QMap &asMap(); inline QPoint &asPoint(); inline QRect &asRect(); inline QSize &asSize(); void load(QDataStream &ds); void save(QDataStream &ds) const; static const char *typeToName(Type type); static Type nameToType(const char *name); inline explicit QVariant(bool val, int) { create(Bool, &val); } inline const QByteArray toCString() const { return toByteArray(); } inline QByteArray &asCString() { return *reinterpret_cast(castOrDetach(ByteArray)); } void *data(); const void *constData() const; inline const void *data() const { return constData(); } template inline void setValue(const T &value); template inline T value() const { return qVariantValue(*this); } template static inline QVariant fromValue(const T &value) { return qVariantFromValue(value); } template bool canConvert() const { return qVariantCanConvert(*this); } public: struct PrivateShared { inline PrivateShared() : ref(1) { } inline PrivateShared(void *v) : ref(1) { ptr = v; } void *ptr; QAtomic ref; }; struct Private { inline Private(): type(Invalid), is_shared(false), is_null(true) { data.ptr = 0; } inline Private(const Private &other) : data(other.data), type(other.type), is_shared(other.is_shared), is_null(other.is_null) {} union Data { int i; uint u; bool b; double d; qlonglong ll; qulonglong ull; void *ptr; PrivateShared *shared; } data; uint type : 30; uint is_shared : 1; uint is_null : 1; }; public: typedef void (*f_construct)(Private *, const void *); typedef void (*f_clear)(Private *); typedef bool (*f_null)(const Private *); typedef void (*f_load)(Private *, QDataStream &); typedef void (*f_save)(const Private *, QDataStream &); typedef bool (*f_compare)(const Private *, const Private *); typedef bool (*f_convert)(const QVariant::Private *d, Type t, void *, bool *); typedef bool (*f_canConvert)(const QVariant::Private *d, Type t); typedef void (*f_debugStream)(QDebug, const QVariant &); struct Handler { f_construct construct; f_clear clear; f_null isNull; f_load load; f_save save; f_compare compare; f_convert convert; f_canConvert canConvert; f_debugStream debugStream; }; inline bool operator==(const QVariant &v) const { return cmp(v); } inline bool operator!=(const QVariant &v) const { return !cmp(v); } protected: friend inline bool qvariant_cast_helper(const QVariant &, QVariant::Type, void *); friend int qRegisterGuiVariant(); friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &); friend QDebug operator<<(QDebug, const QVariant &); Private d; static const Handler *handler; void create(int type, const void *copy); void *castOrDetach(Type t); bool cmp(const QVariant &other) const; private: #line 380 "../../include/QtCore/../../src/corelib/kernel/qvariant.h" }; typedef QList QVariantList; typedef QMap QVariantMap; inline bool qvariant_cast_helper(const QVariant &v, QVariant::Type tp, void *ptr) { return QVariant::handler->convert(&v.d, tp, ptr, 0); } template inline int qt_variant_metatype_id(T *) { return QMetaTypeId::qt_metatype_id(); } template<> inline int qt_variant_metatype_id(QVariantMap *) { return QVariant::Map; } template<> inline int qt_variant_metatype_id(QVariantList *) { return QVariant::List; } template<> inline int qt_variant_metatype_id(QStringList *) { return QVariant::StringList; } class QFont; template<> inline int qt_variant_metatype_id(QFont *) { return QVariant::Font; } class QPixmap; template<> inline int qt_variant_metatype_id(QPixmap *) { return QVariant::Pixmap; } class QBrush; template<> inline int qt_variant_metatype_id(QBrush *) { return QVariant::Brush; } template<> inline int qt_variant_metatype_id(QRect *) { return QVariant::Rect; } template<> inline int qt_variant_metatype_id(QSize *) { return QVariant::Size; } template<> inline int qt_variant_metatype_id(QSizeF *) { return QVariant::SizeF; } class QColor; template<> inline int qt_variant_metatype_id(QColor *) { return QVariant::Color; } class QPalette; template<> inline int qt_variant_metatype_id(QPalette *) { return QVariant::Palette; } class QIcon; template<> inline int qt_variant_metatype_id(QIcon *) { return QVariant::Icon; } class QPoint; template<> inline int qt_variant_metatype_id(QPoint *) { return QVariant::Point; } class QPointF; template<> inline int qt_variant_metatype_id(QPointF *) { return QVariant::PointF; } class QImage; template<> inline int qt_variant_metatype_id(QImage*) { return QVariant::Image; } class QPolygon; template<> inline int qt_variant_metatype_id(QPolygon *) { return QVariant::Polygon; } class QRegion; template<> inline int qt_variant_metatype_id(QRegion *) { return QVariant::Region; } class QBitmap; template<> inline int qt_variant_metatype_id(QBitmap *) { return QVariant::Bitmap; } class QCursor; template<> inline int qt_variant_metatype_id(QCursor *) { return QVariant::Cursor; } class QSizePolicy; template<> inline int qt_variant_metatype_id(QSizePolicy *) { return QVariant::SizePolicy; } template<> inline int qt_variant_metatype_id(QDate *) { return QVariant::Date; } template<> inline int qt_variant_metatype_id(QTime *) { return QVariant::Time; } template<> inline int qt_variant_metatype_id(QDateTime *) { return QVariant::DateTime; } template<> inline int qt_variant_metatype_id(QBitArray *) { return QVariant::BitArray; } class QKeySequence; template<> inline int qt_variant_metatype_id(QKeySequence *) { return QVariant::KeySequence; } class QPen; template<> inline int qt_variant_metatype_id(QPen *) { return QVariant::Pen; } template<> inline int qt_variant_metatype_id(qlonglong *) { return QVariant::LongLong; } template<> inline int qt_variant_metatype_id(qulonglong *) { return QVariant::ULongLong; } template<> inline int qt_variant_metatype_id(QUrl *) { return QVariant::Url; } class QTextLength; template<> inline int qt_variant_metatype_id(QTextLength *) { return QVariant::TextLength; } class QTextFormat; template<> inline int qt_variant_metatype_id(QTextFormat *) { return QVariant::TextFormat; } template<> inline int qt_variant_metatype_id(QLocale *) { return QVariant::Locale; } template<> inline int qt_variant_metatype_id(QRegExp *) { return QVariant::RegExp; } template<> inline int qt_variant_metatype_id(QLineF *) { return QVariant::LineF; } template<> inline int qt_variant_metatype_id(QLine *) { return QVariant::Line; } template<> inline int qt_variant_metatype_id(QRectF *) { return QVariant::RectF; } class QColorGroup; template<> inline int qt_variant_metatype_id(QColorGroup *) { return QVariant::ColorGroup; } template inline QVariant qVariantFromValue(const T &t) { return QVariant(qt_variant_metatype_id(reinterpret_cast(0)), &t); } template <> inline QVariant qVariantFromValue(const QVariant &t) { return t; } template inline void qVariantSetValue(QVariant &v, const T &t) { v = QVariant(qt_variant_metatype_id(reinterpret_cast(0)), &t); } inline QVariant::QVariant() {} inline bool QVariant::isValid() const { return d.type != Invalid; } inline int &QVariant::asInt() { return *reinterpret_cast(castOrDetach(Int)); } inline uint &QVariant::asUInt() { return *reinterpret_cast(castOrDetach(UInt)); } inline qlonglong &QVariant::asLongLong() { return *reinterpret_cast(castOrDetach(LongLong)); } inline qulonglong &QVariant::asULongLong() { return *reinterpret_cast(castOrDetach(ULongLong)); } inline bool &QVariant::asBool() { return *reinterpret_cast(castOrDetach(Bool)); } inline double &QVariant::asDouble() { return *reinterpret_cast(castOrDetach(Double)); } inline QByteArray& QVariant::asByteArray() { return *reinterpret_cast(castOrDetach(ByteArray)); } inline QBitArray& QVariant::asBitArray() { return *reinterpret_cast(castOrDetach(BitArray)); } inline QString& QVariant::asString() { return *reinterpret_cast(castOrDetach(String)); } inline QStringList& QVariant::asStringList() { return *reinterpret_cast(castOrDetach(StringList)); } inline QDate& QVariant::asDate() { return *reinterpret_cast(castOrDetach(Date)); } inline QTime& QVariant::asTime() { return *reinterpret_cast(castOrDetach(Time)); } inline QDateTime& QVariant::asDateTime() { return *reinterpret_cast(castOrDetach(DateTime)); } inline QList& QVariant::asList() { return *reinterpret_cast *>(castOrDetach(List)); } inline QMap& QVariant::asMap() { return *reinterpret_cast *>(castOrDetach(Map)); } inline QPoint &QVariant::asPoint() { return *reinterpret_cast(castOrDetach(Point)); } inline QRect &QVariant::asRect() { return *reinterpret_cast(castOrDetach(Rect)); } inline QSize &QVariant::asSize() { return *reinterpret_cast(castOrDetach(Size)); } template inline void QVariant::setValue(const T &avalue) { qVariantSetValue(*this, avalue); } QDataStream& operator>> (QDataStream& s, QVariant& p); QDataStream& operator<< (QDataStream& s, const QVariant& p); QDataStream& operator>> (QDataStream& s, QVariant::Type& p); QDataStream& operator<< (QDataStream& s, const QVariant::Type p); inline bool QVariant::isDetached() const { return !d.is_shared || d.data.shared->ref == 1; } class QVariantComparisonHelper { public: inline QVariantComparisonHelper(const QVariant &var) : v(&var) {} private: friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &); const QVariant *v; }; inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2) { return v1.cmp(*v2.v); } inline bool operator!=(const QVariant &v1, const QVariantComparisonHelper &v2) { return !operator==(v1, v2); } #line 619 "../../include/QtCore/../../src/corelib/kernel/qvariant.h" template T qvariant_cast(const QVariant &v) { const int vid = qt_variant_metatype_id(static_cast(0)); if (vid == v.userType()) return *reinterpret_cast(v.constData()); if (vid < int(QVariant::UserType)) { T t; qvariant_cast_helper(v, QVariant::Type(vid), &t); return t; } return T(); } template inline T qVariantValue(const QVariant &variant) { return qvariant_cast(variant); } template inline bool qVariantCanConvert(const QVariant &variant) { return variant.canConvert(static_cast( qt_variant_metatype_id(static_cast(0)))); } template <> inline bool qIsDetached(QVariant &t) { return t . isDetached(); } template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QVariant)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QVariant"; } }; QDebug operator<<(QDebug, const QVariant &); QDebug operator<<(QDebug, const QVariant::Type); #line 2 "../../include/QtCore/qvariant.h" #line 30 "text/qtextformat.h" #line 1 "../../include/QtGui/qpen.h" #line 1 "../../include/QtGui/../../src/gui/painting/qpen.h" #line 1 "../../include/QtGui/qcolor.h" #line 26 "../../include/QtGui/../../src/gui/painting/qpen.h" typedef QtValidLicenseForGuiModule QtGuiModule; class QVariant; class QPenPrivate; class QBrush; class QPen; QDataStream &operator<<(QDataStream &, const QPen &); QDataStream &operator>>(QDataStream &, QPen &); class QPen { public: QPen(); QPen(Qt::PenStyle); QPen(const QColor &color); QPen(const QBrush &brush, qreal width, Qt::PenStyle s = Qt::SolidLine, Qt::PenCapStyle c = Qt::SquareCap, Qt::PenJoinStyle j = Qt::BevelJoin); QPen(const QPen &pen); ~QPen(); QPen &operator=(const QPen &pen); Qt::PenStyle style() const; void setStyle(Qt::PenStyle); QVector dashPattern() const; void setDashPattern(const QVector &pattern); qreal miterLimit() const; void setMiterLimit(qreal limit); qreal widthF() const; void setWidthF(qreal width); int width() const; void setWidth(int width); QColor color() const; void setColor(const QColor &color); QBrush brush() const; void setBrush(const QBrush &brush); bool isSolid() const; Qt::PenCapStyle capStyle() const; void setCapStyle(Qt::PenCapStyle pcs); Qt::PenJoinStyle joinStyle() const; void setJoinStyle(Qt::PenJoinStyle pcs); bool operator==(const QPen &p) const; inline bool operator!=(const QPen &p) const { return !(operator==(p)); } operator QVariant() const; bool isDetached(); private: friend class QPainter; friend QDataStream &operator>>(QDataStream &, QPen &); friend QDataStream &operator<<(QDataStream &, const QPen &); void detach(); class QPenPrivate *d; }; template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPen)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPen"; } }; template <> inline bool qIsDetached(QPen &t) { return t . isDetached(); } QDebug operator<<(QDebug, const QPen &); #line 2 "../../include/QtGui/qpen.h" #line 31 "text/qtextformat.h" #line 1 "../../include/QtGui/qbrush.h" #line 1 "../../include/QtGui/../../src/gui/painting/qbrush.h" #line 1 "../../include/QtCore/qpair.h" #line 26 "../../include/QtGui/../../src/gui/painting/qbrush.h" #line 1 "../../include/QtCore/qpoint.h" #line 1 "../../include/QtCore/../../src/corelib/tools/qpoint.h" #line 1 "../../include/QtCore/qnamespace.h" #line 26 "../../include/QtCore/../../src/corelib/tools/qpoint.h" typedef QtValidLicenseForCoreModule QtCoreModule; class QPoint { public: QPoint(); QPoint(int xpos, int ypos); bool isNull() const; int x() const; int y() const; void setX(int x); void setY(int y); int manhattanLength() const; int &rx(); int &ry(); QPoint &operator+=(const QPoint &p); QPoint &operator-=(const QPoint &p); QPoint &operator*=(qreal c); QPoint &operator/=(qreal c); friend inline bool operator==(const QPoint &, const QPoint &); friend inline bool operator!=(const QPoint &, const QPoint &); friend inline const QPoint operator+(const QPoint &, const QPoint &); friend inline const QPoint operator-(const QPoint &, const QPoint &); friend inline const QPoint operator*(const QPoint &, qreal); friend inline const QPoint operator*(qreal, const QPoint &); friend inline const QPoint operator-(const QPoint &); friend inline const QPoint operator/(const QPoint &, qreal); private: int xp; int yp; }; template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPoint)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPoint"; } }; QDataStream &operator<<(QDataStream &, const QPoint &); QDataStream &operator>>(QDataStream &, QPoint &); inline QPoint::QPoint() { xp=0; yp=0; } inline QPoint::QPoint(int xpos, int ypos) { xp = xpos; yp = ypos; } inline bool QPoint::isNull() const { return xp == 0 && yp == 0; } inline int QPoint::x() const { return xp; } inline int QPoint::y() const { return yp; } inline void QPoint::setX(int xpos) { xp = xpos; } inline void QPoint::setY(int ypos) { yp = ypos; } inline int &QPoint::rx() { return xp; } inline int &QPoint::ry() { return yp; } inline QPoint &QPoint::operator+=(const QPoint &p) { xp+=p.xp; yp+=p.yp; return *this; } inline QPoint &QPoint::operator-=(const QPoint &p) { xp-=p.xp; yp-=p.yp; return *this; } inline QPoint &QPoint::operator*=(qreal c) { xp = qRound(xp*c); yp = qRound(yp*c); return *this; } inline bool operator==(const QPoint &p1, const QPoint &p2) { return p1.xp == p2.xp && p1.yp == p2.yp; } inline bool operator!=(const QPoint &p1, const QPoint &p2) { return p1.xp != p2.xp || p1.yp != p2.yp; } inline const QPoint operator+(const QPoint &p1, const QPoint &p2) { return QPoint(p1.xp+p2.xp, p1.yp+p2.yp); } inline const QPoint operator-(const QPoint &p1, const QPoint &p2) { return QPoint(p1.xp-p2.xp, p1.yp-p2.yp); } inline const QPoint operator*(const QPoint &p, qreal c) { return QPoint(qRound(p.xp*c), qRound(p.yp*c)); } inline const QPoint operator*(qreal c, const QPoint &p) { return QPoint(qRound(p.xp*c), qRound(p.yp*c)); } inline const QPoint operator-(const QPoint &p) { return QPoint(-p.xp, -p.yp); } inline QPoint &QPoint::operator/=(qreal c) { do {if(!(!qFuzzyCompare(c, 0)))qt_assert("!qFuzzyCompare(c, 0)","../../include/QtCore/../../src/corelib/tools/qpoint.h",147);} while (0); xp = qRound(xp/c); yp = qRound(yp/c); return *this; } inline const QPoint operator/(const QPoint &p, qreal c) { do {if(!(!qFuzzyCompare(c, 0)))qt_assert("!qFuzzyCompare(c, 0)","../../include/QtCore/../../src/corelib/tools/qpoint.h",155);} while (0); return QPoint(qRound(p.xp/c), qRound(p.yp/c)); } QDebug operator<<(QDebug, const QPoint &); class QPointF { public: QPointF(); QPointF(const QPoint &p); QPointF(qreal xpos, qreal ypos); bool isNull() const; qreal x() const; qreal y() const; void setX(qreal x); void setY(qreal y); qreal &rx(); qreal &ry(); QPointF &operator+=(const QPointF &p); QPointF &operator-=(const QPointF &p); QPointF &operator*=(qreal c); QPointF &operator/=(qreal c); friend inline bool operator==(const QPointF &, const QPointF &); friend inline bool operator!=(const QPointF &, const QPointF &); friend inline const QPointF operator+(const QPointF &, const QPointF &); friend inline const QPointF operator-(const QPointF &, const QPointF &); friend inline const QPointF operator*(qreal, const QPointF &); friend inline const QPointF operator*(const QPointF &, qreal); friend inline const QPointF operator-(const QPointF &); friend inline const QPointF operator/(const QPointF &, qreal); QPoint toPoint() const; private: friend class QMatrix; qreal xp; qreal yp; }; template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPointF)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPointF"; } }; QDataStream &operator<<(QDataStream &, const QPointF &); QDataStream &operator>>(QDataStream &, QPointF &); inline QPointF::QPointF() : xp(0), yp(0) { } inline QPointF::QPointF(qreal xpos, qreal ypos) : xp(xpos), yp(ypos) { } inline QPointF::QPointF(const QPoint &p) : xp(p.x()), yp(p.y()) { } inline bool QPointF::isNull() const { return qIsNull(xp) && qIsNull(yp); } inline qreal QPointF::x() const { return xp; } inline qreal QPointF::y() const { return yp; } inline void QPointF::setX(qreal xpos) { xp = xpos; } inline void QPointF::setY(qreal ypos) { yp = ypos; } inline qreal &QPointF::rx() { return xp; } inline qreal &QPointF::ry() { return yp; } inline QPointF &QPointF::operator+=(const QPointF &p) { xp+=p.xp; yp+=p.yp; return *this; } inline QPointF &QPointF::operator-=(const QPointF &p) { xp-=p.xp; yp-=p.yp; return *this; } inline QPointF &QPointF::operator*=(qreal c) { xp*=c; yp*=c; return *this; } inline bool operator==(const QPointF &p1, const QPointF &p2) { return qFuzzyCompare(p1.xp, p2.xp) && qFuzzyCompare(p1.yp, p2.yp); } inline bool operator!=(const QPointF &p1, const QPointF &p2) { return !qFuzzyCompare(p1.xp, p2.xp) || !qFuzzyCompare(p1.yp, p2.yp); } inline const QPointF operator+(const QPointF &p1, const QPointF &p2) { return QPointF(p1.xp+p2.xp, p1.yp+p2.yp); } inline const QPointF operator-(const QPointF &p1, const QPointF &p2) { return QPointF(p1.xp-p2.xp, p1.yp-p2.yp); } inline const QPointF operator*(const QPointF &p, qreal c) { return QPointF(p.xp*c, p.yp*c); } inline const QPointF operator*(qreal c, const QPointF &p) { return QPointF(p.xp*c, p.yp*c); } inline const QPointF operator-(const QPointF &p) { return QPointF(-p.xp, -p.yp); } inline QPointF &QPointF::operator/=(qreal c) { do {if(!(!qFuzzyCompare(c, 0)))qt_assert("!qFuzzyCompare(c, 0)","../../include/QtCore/../../src/corelib/tools/qpoint.h",316);} while (0); xp/=c; yp/=c; return *this; } inline const QPointF operator/(const QPointF &p, qreal c) { do {if(!(!qFuzzyCompare(c, 0)))qt_assert("!qFuzzyCompare(c, 0)","../../include/QtCore/../../src/corelib/tools/qpoint.h",324);} while (0); return QPointF(p.xp/c, p.yp/c); } inline QPoint QPointF::toPoint() const { return QPoint(qRound(xp), qRound(yp)); } QDebug operator<<(QDebug d, const QPointF &p); #line 2 "../../include/QtCore/qpoint.h" #line 27 "../../include/QtGui/../../src/gui/painting/qbrush.h" #line 1 "../../include/QtCore/qvector.h" #line 28 "../../include/QtGui/../../src/gui/painting/qbrush.h" #line 1 "../../include/QtGui/qcolor.h" #line 29 "../../include/QtGui/../../src/gui/painting/qbrush.h" typedef QtValidLicenseForGuiModule QtGuiModule; struct QBrushData; class QPixmap; class QGradient; class QVariant; class QBrush { public: QBrush(); QBrush(Qt::BrushStyle bs); QBrush(const QColor &color, Qt::BrushStyle bs=Qt::SolidPattern); QBrush(Qt::GlobalColor color, Qt::BrushStyle bs=Qt::SolidPattern); QBrush(const QColor &color, const QPixmap &pixmap); QBrush(Qt::GlobalColor color, const QPixmap &pixmap); QBrush(const QPixmap &pixmap); QBrush(const QBrush &brush); QBrush(const QGradient &gradient); ~QBrush(); QBrush &operator=(const QBrush &brush); operator QVariant() const; inline Qt::BrushStyle style() const; void setStyle(Qt::BrushStyle); QPixmap texture() const; void setTexture(const QPixmap &pixmap); inline const QColor &color() const; void setColor(const QColor &color); inline void setColor(Qt::GlobalColor color); const QGradient *gradient() const; bool isOpaque() const; bool operator==(const QBrush &b) const; inline bool operator!=(const QBrush &b) const { return !(operator==(b)); } inline operator const QColor&() const; QPixmap *pixmap() const; inline void setPixmap(const QPixmap &pixmap) { setTexture(pixmap); } private: friend class QX11PaintEngine; friend class QPainter; void detach(Qt::BrushStyle newStyle); void init(const QColor &color, Qt::BrushStyle bs); QBrushData *d; void cleanUp(QBrushData *x); }; inline void QBrush::setColor(Qt::GlobalColor acolor) { setColor(QColor(acolor)); } template <> class QTypeInfo { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QBrush)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QBrush"; } }; QDataStream &operator<<(QDataStream &, const QBrush &); QDataStream &operator>>(QDataStream &, QBrush &); QDebug operator<<(QDebug, const QBrush &); struct QBrushData { QAtomic ref; Qt::BrushStyle style; QColor color; }; inline Qt::BrushStyle QBrush::style() const { return d->style; } inline const QColor &QBrush::color() const { return d->color; } inline QBrush::operator const QColor&() const { return d->color; } class QGradientPrivate; typedef QPair QGradientStop; typedef QVector QGradientStops; class QGradient { public: enum Type { LinearGradient, RadialGradient, ConicalGradient, NoGradient }; enum Spread { PadSpread, ReflectSpread, RepeatSpread }; QGradient(); Type type() const { return m_type; } inline void setSpread(Spread spread); Spread spread() const { return m_spread; } void setColorAt(qreal pos, const QColor &color); void setStops(const QGradientStops &stops); QGradientStops stops() const; bool operator==(const QGradient &gradient); bool operator==(const QGradient &gradient) const; private: friend class QLinearGradient; friend class QRadialGradient; friend class QConicalGradient; Type m_type; Spread m_spread; QGradientStops m_stops; union { struct { qreal x1, y1, x2, y2; } linear; struct { qreal cx, cy, fx, fy, radius; } radial; struct { qreal cx, cy, angle; } conical; } m_data; void *dummy; }; inline void QGradient::setSpread(Spread aspread) { m_spread = aspread; } class QLinearGradient : public QGradient { public: QLinearGradient(const QPointF &start, const QPointF &finalStop); QLinearGradient(qreal xStart, qreal yStart, qreal xFinalStop, qreal yFinalStop); QPointF start() const; QPointF finalStop() const; }; class QRadialGradient : public QGradient { public: QRadialGradient(const QPointF ¢er, qreal radius, const QPointF &focalPoint = QPointF()); QRadialGradient(qreal cx, qreal cy, qreal radius, qreal fx=0, qreal fy=0); QPointF center() const; QPointF focalPoint() const; qreal radius() const; }; class QConicalGradient : public QGradient { public: QConicalGradient(const QPointF ¢er, qreal startAngle); QConicalGradient(qreal cx, qreal cy, qreal startAngle); QPointF center() const; qreal angle() const; }; #line 2 "../../include/QtGui/qbrush.h" #line 32 "text/qtextformat.h" typedef QtValidLicenseForGuiModule QtGuiModule; class QString; class QVariant; class QFont; class QTextFormatCollection; class QTextFormatPrivate; class QTextBlockFormat; class QTextCharFormat; class QTextListFormat; class QTextTableFormat; class QTextFrameFormat; class QTextImageFormat; class QTextFormat; class QTextObject; class QTextCursor; class QTextDocument; class QTextLength; QDataStream &operator<<(QDataStream &, const QTextLength &); QDataStream &operator>>(QDataStream &, QTextLength &); class QTextLength { public: enum Type { VariableLength = 0, FixedLength, PercentageLength }; inline QTextLength() : lengthType(VariableLength), fixedValueOrPercentage(0) {} inline explicit QTextLength(Type type, qreal value); inline Type type() const { return lengthType; } inline qreal value(qreal maximumLength) const { switch (lengthType) { case FixedLength: return fixedValueOrPercentage; case VariableLength: return maximumLength; case PercentageLength: return fixedValueOrPercentage * maximumLength / qreal(100); } return -1; } inline qreal rawValue() const { return fixedValueOrPercentage; } inline bool operator==(const QTextLength &other) const { return lengthType == other.lengthType && qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); } inline bool operator!=(const QTextLength &other) const { return lengthType != other.lengthType || !qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); } operator QVariant() const; private: Type lengthType; qreal fixedValueOrPercentage; friend QDataStream &operator<<(QDataStream &, const QTextLength &); friend QDataStream &operator>>(QDataStream &, QTextLength &); }; inline QTextLength::QTextLength(Type atype, qreal avalue) : lengthType(atype), fixedValueOrPercentage(avalue) {} QDataStream &operator<<(QDataStream &, const QTextFormat &); QDataStream &operator>>(QDataStream &, QTextFormat &); class QTextFormat { public: static const QMetaObject staticMetaObject; private: public: enum FormatType { InvalidFormat = -1, BlockFormat = 1, CharFormat = 2, ListFormat = 3, TableFormat = 4, FrameFormat = 5, UserFormat = 100 }; enum Property { ObjectIndex = 0x0, CssFloat = 0x0800, LayoutDirection = 0x0801, OutlinePen = 0x810, BackgroundBrush = 0x820, ForegroundBrush = 0x821, BlockAlignment = 0x1010, BlockTopMargin = 0x1030, BlockBottomMargin = 0x1031, BlockLeftMargin = 0x1032, BlockRightMargin = 0x1033, TextIndent = 0x1034, BlockIndent = 0x1040, BlockNonBreakableLines = 0x1050, BlockTrailingHorizontalRulerWidth = 0x1060, FontFamily = 0x2000, FontPointSize = 0x2001, FontSizeAdjustment = 0x2002, FontSizeIncrement = FontSizeAdjustment, FontWeight = 0x2003, FontItalic = 0x2004, FontUnderline = 0x2005, FontOverline = 0x2006, FontStrikeOut = 0x2007, FontFixedPitch = 0x2008, FontPixelSize = 0x2009, TextUnderlineColor = 0x2010, TextVerticalAlignment = 0x2021, TextOutline = 0x2022, IsAnchor = 0x2030, AnchorHref = 0x2031, AnchorName = 0x2032, ObjectType = 0x2f00, ListStyle = 0x3000, ListIndent = 0x3001, FrameBorder = 0x4000, FrameMargin = 0x4001, FramePadding = 0x4002, FrameWidth = 0x4003, FrameHeight = 0x4004, TableColumns = 0x4100, TableColumnWidthConstraints = 0x4101, TableCellSpacing = 0x4102, TableCellPadding = 0x4103, TableCellRowSpan = 0x4810, TableCellColumnSpan = 0x4811, ImageName = 0x5000, ImageWidth = 0x5010, ImageHeight = 0x5011, UserProperty = 0x100000 }; enum ObjectTypes { NoObject, ImageObject, TableObject, UserObject = 0x1000 }; QTextFormat(); explicit QTextFormat(int type); QTextFormat(const QTextFormat &rhs); QTextFormat &operator=(const QTextFormat &rhs); ~QTextFormat(); void merge(const QTextFormat &other); inline bool isValid() const { return type() != InvalidFormat; } int type() const; int objectIndex() const; void setObjectIndex(int object); QVariant property(int propertyId) const; void setProperty(int propertyId, const QVariant &value); void clearProperty(int propertyId); bool hasProperty(int propertyId) const; bool boolProperty(int propertyId) const; int intProperty(int propertyId) const; qreal doubleProperty(int propertyId) const; QString stringProperty(int propertyId) const; QColor colorProperty(int propertyId) const; QPen penProperty(int propertyId) const; QBrush brushProperty(int propertyId) const; QTextLength lengthProperty(int propertyId) const; QVector lengthVectorProperty(int propertyId) const; void setProperty(int propertyId, const QVector &lengths); QMap properties() const; inline void setObjectType(int type); inline int objectType() const { return intProperty(ObjectType); } inline bool isCharFormat() const { return type() == CharFormat; } inline bool isBlockFormat() const { return type() == BlockFormat; } inline bool isListFormat() const { return type() == ListFormat; } inline bool isFrameFormat() const { return type() == FrameFormat; } inline bool isImageFormat() const { return type() == CharFormat && objectType() == ImageObject; } inline bool isTableFormat() const { return type() == FrameFormat && objectType() == TableObject; } QTextBlockFormat toBlockFormat() const; QTextCharFormat toCharFormat() const; QTextListFormat toListFormat() const; QTextTableFormat toTableFormat() const; QTextFrameFormat toFrameFormat() const; QTextImageFormat toImageFormat() const; bool operator==(const QTextFormat &rhs) const; inline bool operator!=(const QTextFormat &rhs) const { return !operator==(rhs); } operator QVariant() const; inline void setLayoutDirection(Qt::LayoutDirection direction) { setProperty(QTextFormat::LayoutDirection, direction); } inline Qt::LayoutDirection layoutDirection() const { return Qt::LayoutDirection(intProperty(QTextFormat::LayoutDirection)); } inline void setBackground(const QBrush &brush) { setProperty(BackgroundBrush, brush); } inline QBrush background() const { return brushProperty(BackgroundBrush); } inline void clearBackground() { clearProperty(BackgroundBrush); } inline void setForeground(const QBrush &brush) { setProperty(ForegroundBrush, brush); } inline QBrush foreground() const { return brushProperty(ForegroundBrush); } inline void clearForeground() { clearProperty(ForegroundBrush); } private: QSharedDataPointer d; qint32 format_type; friend class QTextFormatCollection; friend class QTextCharFormat; friend QDataStream &operator<<(QDataStream &, const QTextFormat &); friend QDataStream &operator>>(QDataStream &, QTextFormat &); }; inline void QTextFormat::setObjectType(int atype) { setProperty(ObjectType, atype); } class QTextCharFormat : public QTextFormat { public: enum VerticalAlignment { AlignNormal = 0, AlignSuperScript, AlignSubScript }; QTextCharFormat(); bool isValid() const { return isCharFormat(); } void setFont(const QFont &font); QFont font() const; inline void setFontFamily(const QString &family) { setProperty(FontFamily, family); } inline QString fontFamily() const { return stringProperty(FontFamily); } inline void setFontPointSize(qreal size) { setProperty(FontPointSize, size); } inline qreal fontPointSize() const { return doubleProperty(FontPointSize); } inline void setFontWeight(int weight) { if (weight == QFont::Normal) weight = 0; setProperty(FontWeight, weight); } inline int fontWeight() const { int weight = intProperty(FontWeight); if (weight == 0) weight = QFont::Normal; return weight; } inline void setFontItalic(bool italic) { setProperty(FontItalic, italic); } inline bool fontItalic() const { return boolProperty(FontItalic); } inline void setFontUnderline(bool underline) { setProperty(FontUnderline, underline); } inline bool fontUnderline() const { return boolProperty(FontUnderline); } inline void setFontOverline(bool overline) { setProperty(FontOverline, overline); } inline bool fontOverline() const { return boolProperty(FontOverline); } inline void setFontStrikeOut(bool strikeOut) { setProperty(FontStrikeOut, strikeOut); } inline bool fontStrikeOut() const { return boolProperty(FontStrikeOut); } inline void setUnderlineColor(const QColor &color) { setProperty(TextUnderlineColor, color); } inline QColor underlineColor() const { return colorProperty(TextUnderlineColor); } inline void setFontFixedPitch(bool fixedPitch) { setProperty(FontFixedPitch, fixedPitch); } inline bool fontFixedPitch() const { return boolProperty(FontFixedPitch); } inline void setVerticalAlignment(VerticalAlignment alignment) { setProperty(TextVerticalAlignment, alignment); } inline VerticalAlignment verticalAlignment() const { return static_cast(intProperty(TextVerticalAlignment)); } inline void setTextOutline(const QPen &pen) { setProperty(TextOutline, pen); } inline QPen textOutline() const { return penProperty(TextOutline); } inline void setAnchor(bool anchor) { setProperty(IsAnchor, anchor); } inline bool isAnchor() const { return boolProperty(IsAnchor); } inline void setAnchorHref(const QString &value) { setProperty(AnchorHref, value); } inline QString anchorHref() const { return stringProperty(AnchorHref); } inline void setAnchorName(const QString &name) { setProperty(AnchorName, name); } inline QString anchorName() const { return stringProperty(AnchorName); } inline void setTableCellRowSpan(int tableCellRowSpan); inline int tableCellRowSpan() const { int s = intProperty(TableCellRowSpan); if (s == 0) s = 1; return s; } inline void setTableCellColumnSpan(int tableCellColumnSpan); inline int tableCellColumnSpan() const { int s = intProperty(TableCellColumnSpan); if (s == 0) s = 1; return s; } }; inline void QTextCharFormat::setTableCellRowSpan(int atableCellRowSpan) { if (atableCellRowSpan == 1) atableCellRowSpan = 0; setProperty(TableCellRowSpan, atableCellRowSpan); } inline void QTextCharFormat::setTableCellColumnSpan(int atableCellColumnSpan) { if (atableCellColumnSpan == 1) atableCellColumnSpan = 0; setProperty(TableCellColumnSpan, atableCellColumnSpan); } class QTextBlockFormat : public QTextFormat { public: QTextBlockFormat(); bool isValid() const { return isBlockFormat(); } inline void setAlignment(Qt::Alignment alignment); inline Qt::Alignment alignment() const { return QFlag(intProperty(BlockAlignment)); } inline void setTopMargin(qreal margin) { setProperty(BlockTopMargin, margin); } inline qreal topMargin() const { return doubleProperty(BlockTopMargin); } inline void setBottomMargin(qreal margin) { setProperty(BlockBottomMargin, margin); } inline qreal bottomMargin() const { return doubleProperty(BlockBottomMargin); } inline void setLeftMargin(qreal margin) { setProperty(BlockLeftMargin, margin); } inline qreal leftMargin() const { return doubleProperty(BlockLeftMargin); } inline void setRightMargin(qreal margin) { setProperty(BlockRightMargin, margin); } inline qreal rightMargin() const { return doubleProperty(BlockRightMargin); } inline void setTextIndent(qreal margin) { setProperty(TextIndent, margin); } inline qreal textIndent() const { return doubleProperty(TextIndent); } inline void setIndent(int indent); inline int indent() const { return intProperty(BlockIndent); } inline void setNonBreakableLines(bool b) { setProperty(BlockNonBreakableLines, b); } inline bool nonBreakableLines() const { return boolProperty(BlockNonBreakableLines); } }; inline void QTextBlockFormat::setAlignment(Qt::Alignment aalignment) { setProperty(BlockAlignment, int(aalignment)); } inline void QTextBlockFormat::setIndent(int aindent) { setProperty(BlockIndent, aindent); } class QTextListFormat : public QTextFormat { public: QTextListFormat(); bool isValid() const { return isListFormat(); } enum Style { ListDisc = -1, ListCircle = -2, ListSquare = -3, ListDecimal = -4, ListLowerAlpha = -5, ListUpperAlpha = -6, ListStyleUndefined = 0 }; inline void setStyle(Style style); inline Style style() const { return static_cast