• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2     Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
3 
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Library General Public
6     License as published by the Free Software Foundation; either
7     version 2 of the License, or (at your option) any later version.
8 
9     This library is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12     Library General Public License for more details.
13 
14     You should have received a copy of the GNU Library General Public License
15     along with this library; see the file COPYING.LIB.  If not, write to
16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17     Boston, MA 02110-1301, USA.
18 */
19 
20 #include "config.h"
21 
22 #include "qscriptengine_p.h"
23 
24 #include "qscriptvalue_p.h"
25 
26 /*!
27     Constructs a default QScriptEnginePrivate object, a new global context will be created.
28     \internal
29 */
QScriptEnginePrivate(const QScriptEngine * engine)30 QScriptEnginePrivate::QScriptEnginePrivate(const QScriptEngine* engine)
31     : q_ptr(const_cast<QScriptEngine*>(engine))
32     , m_context(JSGlobalContextCreate(0))
33 {
34 }
35 
~QScriptEnginePrivate()36 QScriptEnginePrivate::~QScriptEnginePrivate()
37 {
38     JSGlobalContextRelease(m_context);
39 }
40 
41 /*!
42     Evaluates program and returns the result of the evaluation.
43     \internal
44 */
evaluate(const QString & program,const QString & fileName,int lineNumber)45 QScriptValuePrivate* QScriptEnginePrivate::evaluate(const QString& program, const QString& fileName, int lineNumber)
46 {
47     JSStringRef script = QScriptConverter::toString(program);
48     JSStringRef file = QScriptConverter::toString(fileName);
49     JSValueRef exception;
50     JSValueRef result = JSEvaluateScript(m_context, script, /* Global Object */ 0, file, lineNumber, &exception);
51     if (!result)
52         return new QScriptValuePrivate(this, exception); // returns an exception
53     return new QScriptValuePrivate(this, result);
54 }
55