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 #include "debugger.h"
00024 #include "value.h"
00025 #include "object.h"
00026 #include "types.h"
00027 #include "interpreter.h"
00028 #include "internal.h"
00029 #include "ustring.h"
00030 
00031 using namespace KJS;
00032 
00033 
00034 
00035 namespace KJS {
00036   struct AttachedInterpreter
00037   {
00038   public:
00039     AttachedInterpreter(Interpreter *i) : interp(i), next(0L) {}
00040     Interpreter *interp;
00041     AttachedInterpreter *next;
00042   };
00043 
00044 }
00045 
00046 Debugger::Debugger()
00047 {
00048   rep = new DebuggerImp();
00049 }
00050 
00051 Debugger::~Debugger()
00052 {
00053   
00054   while (rep->interps)
00055     detach(rep->interps->interp);
00056 
00057   delete rep;
00058 }
00059 
00060 void Debugger::attach(Interpreter *interp)
00061 {
00062   if (interp->imp()->debugger() != this)
00063     interp->imp()->setDebugger(this);
00064 
00065   
00066   if (!rep->interps)
00067     rep->interps = new AttachedInterpreter(interp);
00068   else {
00069     AttachedInterpreter *ai = rep->interps;
00070     while (ai->next)
00071       ai = ai->next;
00072     ai->next = new AttachedInterpreter(interp);
00073   }
00074 }
00075 
00076 void Debugger::detach(Interpreter *interp)
00077 {
00078   if (interp->imp()->debugger() == this)
00079     interp->imp()->setDebugger(0L);
00080 
00081   if (!rep->interps)
00082     return;
00083   
00084   if (rep->interps->interp == interp) {
00085     AttachedInterpreter *old = rep->interps;
00086     rep->interps = rep->interps->next;
00087     delete old;
00088   }
00089 
00090   AttachedInterpreter *ai = rep->interps;
00091   if (!ai)
00092     return;
00093   while (ai->next && ai->next->interp != interp)
00094     ai = ai->next;
00095   if (ai->next) {
00096     AttachedInterpreter *old = ai->next;
00097     ai->next = ai->next->next;
00098     delete old;
00099   }
00100 }
00101 
00102 bool Debugger::sourceParsed(ExecState *, int ,
00103                             const UString &, int )
00104 {
00105   return true;
00106 }
00107 
00108 bool Debugger::sourceUnused(ExecState *, int )
00109 {
00110   return true;
00111 }
00112 
00113 bool Debugger::exception(ExecState *, const Value &,
00114              bool )
00115 {
00116   return true;
00117 }
00118 
00119 bool Debugger::atStatement(ExecState *)
00120 {
00121   return true;
00122 }
00123 
00124 bool Debugger::enterContext(ExecState *)
00125 {
00126   return true;
00127 }
00128 
00129 bool Debugger::exitContext(ExecState *, const Completion &)
00130 {
00131   return true;
00132 }
 
This file is part of the documentation for kjs Library Version 3.2.0.