qscriptvalue.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:7k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtScript module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QSCRIPTVALUE_H
  38. #define QSCRIPTVALUE_H
  39. #include <QtCore/qstring.h>
  40. #ifndef QT_NO_SCRIPT
  41. #include <QtCore/qlist.h>
  42. QT_BEGIN_HEADER
  43. QT_BEGIN_NAMESPACE
  44. QT_MODULE(Script)
  45. class QScriptClass;
  46. class QScriptValue;
  47. class QScriptEngine;
  48. class QScriptString;
  49. class QVariant;
  50. class QObject;
  51. struct QMetaObject;
  52. class QDateTime;
  53. #ifndef QT_NO_REGEXP
  54. class QRegExp;
  55. #endif
  56. typedef QList<QScriptValue> QScriptValueList;
  57. typedef double qsreal;
  58. class QScriptValuePrivate;
  59. class Q_SCRIPT_EXPORT QScriptValue
  60. {
  61. public:
  62.     enum ResolveFlag {
  63.         ResolveLocal        = 0x00,
  64.         ResolvePrototype    = 0x01,
  65.         ResolveScope        = 0x02,
  66.         ResolveFull         = ResolvePrototype | ResolveScope
  67.     };
  68.     Q_DECLARE_FLAGS(ResolveFlags, ResolveFlag)
  69.     enum PropertyFlag {
  70.         ReadOnly            = 0x00000001,
  71.         Undeletable         = 0x00000002,
  72.         SkipInEnumeration   = 0x00000004,
  73.         PropertyGetter      = 0x00000008,
  74.         PropertySetter      = 0x00000010,
  75.         QObjectMember       = 0x00000020,
  76.         KeepExistingFlags   = 0x00000800,
  77.         UserRange           = 0xff000000            // Users may use these as they see fit.
  78.     };
  79.     Q_DECLARE_FLAGS(PropertyFlags, PropertyFlag)
  80.     enum SpecialValue {
  81.         NullValue,
  82.         UndefinedValue
  83.     };
  84. public:
  85.     QScriptValue();
  86.     ~QScriptValue();
  87.     QScriptValue(const QScriptValue &other);
  88.     QScriptValue(QScriptEngine *engine, SpecialValue val);
  89.     QScriptValue(QScriptEngine *engine, bool val);
  90.     QScriptValue(QScriptEngine *engine, int val);
  91.     QScriptValue(QScriptEngine *engine, uint val);
  92.     QScriptValue(QScriptEngine *engine, qsreal val);
  93.     QScriptValue(QScriptEngine *engine, const QString &val);
  94. #ifndef QT_NO_CAST_FROM_ASCII
  95.     QT_ASCII_CAST_WARN_CONSTRUCTOR QScriptValue(QScriptEngine *engine, const char *val);
  96. #endif
  97.     QScriptValue &operator=(const QScriptValue &other);
  98.     QScriptEngine *engine() const;
  99.     bool isValid() const;
  100.     bool isBoolean() const;
  101.     bool isNumber() const;
  102.     bool isFunction() const;
  103.     bool isNull() const;
  104.     bool isString() const;
  105.     bool isUndefined() const;
  106.     bool isVariant() const;
  107.     bool isQObject() const;
  108.     bool isQMetaObject() const;
  109.     bool isObject() const;
  110.     bool isDate() const;
  111.     bool isRegExp() const;
  112.     bool isArray() const;
  113.     bool isError() const;
  114.     QString toString() const;
  115.     qsreal toNumber() const;
  116.     bool toBoolean() const;
  117.     qsreal toInteger() const;
  118.     qint32 toInt32() const;
  119.     quint32 toUInt32() const;
  120.     quint16 toUInt16() const;
  121.     QVariant toVariant() const;
  122.     QObject *toQObject() const;
  123.     const QMetaObject *toQMetaObject() const;
  124.     QScriptValue toObject() const;
  125.     QDateTime toDateTime() const;
  126. #ifndef QT_NO_REGEXP
  127.     QRegExp toRegExp() const;
  128. #endif
  129.     bool instanceOf(const QScriptValue &other) const;
  130.     bool lessThan(const QScriptValue &other) const;
  131.     bool equals(const QScriptValue &other) const;
  132.     bool strictlyEquals(const QScriptValue &other) const;
  133.     QScriptValue prototype() const;
  134.     void setPrototype(const QScriptValue &prototype);
  135.     QScriptValue scope() const;
  136.     void setScope(const QScriptValue &scope);
  137.     QScriptValue property(const QString &name,
  138.                           const ResolveFlags &mode = ResolvePrototype) const;
  139.     void setProperty(const QString &name, const QScriptValue &value,
  140.                      const PropertyFlags &flags = KeepExistingFlags);
  141.     QScriptValue property(quint32 arrayIndex,
  142.                           const ResolveFlags &mode = ResolvePrototype) const;
  143.     void setProperty(quint32 arrayIndex, const QScriptValue &value,
  144.                      const PropertyFlags &flags = KeepExistingFlags);
  145.     QScriptValue property(const QScriptString &name,
  146.                           const ResolveFlags &mode = ResolvePrototype) const;
  147.     void setProperty(const QScriptString &name, const QScriptValue &value,
  148.                      const PropertyFlags &flags = KeepExistingFlags);
  149.     QScriptValue::PropertyFlags propertyFlags(
  150.         const QString &name, const ResolveFlags &mode = ResolvePrototype) const;
  151.     QScriptValue::PropertyFlags propertyFlags(
  152.         const QScriptString &name, const ResolveFlags &mode = ResolvePrototype) const;
  153.     QScriptValue call(const QScriptValue &thisObject = QScriptValue(),
  154.                       const QScriptValueList &args = QScriptValueList());
  155.     QScriptValue call(const QScriptValue &thisObject,
  156.                       const QScriptValue &arguments);
  157.     QScriptValue construct(const QScriptValueList &args = QScriptValueList());
  158.     QScriptValue construct(const QScriptValue &arguments);
  159.     QScriptValue data() const;
  160.     void setData(const QScriptValue &data);
  161.     QScriptClass *scriptClass() const;
  162.     void setScriptClass(QScriptClass *scriptClass);
  163.     qint64 objectId() const;
  164. private:
  165.     QScriptValuePrivate *d_ptr;
  166.     Q_DECLARE_PRIVATE(QScriptValue)
  167. };
  168. Q_DECLARE_OPERATORS_FOR_FLAGS(QScriptValue::ResolveFlags)
  169. Q_DECLARE_OPERATORS_FOR_FLAGS(QScriptValue::PropertyFlags)
  170. QT_END_NAMESPACE
  171. QT_END_HEADER
  172. #endif // QT_NO_SCRIPT
  173. #endif