summaryrefslogtreecommitdiffstats
path: root/JavaScriptCore/qt/api/qscriptengine_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'JavaScriptCore/qt/api/qscriptengine_p.h')
-rw-r--r--JavaScriptCore/qt/api/qscriptengine_p.h44
1 files changed, 43 insertions, 1 deletions
diff --git a/JavaScriptCore/qt/api/qscriptengine_p.h b/JavaScriptCore/qt/api/qscriptengine_p.h
index 8e27c42..2bda68e 100644
--- a/JavaScriptCore/qt/api/qscriptengine_p.h
+++ b/JavaScriptCore/qt/api/qscriptengine_p.h
@@ -22,12 +22,16 @@
#include "qscriptconverter_p.h"
#include "qscriptengine.h"
+#include "qscriptstring_p.h"
+#include "qscriptsyntaxcheckresult_p.h"
#include "qscriptvalue.h"
#include <JavaScriptCore/JavaScript.h>
+#include <JSBasePrivate.h>
#include <QtCore/qshareddata.h>
#include <QtCore/qstring.h>
class QScriptEngine;
+class QScriptSyntaxCheckResultPrivate;
class QScriptEnginePrivate : public QSharedData {
public:
@@ -37,8 +41,13 @@ public:
QScriptEnginePrivate(const QScriptEngine*);
~QScriptEnginePrivate();
+ QScriptSyntaxCheckResultPrivate* checkSyntax(const QString& program);
QScriptValuePrivate* evaluate(const QString& program, const QString& fileName, int lineNumber);
+ QScriptValuePrivate* evaluate(const QScriptProgramPrivate* program);
+ inline JSValueRef evaluate(JSStringRef program, JSStringRef fileName, int lineNumber);
+
inline void collectGarbage();
+ inline void reportAdditionalMemoryCost(int cost);
inline JSValueRef makeJSValue(double number) const;
inline JSValueRef makeJSValue(int number) const;
@@ -47,17 +56,42 @@ public:
inline JSValueRef makeJSValue(bool number) const;
inline JSValueRef makeJSValue(QScriptValue::SpecialValue value) const;
+ QScriptValuePrivate* globalObject() const;
+
+ inline QScriptStringPrivate* toStringHandle(const QString& str) const;
+
inline JSGlobalContextRef context() const;
private:
QScriptEngine* q_ptr;
JSGlobalContextRef m_context;
};
+
+/*!
+ Evaluates given JavaScript program and returns result of the evaluation.
+ \attention this function doesn't take ownership of the parameters.
+ \internal
+*/
+JSValueRef QScriptEnginePrivate::evaluate(JSStringRef program, JSStringRef fileName, int lineNumber)
+{
+ JSValueRef exception;
+ JSValueRef result = JSEvaluateScript(m_context, program, /* Global Object */ 0, fileName, lineNumber, &exception);
+ if (!result)
+ return exception; // returns an exception
+ return result;
+}
+
void QScriptEnginePrivate::collectGarbage()
{
JSGarbageCollect(m_context);
}
+void QScriptEnginePrivate::reportAdditionalMemoryCost(int cost)
+{
+ if (cost > 0)
+ JSReportExtraMemoryCost(m_context, cost);
+}
+
JSValueRef QScriptEnginePrivate::makeJSValue(double number) const
{
return JSValueMakeNumber(m_context, number);
@@ -75,7 +109,10 @@ JSValueRef QScriptEnginePrivate::makeJSValue(uint number) const
JSValueRef QScriptEnginePrivate::makeJSValue(const QString& string) const
{
- return JSValueMakeString(m_context, QScriptConverter::toString(string));
+ JSStringRef tmp = QScriptConverter::toString(string);
+ JSValueRef result = JSValueMakeString(m_context, tmp);
+ JSStringRelease(tmp);
+ return result;
}
JSValueRef QScriptEnginePrivate::makeJSValue(bool value) const
@@ -90,6 +127,11 @@ JSValueRef QScriptEnginePrivate::makeJSValue(QScriptValue::SpecialValue value) c
return JSValueMakeUndefined(m_context);
}
+QScriptStringPrivate* QScriptEnginePrivate::toStringHandle(const QString& str) const
+{
+ return new QScriptStringPrivate(str);
+}
+
JSGlobalContextRef QScriptEnginePrivate::context() const
{
return m_context;