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*/ 30QScriptEnginePrivate::QScriptEnginePrivate(const QScriptEngine* engine) 31 : q_ptr(const_cast<QScriptEngine*>(engine)) 32 , m_context(JSGlobalContextCreate(0)) 33{ 34} 35 36QScriptEnginePrivate::~QScriptEnginePrivate() 37{ 38 JSGlobalContextRelease(m_context); 39} 40 41/*! 42 Evaluates program and returns the result of the evaluation. 43 \internal 44*/ 45QScriptValuePrivate* 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