changes in response to build log on other compilers

This commit is contained in:
Heather Anderson 2021-09-03 14:37:10 -07:00 committed by ksuprynowicz
parent 8581022a53
commit 23776abce3
8 changed files with 125 additions and 115 deletions

View file

@ -36,6 +36,13 @@ using ScriptProgramPointer = QSharedPointer<ScriptProgram>;
Q_DECLARE_METATYPE(ScriptEnginePointer);
template <typename T>
inline ScriptValue scriptValueFromValue(ScriptEngine* engine, const T& t);
template <typename T>
inline T scriptvalue_cast(const ScriptValue& value);
/// [ScriptInterface] Provides an engine-independent interface for QScriptEngine
class ScriptEngine {
public:

View file

@ -41,7 +41,7 @@ inline ScriptValue scriptValueFromValue<QVariant>(ScriptEngine* engine, const QV
}
template <typename T>
T scriptvalue_cast(const ScriptValue& value) {
inline T scriptvalue_cast(const ScriptValue& value) {
T t;
const int id = qMetaTypeId<T>();

View file

@ -89,10 +89,10 @@ public:
inline void setProperty(quint32 arrayIndex,
const ScriptValue& value,
const PropertyFlags& flags = KeepExistingFlags);
template <typename TYP>
template <typename TYP, class ScriptEnginePointer = ScriptEnginePointer>
inline void setProperty(const QString& name, const TYP& value,
const PropertyFlags& flags = KeepExistingFlags);
template <typename TYP>
template <typename TYP, class ScriptEnginePointer = ScriptEnginePointer>
inline void setProperty(quint32 arrayIndex, const TYP& value,
const PropertyFlags& flags = KeepExistingFlags);
inline void setPrototype(const ScriptValue& prototype);
@ -165,14 +165,16 @@ public:
virtual QObject* toQObject() const = 0;
};
template <typename TYP>
// the second template parameter is used to defer evaluation of calls to the engine until ScriptEngine isn't forward-declared
template <typename TYP, class ScriptEnginePointer>
void ScriptValue::setProperty(const QString& name, const TYP& value, const PropertyFlags& flags) {
setProperty(name, engine()->newValue(value), flags);
setProperty(name, static_cast<const ScriptEnginePointer&>(engine())->newValue(value), flags);
}
template <typename TYP>
// the second template parameter is used to defer evaluation of calls to the engine until ScriptEngine isn't forward-declared
template <typename TYP, class ScriptEnginePointer>
void ScriptValue::setProperty(quint32 arrayIndex, const TYP& value, const PropertyFlags& flags) {
setProperty(arrayIndex, engine()->newValue(value), flags);
setProperty(arrayIndex, static_cast<const ScriptEnginePointer&>(engine())->newValue(value), flags);
}
ScriptValue::ScriptValue(const ScriptValue& src) : _proxy(src.ptr()->copy()) {

View file

@ -32,16 +32,16 @@ public: // construction
inline QScriptContext* toQtValue() const { return _context; }
public: // ScriptContext implementation
virtual int argumentCount() const;
virtual ScriptValue argument(int index) const;
virtual QStringList backtrace() const;
virtual ScriptValue callee() const;
virtual ScriptEnginePointer engine() const;
virtual ScriptFunctionContextPointer functionContext() const;
virtual ScriptContextPointer parentContext() const;
virtual ScriptValue thisObject() const;
virtual ScriptValue throwError(const QString& text);
virtual ScriptValue throwValue(const ScriptValue& value);
virtual int argumentCount() const override;
virtual ScriptValue argument(int index) const override;
virtual QStringList backtrace() const override;
virtual ScriptValue callee() const override;
virtual ScriptEnginePointer engine() const override;
virtual ScriptFunctionContextPointer functionContext() const override;
virtual ScriptContextPointer parentContext() const override;
virtual ScriptValue thisObject() const override;
virtual ScriptValue throwError(const QString& text) override;
virtual ScriptValue throwValue(const ScriptValue& value) override;
private: // storage
QScriptContext* _context;
@ -53,10 +53,10 @@ public: // construction
inline ScriptFunctionContextQtWrapper(QScriptContext* context) : _value(context) {}
public: // ScriptFunctionContext implementation
virtual QString fileName() const;
virtual QString functionName() const;
virtual FunctionType functionType() const;
virtual int lineNumber() const;
virtual QString fileName() const override;
virtual QString functionName() const override;
virtual FunctionType functionType() const override;
virtual int lineNumber() const override;
private: // storage
QScriptContextInfo _value;

View file

@ -45,55 +45,55 @@ class ScriptEngineQtScript : public QScriptEngine, public ScriptEngine, public Q
Q_OBJECT
public: // ScriptEngine implementation
virtual void abortEvaluation();
virtual void clearExceptions();
virtual ScriptValue cloneUncaughtException(const QString& detail = QString());
virtual ScriptContext* currentContext() const;
//virtual ScriptValue evaluate(const QString& program, const QString& fileName = QString());
//virtual ScriptValue evaluate(const ScriptProgramPointer &program);
//virtual ScriptValue evaluateInClosure(const ScriptValue& locals, const ScriptProgramPointer& program);
virtual ScriptValue globalObject() const;
virtual bool hasUncaughtException() const;
virtual bool isEvaluating() const;
virtual ScriptValue lintScript(const QString& sourceCode, const QString& fileName, const int lineNumber = 1);
virtual ScriptValue makeError(const ScriptValue& other, const QString& type = "Error");
virtual ScriptManager* manager() const;
virtual void abortEvaluation() override;
virtual void clearExceptions() override;
virtual ScriptValue cloneUncaughtException(const QString& detail = QString()) override;
virtual ScriptContext* currentContext() const override;
//virtual ScriptValue evaluate(const QString& program, const QString& fileName = QString()) override;
//virtual ScriptValue evaluate(const ScriptProgramPointer &program) override;
//virtual ScriptValue evaluateInClosure(const ScriptValue& locals, const ScriptProgramPointer& program) override;
virtual ScriptValue globalObject() const override;
virtual bool hasUncaughtException() const override;
virtual bool isEvaluating() const override;
virtual ScriptValue lintScript(const QString& sourceCode, const QString& fileName, const int lineNumber = 1) override;
virtual ScriptValue makeError(const ScriptValue& other, const QString& type = "Error") override;
virtual ScriptManager* manager() const override;
// if there is a pending exception and we are at the top level (non-recursive) stack frame, this emits and resets it
virtual bool maybeEmitUncaughtException(const QString& debugHint = QString());
virtual bool maybeEmitUncaughtException(const QString& debugHint = QString()) override;
virtual ScriptValue newArray(uint length = 0);
virtual ScriptValue newArrayBuffer(const QByteArray& message);
virtual ScriptValue newFunction(ScriptEngine::FunctionSignature fun, int length = 0);
virtual ScriptValue newObject();
virtual ScriptProgramPointer newProgram(const QString& sourceCode, const QString& fileName);
virtual ScriptValue newArray(uint length = 0) override;
virtual ScriptValue newArrayBuffer(const QByteArray& message) override;
virtual ScriptValue newFunction(ScriptEngine::FunctionSignature fun, int length = 0) override;
virtual ScriptValue newObject() override;
virtual ScriptProgramPointer newProgram(const QString& sourceCode, const QString& fileName) override;
virtual ScriptValue newQObject(QObject *object, ScriptEngine::ValueOwnership ownership = ScriptEngine::QtOwnership,
const ScriptEngine::QObjectWrapOptions &options = ScriptEngine::QObjectWrapOptions());
virtual ScriptValue newValue(bool value);
virtual ScriptValue newValue(int value);
virtual ScriptValue newValue(uint value);
virtual ScriptValue newValue(double value);
virtual ScriptValue newValue(const QString& value);
virtual ScriptValue newValue(const QLatin1String& value);
virtual ScriptValue newValue(const char* value);
virtual ScriptValue newVariant(const QVariant& value);
virtual ScriptValue nullValue();
virtual bool raiseException(const ScriptValue& exception);
//virtual void registerEnum(const QString& enumName, QMetaEnum newEnum);
//Q_INVOKABLE virtual void registerFunction(const QString& name, ScriptEngine::FunctionSignature fun, int numArguments = -1);
//Q_INVOKABLE virtual void registerFunction(const QString& parent, const QString& name, ScriptEngine::FunctionSignature fun, int numArguments = -1);
//Q_INVOKABLE virtual void registerGetterSetter(const QString& name, ScriptEngine::FunctionSignature getter, ScriptEngine::FunctionSignature setter, const QString& parent = QString(""));
//virtual void registerGlobalObject(const QString& name, QObject* object);
virtual void setDefaultPrototype(int metaTypeId, const ScriptValue& prototype);
virtual void setObjectName(const QString& name);
virtual bool setProperty(const char* name, const QVariant& value);
virtual void setProcessEventsInterval(int interval);
virtual QThread* thread() const;
virtual void setThread(QThread* thread);
virtual ScriptValue undefinedValue();
virtual ScriptValue uncaughtException() const;
virtual QStringList uncaughtExceptionBacktrace() const;
virtual int uncaughtExceptionLineNumber() const;
const ScriptEngine::QObjectWrapOptions& options = ScriptEngine::QObjectWrapOptions()) override;
virtual ScriptValue newValue(bool value) override;
virtual ScriptValue newValue(int value) override;
virtual ScriptValue newValue(uint value) override;
virtual ScriptValue newValue(double value) override;
virtual ScriptValue newValue(const QString& value) override;
virtual ScriptValue newValue(const QLatin1String& value) override;
virtual ScriptValue newValue(const char* value) override;
virtual ScriptValue newVariant(const QVariant& value) override;
virtual ScriptValue nullValue() override;
virtual bool raiseException(const ScriptValue& exception) override;
//virtual void registerEnum(const QString& enumName, QMetaEnum newEnum) override;
//Q_INVOKABLE virtual void registerFunction(const QString& name, ScriptEngine::FunctionSignature fun, int numArguments = -1) override;
//Q_INVOKABLE virtual void registerFunction(const QString& parent, const QString& name, ScriptEngine::FunctionSignature fun, int numArguments = -1) override;
//Q_INVOKABLE virtual void registerGetterSetter(const QString& name, ScriptEngine::FunctionSignature getter, ScriptEngine::FunctionSignature setter, const QString& parent = QString("")) override;
//virtual void registerGlobalObject(const QString& name, QObject* object) override;
virtual void setDefaultPrototype(int metaTypeId, const ScriptValue& prototype) override;
virtual void setObjectName(const QString& name) override;
virtual bool setProperty(const char* name, const QVariant& value) override;
virtual void setProcessEventsInterval(int interval) override;
virtual QThread* thread() const override;
virtual void setThread(QThread* thread) override;
virtual ScriptValue undefinedValue() override;
virtual ScriptValue uncaughtException() const override;
virtual QStringList uncaughtExceptionBacktrace() const override;
virtual int uncaughtExceptionLineNumber() const override;
// helper to detect and log warnings when other code invokes QScriptEngine/BaseScriptEngine in thread-unsafe ways
inline bool IS_THREADSAFE_INVOCATION(const QString& method) { return ScriptEngine::IS_THREADSAFE_INVOCATION(method); }

View file

@ -32,9 +32,9 @@ public: // construction
inline const QScriptProgram& toQtValue() const { return _value; }
public: // ScriptProgram implementation
virtual ScriptSyntaxCheckResultPointer checkSyntax() const;
virtual QString fileName() const;
virtual QString sourceCode() const;
virtual ScriptSyntaxCheckResultPointer checkSyntax() const override;
virtual QString fileName() const override;
virtual QString sourceCode() const override;
private: // storage
QPointer<ScriptEngineQtScript> _engine;
@ -47,10 +47,10 @@ public: // construction
_value(std::move(value)) {}
public: // ScriptSyntaxCheckResult implementation
virtual int errorColumnNumber() const;
virtual int errorLineNumber() const;
virtual QString errorMessage() const;
virtual State state() const;
virtual int errorColumnNumber() const override;
virtual int errorLineNumber() const override;
virtual QString errorMessage() const override;
virtual State state() const override;
private: // storage
QScriptSyntaxCheckResult _value;

View file

@ -31,11 +31,11 @@ public: // construction
_engine(engine), _value(object) {}
public: // ScriptValueIterator implementation
virtual ScriptValue::PropertyFlags flags() const;
virtual bool hasNext() const;
virtual QString name() const;
virtual void next();
virtual ScriptValue value() const;
virtual ScriptValue::PropertyFlags flags() const override;
virtual bool hasNext() const override;
virtual QString name() const override;
virtual void next() override;
virtual ScriptValue value() const override;
private: // storage
QPointer<ScriptEngineQtScript> _engine;

View file

@ -35,52 +35,53 @@ public: // construction
static QScriptValue fullUnwrap(ScriptEngineQtScript* engine, const ScriptValue& value);
public:
virtual void release();
virtual ScriptValueProxy* copy() const;
virtual void release() override;
virtual ScriptValueProxy* copy() const override;
public: // ScriptValue implementation
virtual ScriptValue call(const ScriptValue& thisObject = ScriptValue(), const ScriptValueList& args = ScriptValueList());
virtual ScriptValue call(const ScriptValue& thisObject, const ScriptValue& arguments);
virtual ScriptValue construct(const ScriptValueList& args = ScriptValueList());
virtual ScriptValue construct(const ScriptValue& arguments);
virtual ScriptValue data() const;
virtual ScriptEnginePointer engine() const;
virtual ScriptValueIteratorPointer newIterator() const;
virtual ScriptValue call(const ScriptValue& thisObject = ScriptValue(),
const ScriptValueList& args = ScriptValueList()) override;
virtual ScriptValue call(const ScriptValue& thisObject, const ScriptValue& arguments) override;
virtual ScriptValue construct(const ScriptValueList& args = ScriptValueList()) override;
virtual ScriptValue construct(const ScriptValue& arguments) override;
virtual ScriptValue data() const override;
virtual ScriptEnginePointer engine() const override;
virtual ScriptValueIteratorPointer newIterator() const override;
virtual ScriptValue property(const QString& name,
const ScriptValue::ResolveFlags& mode = ScriptValue::ResolvePrototype) const;
const ScriptValue::ResolveFlags& mode = ScriptValue::ResolvePrototype) const override;
virtual ScriptValue property(quint32 arrayIndex,
const ScriptValue::ResolveFlags& mode = ScriptValue::ResolvePrototype) const;
virtual void setData(const ScriptValue& val);
const ScriptValue::ResolveFlags& mode = ScriptValue::ResolvePrototype) const override;
virtual void setData(const ScriptValue& val) override;
virtual void setProperty(const QString& name,
const ScriptValue& value,
const ScriptValue::PropertyFlags& flags = ScriptValue::KeepExistingFlags);
const ScriptValue::PropertyFlags& flags = ScriptValue::KeepExistingFlags) override;
virtual void setProperty(quint32 arrayIndex,
const ScriptValue& value,
const ScriptValue::PropertyFlags& flags = ScriptValue::KeepExistingFlags);
virtual void setPrototype(const ScriptValue& prototype);
virtual bool strictlyEquals(const ScriptValue& other) const;
const ScriptValue::PropertyFlags& flags = ScriptValue::KeepExistingFlags) override;
virtual void setPrototype(const ScriptValue& prototype) override;
virtual bool strictlyEquals(const ScriptValue& other) const override;
virtual bool equals(const ScriptValue& other) const;
virtual bool isArray() const;
virtual bool isBool() const;
virtual bool isError() const;
virtual bool isFunction() const;
virtual bool isNumber() const;
virtual bool isNull() const;
virtual bool isObject() const;
virtual bool isString() const;
virtual bool isUndefined() const;
virtual bool isValid() const;
virtual bool isVariant() const;
virtual bool toBool() const;
virtual qint32 toInt32() const;
virtual double toInteger() const;
virtual double toNumber() const;
virtual QString toString() const;
virtual quint16 toUInt16() const;
virtual quint32 toUInt32() const;
virtual QVariant toVariant() const;
virtual QObject* toQObject() const;
virtual bool equals(const ScriptValue& other) const override;
virtual bool isArray() const override;
virtual bool isBool() const override;
virtual bool isError() const override;
virtual bool isFunction() const override;
virtual bool isNumber() const override;
virtual bool isNull() const override;
virtual bool isObject() const override;
virtual bool isString() const override;
virtual bool isUndefined() const override;
virtual bool isValid() const override;
virtual bool isVariant() const override;
virtual bool toBool() const override;
virtual qint32 toInt32() const override;
virtual double toInteger() const override;
virtual double toNumber() const override;
virtual QString toString() const override;
virtual quint16 toUInt16() const override;
virtual quint32 toUInt32() const override;
virtual QVariant toVariant() const override;
virtual QObject* toQObject() const override;
private: // helper functions
QScriptValue fullUnwrap(const ScriptValue& value) const;