Ignore:
Timestamp:
May 5, 2011, 5:36:53 AM (14 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/scripttools/debugging/qscriptdebuggerconsole.cpp

    r651 r846  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
     
    4545#include "qscriptdebuggerscriptedconsolecommand_p.h"
    4646#include "qscriptmessagehandlerinterface_p.h"
     47#include "qscriptbreakpointdata_p.h"
     48#include "qscriptdebuggerresponse_p.h"
     49#include "qscriptdebuggervalueproperty_p.h"
     50#include "qscriptscriptdata_p.h"
    4751
    4852#include <QtCore/qdir.h>
     
    5155#include <QtCore/qstringlist.h>
    5256#include <QtCore/qdebug.h>
     57#include <QtScript/qscriptcontextinfo.h>
    5358#include <QtScript/qscriptengine.h>
    5459
     60Q_DECLARE_METATYPE(QScriptDebuggerResponse)
     61Q_DECLARE_METATYPE(QScriptBreakpointData)
     62Q_DECLARE_METATYPE(QScriptBreakpointMap)
     63Q_DECLARE_METATYPE(QScriptScriptData)
     64Q_DECLARE_METATYPE(QScriptScriptMap)
     65Q_DECLARE_METATYPE(QScriptContextInfo)
     66Q_DECLARE_METATYPE(QScriptDebuggerValue)
     67Q_DECLARE_METATYPE(QScriptDebuggerValueProperty)
     68Q_DECLARE_METATYPE(QScriptDebuggerValuePropertyList)
     69Q_DECLARE_METATYPE(QScriptDebuggerConsoleCommand*)
     70Q_DECLARE_METATYPE(QScriptDebuggerConsoleCommandList)
     71Q_DECLARE_METATYPE(QScriptDebuggerConsoleCommandGroupData)
     72Q_DECLARE_METATYPE(QScriptDebuggerConsoleCommandGroupMap)
     73
    5574QT_BEGIN_NAMESPACE
     75
     76static QScriptValue debuggerResponseToScriptValue(QScriptEngine *eng, const QScriptDebuggerResponse &in)
     77{
     78    QScriptValue out = eng->newObject();
     79    out.setProperty(QString::fromLatin1("result"), qScriptValueFromValue(eng, in.result()));
     80    out.setProperty(QString::fromLatin1("error"), QScriptValue(eng, in.error()));
     81    out.setProperty(QString::fromLatin1("async"), QScriptValue(eng, in.async()));
     82    return out;
     83}
     84
     85static void debuggerResponseFromScriptValue(const QScriptValue &, QScriptDebuggerResponse &)
     86{
     87    Q_ASSERT(0);
     88}
     89
     90static QScriptValue breakpointDataToScriptValue(QScriptEngine *eng, const QScriptBreakpointData &in)
     91{
     92    QScriptValue out = eng->newObject();
     93    out.setProperty(QString::fromLatin1("scriptId"), QScriptValue(eng, qsreal(in.scriptId())));
     94    out.setProperty(QString::fromLatin1("fileName"), QScriptValue(eng, in.fileName()));
     95    out.setProperty(QString::fromLatin1("lineNumber"), QScriptValue(eng, in.lineNumber()));
     96    out.setProperty(QString::fromLatin1("enabled"), QScriptValue(eng, in.isEnabled()));
     97    out.setProperty(QString::fromLatin1("singleShot"), QScriptValue(eng, in.isSingleShot()));
     98    out.setProperty(QString::fromLatin1("ignoreCount"), QScriptValue(eng, in.ignoreCount()));
     99    out.setProperty(QString::fromLatin1("condition"), QScriptValue(eng, in.condition()));
     100    return out;
     101}
     102
     103static void breakpointDataFromScriptValue(const QScriptValue &in, QScriptBreakpointData &out)
     104{
     105    QScriptValue scriptId = in.property(QString::fromLatin1("scriptId"));
     106    if (scriptId.isValid())
     107        out.setScriptId((qint64)scriptId.toNumber());
     108    out.setFileName(in.property(QString::fromLatin1("fileName")).toString());
     109    out.setLineNumber(in.property(QString::fromLatin1("lineNumber")).toInt32());
     110    QScriptValue enabled = in.property(QString::fromLatin1("enabled"));
     111    if (enabled.isValid())
     112        out.setEnabled(enabled.toBoolean());
     113    QScriptValue singleShot = in.property(QString::fromLatin1("singleShot"));
     114    if (singleShot.isValid())
     115        out.setSingleShot(singleShot.toBoolean());
     116    out.setIgnoreCount(in.property(QString::fromLatin1("ignoreCount")).toInt32());
     117    out.setCondition(in.property(QString::fromLatin1("condition")).toString());
     118}
     119
     120static QScriptValue breakpointMapToScriptValue(QScriptEngine *eng, const QScriptBreakpointMap &in)
     121{
     122    QScriptValue out = eng->newObject();
     123    QScriptBreakpointMap::const_iterator it;
     124    for (it = in.constBegin(); it != in.constEnd(); ++it) {
     125        out.setProperty(QString::number(it.key()), qScriptValueFromValue(eng, it.value()));
     126    }
     127    return out;
     128}
     129
     130static void breakpointMapFromScriptValue(const QScriptValue &, QScriptBreakpointMap &)
     131{
     132    Q_ASSERT(0);
     133}
     134
     135static QScriptValue scriptDataToScriptValue(QScriptEngine *eng, const QScriptScriptData &in)
     136{
     137    QScriptValue out = eng->newObject();
     138    out.setProperty(QString::fromLatin1("contents"), QScriptValue(eng, in.contents()));
     139    out.setProperty(QString::fromLatin1("fileName"), QScriptValue(eng, in.fileName()));
     140    out.setProperty(QString::fromLatin1("baseLineNumber"), QScriptValue(eng, in.baseLineNumber()));
     141    return out;
     142}
     143
     144static void scriptDataFromScriptValue(const QScriptValue &in, QScriptScriptData &out)
     145{
     146    QString contents = in.property(QString::fromLatin1("contents")).toString();
     147    QString fileName = in.property(QString::fromLatin1("fileName")).toString();
     148    int baseLineNumber = in.property(QString::fromLatin1("baseLineNumber")).toInt32();
     149    QScriptScriptData tmp(contents, fileName, baseLineNumber);
     150    out = tmp;
     151}
     152
     153static QScriptValue scriptMapToScriptValue(QScriptEngine *eng, const QScriptScriptMap &in)
     154{
     155    QScriptValue out = eng->newObject();
     156    QScriptScriptMap::const_iterator it;
     157    for (it = in.constBegin(); it != in.constEnd(); ++it) {
     158        out.setProperty(QString::number(it.key()), qScriptValueFromValue(eng, it.value()));
     159    }
     160    return out;
     161}
     162
     163static void scriptMapFromScriptValue(const QScriptValue &, QScriptScriptMap &)
     164{
     165    Q_ASSERT(0);
     166}
     167
     168static QScriptValue consoleCommandToScriptValue(
     169    QScriptEngine *eng, QScriptDebuggerConsoleCommand* const &in)
     170{
     171    if (!in)
     172        return eng->undefinedValue();
     173    QScriptValue out = eng->newObject();
     174    out.setProperty(QString::fromLatin1("name"), QScriptValue(eng, in->name()));
     175    out.setProperty(QString::fromLatin1("group"), QScriptValue(eng, in->group()));
     176    out.setProperty(QString::fromLatin1("shortDescription"), QScriptValue(eng, in->shortDescription()));
     177    out.setProperty(QString::fromLatin1("longDescription"), QScriptValue(eng, in->longDescription()));
     178    out.setProperty(QString::fromLatin1("aliases"), qScriptValueFromValue(eng, in->aliases()));
     179    out.setProperty(QString::fromLatin1("seeAlso"), qScriptValueFromValue(eng, in->seeAlso()));
     180    return out;
     181}
     182
     183static void consoleCommandFromScriptValue(
     184    const QScriptValue &, QScriptDebuggerConsoleCommand* &)
     185{
     186    Q_ASSERT(0);
     187}
     188
     189static QScriptValue consoleCommandGroupDataToScriptValue(
     190    QScriptEngine *eng, const QScriptDebuggerConsoleCommandGroupData &in)
     191{
     192    QScriptValue out = eng->newObject();
     193    out.setProperty(QString::fromLatin1("longDescription"), QScriptValue(eng, in.longDescription()));
     194    out.setProperty(QString::fromLatin1("shortDescription"), QScriptValue(eng, in.shortDescription()));
     195    return out;
     196}
     197
     198static void consoleCommandGroupDataFromScriptValue(
     199    const QScriptValue &, QScriptDebuggerConsoleCommandGroupData &)
     200{
     201    Q_ASSERT(0);
     202}
     203
     204static QScriptValue consoleCommandGroupMapToScriptValue(
     205    QScriptEngine *eng, const QScriptDebuggerConsoleCommandGroupMap &in)
     206{
     207    QScriptValue out = eng->newObject();
     208    QScriptDebuggerConsoleCommandGroupMap::const_iterator it;
     209    for (it = in.constBegin(); it != in.constEnd(); ++it) {
     210        out.setProperty(it.key(), qScriptValueFromValue(eng, it.value()));
     211    }
     212    return out;
     213}
     214
     215static void consoleCommandGroupMapFromScriptValue(
     216    const QScriptValue &, QScriptDebuggerConsoleCommandGroupMap &)
     217{
     218    Q_ASSERT(0);
     219}
     220
     221static QScriptValue contextInfoToScriptValue(QScriptEngine *eng, const QScriptContextInfo &in)
     222{
     223    QScriptValue out = eng->newObject();
     224    out.setProperty(QString::fromLatin1("scriptId"), QScriptValue(eng, qsreal(in.scriptId())));
     225    out.setProperty(QString::fromLatin1("fileName"), QScriptValue(eng, in.fileName()));
     226    out.setProperty(QString::fromLatin1("lineNumber"), QScriptValue(eng, in.lineNumber()));
     227    out.setProperty(QString::fromLatin1("columnNumber"), QScriptValue(eng, in.columnNumber()));
     228    out.setProperty(QString::fromLatin1("functionName"), QScriptValue(eng, in.functionName()));
     229    return out;
     230}
     231
     232static void contextInfoFromScriptValue(const QScriptValue &, QScriptContextInfo &)
     233{
     234    Q_ASSERT(0);
     235}
     236
     237static QScriptValue debuggerScriptValuePropertyToScriptValue(QScriptEngine *eng, const QScriptDebuggerValueProperty &in)
     238{
     239    QScriptValue out = eng->newObject();
     240    out.setProperty(QString::fromLatin1("name"), QScriptValue(eng, in.name()));
     241    out.setProperty(QString::fromLatin1("value"), qScriptValueFromValue(eng, in.value()));
     242    out.setProperty(QString::fromLatin1("valueAsString"), QScriptValue(eng, in.valueAsString()));
     243    out.setProperty(QString::fromLatin1("flags"), QScriptValue(eng, static_cast<int>(in.flags())));
     244    return out;
     245}
     246
     247static void debuggerScriptValuePropertyFromScriptValue(const QScriptValue &in, QScriptDebuggerValueProperty &out)
     248{
     249    QString name = in.property(QString::fromLatin1("name")).toString();
     250    QScriptDebuggerValue value = qscriptvalue_cast<QScriptDebuggerValue>(in.property(QString::fromLatin1("value")));
     251    QString valueAsString = in.property(QString::fromLatin1("valueAsString")).toString();
     252    int flags = in.property(QString::fromLatin1("flags")).toInt32();
     253    QScriptDebuggerValueProperty tmp(name, value, valueAsString, QScriptValue::PropertyFlags(flags));
     254    out = tmp;
     255}
    56256
    57257/*!
     
    77277        QScriptDebuggerCommandSchedulerInterface *commandScheduler);
    78278
     279    QScriptEngine *commandEngine;
    79280    QScriptDebuggerConsoleCommandManager *commandManager;
    80281    QString commandPrefix;
     
    100301    commandPrefix = QLatin1String(".");
    101302    commandManager = new QScriptDebuggerConsoleCommandManager();
     303
     304    commandEngine = new QScriptEngine;
     305    qScriptRegisterMetaType<QScriptBreakpointData>(commandEngine, breakpointDataToScriptValue, breakpointDataFromScriptValue);
     306    qScriptRegisterMetaType<QScriptBreakpointMap>(commandEngine, breakpointMapToScriptValue, breakpointMapFromScriptValue);
     307    qScriptRegisterMetaType<QScriptScriptData>(commandEngine, scriptDataToScriptValue, scriptDataFromScriptValue);
     308    qScriptRegisterMetaType<QScriptScriptMap>(commandEngine, scriptMapToScriptValue, scriptMapFromScriptValue);
     309    qScriptRegisterMetaType<QScriptContextInfo>(commandEngine, contextInfoToScriptValue, contextInfoFromScriptValue);
     310    qScriptRegisterMetaType<QScriptDebuggerValueProperty>(commandEngine, debuggerScriptValuePropertyToScriptValue, debuggerScriptValuePropertyFromScriptValue);
     311    qScriptRegisterSequenceMetaType<QScriptDebuggerValuePropertyList>(commandEngine);
     312    qScriptRegisterMetaType<QScriptDebuggerResponse>(commandEngine, debuggerResponseToScriptValue, debuggerResponseFromScriptValue);
     313    qScriptRegisterMetaType<QScriptDebuggerConsoleCommand*>(commandEngine, consoleCommandToScriptValue, consoleCommandFromScriptValue);
     314    qScriptRegisterSequenceMetaType<QScriptDebuggerConsoleCommandList>(commandEngine);
     315    qScriptRegisterMetaType<QScriptDebuggerConsoleCommandGroupData>(commandEngine, consoleCommandGroupDataToScriptValue, consoleCommandGroupDataFromScriptValue);
     316    qScriptRegisterMetaType<QScriptDebuggerConsoleCommandGroupMap>(commandEngine, consoleCommandGroupMapToScriptValue, consoleCommandGroupMapFromScriptValue);
     317// ### can't do this, if it's an object ID the conversion will be incorrect since
     318// ### the object ID refers to an object in a different engine!
     319//    qScriptRegisterMetaType(commandEngine, debuggerScriptValueToScriptValue, debuggerScriptValueFromScriptValue);
    102320}
    103321
     
    105323{
    106324    delete commandManager;
     325    delete commandEngine;
    107326}
    108327
     
    127346        QScriptDebuggerScriptedConsoleCommand *command;
    128347        command = QScriptDebuggerScriptedConsoleCommand::parse(
    129             program, fileName, messageHandler);
     348            program, fileName, commandEngine, messageHandler);
    130349        if (!command)
    131350            continue;
Note: See TracChangeset for help on using the changeset viewer.