diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kjs/debugger.cpp | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kjs/debugger.cpp')
-rw-r--r-- | kjs/debugger.cpp | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/kjs/debugger.cpp b/kjs/debugger.cpp new file mode 100644 index 000000000..4632cc7bf --- /dev/null +++ b/kjs/debugger.cpp @@ -0,0 +1,135 @@ +// -*- c-basic-offset: 2 -*- +/* + * This file is part of the KDE libraries + * Copyright (C) 1999-2001 Harri Porten ([email protected]) + * Copyright (C) 2001 Peter Kelly ([email protected]) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "debugger.h" +#include "value.h" +#include "object.h" +#include "types.h" +#include "interpreter.h" +#include "internal.h" +#include "ustring.h" + +using namespace KJS; + +// ------------------------------ Debugger ------------------------------------- + +namespace KJS { + struct AttachedInterpreter + { + public: + AttachedInterpreter(Interpreter *i) : interp(i), next(0L) {} + Interpreter *interp; + AttachedInterpreter *next; + }; + +} + +Debugger::Debugger() +{ + rep = new DebuggerImp(); +} + +Debugger::~Debugger() +{ + // detach from all interpreters + while (rep->interps) + detach(rep->interps->interp); + + delete rep; +} + +void Debugger::attach(Interpreter *interp) +{ + if (interp->imp()->debugger() != this) + interp->imp()->setDebugger(this); + + // add to the list of attached interpreters + if (!rep->interps) + rep->interps = new AttachedInterpreter(interp); + else { + AttachedInterpreter *ai = rep->interps; + while (ai->next) { + if (ai->interp == interp) + return; // already in list + ai = ai->next; + } + ai->next = new AttachedInterpreter(interp); + } +} + +void Debugger::detach(Interpreter *interp) +{ + if (interp->imp()->debugger() == this) + interp->imp()->setDebugger(0L); + + if (!rep->interps) + return; + // remove from the list of attached interpreters + if (rep->interps->interp == interp) { + AttachedInterpreter *old = rep->interps; + rep->interps = rep->interps->next; + delete old; + } + + AttachedInterpreter *ai = rep->interps; + if (!ai) + return; + while (ai->next && ai->next->interp != interp) + ai = ai->next; + if (ai->next) { + AttachedInterpreter *old = ai->next; + ai->next = ai->next->next; + delete old; + } +} + +bool Debugger::sourceParsed(ExecState * /*exec*/, int /*sourceId*/, + const UString &/*source*/, int /*errorLine*/) +{ + return true; +} + +bool Debugger::sourceUnused(ExecState * /*exec*/, int /*sourceId*/) +{ + return true; +} + +bool Debugger::exception(ExecState * /*exec*/, const Value &/*value*/, + bool /*inTryCatch*/) +{ + return true; +} + +bool Debugger::atStatement(ExecState * /*exec*/) +{ + return true; +} + +bool Debugger::enterContext(ExecState * /*exec*/) +{ + return true; +} + +bool Debugger::exitContext(ExecState * /*exec*/, const Completion &/*completion*/) +{ + return true; +} |