debugger.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "debugger.h"
00025 #include "value.h"
00026 #include "object.h"
00027 #include "types.h"
00028 #include "interpreter.h"
00029 #include "internal.h"
00030 #include "ustring.h"
00031
00032 using namespace KJS;
00033
00034
00035
00036 namespace KJS {
00037 struct AttachedInterpreter
00038 {
00039 public:
00040 AttachedInterpreter(Interpreter *i) : interp(i), next(0L) {}
00041 Interpreter *interp;
00042 AttachedInterpreter *next;
00043 };
00044
00045 }
00046
00047 Debugger::Debugger()
00048 {
00049 rep = new DebuggerImp();
00050 }
00051
00052 Debugger::~Debugger()
00053 {
00054
00055 while (rep->interps)
00056 detach(rep->interps->interp);
00057
00058 delete rep;
00059 }
00060
00061 void Debugger::attach(Interpreter *interp)
00062 {
00063 if (interp->imp()->debugger() != this)
00064 interp->imp()->setDebugger(this);
00065
00066
00067 if (!rep->interps)
00068 rep->interps = new AttachedInterpreter(interp);
00069 else {
00070 AttachedInterpreter *ai = rep->interps;
00071 while (ai->next)
00072 ai = ai->next;
00073 ai->next = new AttachedInterpreter(interp);;
00074 }
00075 }
00076
00077 void Debugger::detach(Interpreter *interp)
00078 {
00079 if (interp->imp()->debugger() == this)
00080 interp->imp()->setDebugger(0L);
00081
00082 if (!rep->interps)
00083 return;
00084
00085 if (rep->interps->interp == interp) {
00086 AttachedInterpreter *old = rep->interps;
00087 rep->interps = rep->interps->next;
00088 delete old;
00089 }
00090
00091 AttachedInterpreter *ai = rep->interps;
00092 if (!ai)
00093 return;
00094 while (ai->next && ai->next->interp != interp)
00095 ai = ai->next;
00096 if (ai->next) {
00097 AttachedInterpreter *old = ai->next;
00098 ai->next = ai->next->next;
00099 delete old;
00100 }
00101 }
00102
00103 bool Debugger::sourceParsed(ExecState *, int ,
00104 const UString &, int )
00105 {
00106 return true;
00107 }
00108
00109 bool Debugger::sourceUnused(ExecState *, int )
00110 {
00111 return true;
00112 }
00113
00114 bool Debugger::exception(ExecState *, int , int ,
00115 Object &)
00116 {
00117 return true;
00118 }
00119
00120 bool Debugger::atStatement(ExecState *, int , int ,
00121 int )
00122 {
00123 return true;
00124 }
00125
00126 bool Debugger::callEvent(ExecState *, int , int ,
00127 Object &, const List &)
00128 {
00129 return true;
00130 }
00131
00132 bool Debugger::returnEvent(ExecState *, int , int ,
00133 Object &)
00134 {
00135 return true;
00136 }
00137
This file is part of the documentation for kdelibs Version 3.1.4.