[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/kdelibs-js/khtml/ecma
From:       George Staikos <staikos () kde ! org>
Date:       2005-11-09 16:30:42
Message-ID: 1131553842.802168.14006.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 479205 by staikos:

actually port most of kjs_binding.  this isn't so hard...  but does it work?


 M  +25 -80    kjs_binding.cpp  


--- branches/work/kdelibs-js/khtml/ecma/kjs_binding.cpp #479204:479205
@@ -32,6 +32,7 @@
 #include <kparts/browserextension.h>
 
 #include <assert.h>
+#include <stdlib.h>
 
 using namespace KJS;
 
@@ -41,66 +42,10 @@
   return "[object " + className() + "]";
 }
 
-Value DOMFunction::get(ExecState *exec, const Identifier &propertyName) const
-{
-  try {
-    return tryGet(exec, propertyName);
-  }
-  catch (DOM::DOMException e) {
-    Object err = Error::create(exec, GeneralError, QString("DOM exception \
                %1").arg(e.code).toLocal8Bit());
-    exec->setException(err);
-    return Undefined();
-  }
-  catch (...) {
-    kdError(6070) << "Unknown exception in DOMFunction::get()" << endl;
-    return String("Unknown exception");
-  }
-}
-
-Value DOMFunction::call(ExecState *exec, Object &thisObj, const List &args)
-{
-  try {
-    return tryCall(exec, thisObj, args);
-  }
-  // pity there's no way to distinguish between these in JS code
-  // ### Look into setting prototypes of these & the use of instanceof so the \
                exception
-  // type can be determined. See what other browsers do.
-  catch (DOM::DOMException e) {
-    Object err = Error::create(exec, GeneralError, QString("DOM Exception \
                %1").arg(e.code).toLocal8Bit());
-    err.put(exec, "code", Number(e.code));
-    exec->setException(err);
-    return Undefined();
-  }
-  catch (DOM::RangeException e) {
-    Object err = Error::create(exec, GeneralError, QString("DOM Range Exception \
                %1").arg(e.code).toLocal8Bit());
-    err.put(exec, "code", Number(e.code));
-    exec->setException(err);
-    return Undefined();
-  }
-  catch (DOM::CSSException e) {
-    Object err = Error::create(exec, GeneralError, QString("CSS Exception \
                %1").arg(e.code).toLocal8Bit());
-    err.put(exec, "code", Number(e.code));
-    exec->setException(err);
-    return Undefined();
-  }
-  catch (DOM::EventException e) {
-    Object err = Error::create(exec, GeneralError, QString("DOM Event Exception \
                %1").arg(e.code).toLocal8Bit());
-    err.put(exec, "code", Number(e.code));
-    exec->setException(err);
-    return Undefined();
-  }
-  catch (...) {
-    kdError(6070) << "Unknown exception in DOMFunction::call()" << endl;
-    Object err = Error::create(exec, GeneralError, "Unknown exception");
-    exec->setException(err);
-    return Undefined();
-  }
-}
-
 typedef Q3PtrList<ScriptInterpreter> InterpreterList;
 static InterpreterList *interpreterList;
 
-ScriptInterpreter::ScriptInterpreter( const Object &global, khtml::ChildFrame* frame \
) +ScriptInterpreter::ScriptInterpreter( ObjectImp *global, khtml::ChildFrame* frame \
)  : Interpreter( global ), m_frame( frame ), m_domObjects(1021),
     m_evt( 0L ), m_inlineCode(false), m_timerCallback(false)
 {
@@ -233,17 +178,17 @@
   return QString((QChar*) data(), size());
 }
 
-DOM::Node KJS::toNode(const Value& val)
+DOM::Node KJS::toNode(ValueImp *val)
 {
-  Object obj = Object::dynamicCast(val);
-  if (!obj.isValid() || !obj.inherits(&DOMNode::info))
+  ObjectImp *obj = val->getObject();
+  if (!obj || !obj->inherits(&DOMNode::info))
     return DOM::Node();
 
-  const DOMNode *dobj = static_cast<const DOMNode*>(obj.imp());
+  const DOMNode *dobj = static_cast<const DOMNode*>(obj);
   return dobj->toNode();
 }
 
-Value KJS::getString(DOM::DOMString s)
+ValueImp *KJS::getString(DOM::DOMString s)
 {
   if (s.isNull())
     return Null();
@@ -251,17 +196,17 @@
     return String(s);
 }
 
-QVariant KJS::ValueToVariant(ExecState* exec, const Value &val) {
+QVariant KJS::ValueToVariant(ExecState* exec, ValueImp *val) {
   QVariant res;
-  switch (val.type()) {
+  switch (val->type()) {
   case BooleanType:
-    res = QVariant(val.toBoolean(exec), 0);
+    res = QVariant(val->toBoolean(exec), 0);
     break;
   case NumberType:
-    res = QVariant(val.toNumber(exec));
+    res = QVariant(val->toNumber(exec));
     break;
   case StringType:
-    res = QVariant(val.toString(exec).qstring());
+    res = QVariant(val->toString(exec).qstring());
     break;
   default:
     // everything else will be 'invalid'
@@ -272,17 +217,17 @@
 
 class EmbedLiveConnect : public ObjectImp
 {
-  friend Value KJS::getLiveConnectValue(KParts::LiveConnectExtension *lc, const \
QString & name, const int type, const QString & value, int id); +  friend ValueImp* \
KJS::getLiveConnectValue(KParts::LiveConnectExtension *lc, const QString & name, \
const int type, const QString & value, int id);  \
EmbedLiveConnect(KParts::LiveConnectExtension *lc, UString n, \
KParts::LiveConnectExtension::Type t, int id);  public:
   ~EmbedLiveConnect();
 
-  virtual Value get(ExecState *, const Identifier & prop) const;
-  virtual void put(ExecState * exec, const Identifier &prop, const Value & value, \
                int=None);
-  virtual Value call(ExecState * exec, Object &, const List &args);
+  virtual ValueImp *get(ExecState *, const Identifier & prop) const;
+  virtual void put(ExecState * exec, const Identifier &prop, ValueImp *value, \
int=None); +  virtual ValueImp *call(ExecState * exec, ObjectImp*, const List &args);
   virtual bool implementsCall() const;
   virtual bool toBoolean(ExecState *) const;
-  virtual Value toPrimitive(ExecState *exec, Type) const;
+  virtual ValueImp *toPrimitive(ExecState *exec, Type) const;
   virtual UString toString(ExecState *) const;
 
 private:
@@ -293,7 +238,7 @@
   unsigned long objid;
 };
 
-Value KJS::getLiveConnectValue(KParts::LiveConnectExtension *lc, const QString & \
name, const int type, const QString & value, int id) +ValueImp \
*KJS::getLiveConnectValue(KParts::LiveConnectExtension *lc, const QString & name, \
const int type, const QString & value, int id)  {
   KParts::LiveConnectExtension::Type t=(KParts::LiveConnectExtension::Type)type;
   switch(t) {
@@ -306,7 +251,7 @@
     }
     case KParts::LiveConnectExtension::TypeObject:
     case KParts::LiveConnectExtension::TypeFunction:
-      return Value(new EmbedLiveConnect(lc, name, t, id));
+      return new EmbedLiveConnect(lc, name, t, id);
     case KParts::LiveConnectExtension::TypeNumber: {
       bool ok;
       int i = value.toInt(&ok);
@@ -335,7 +280,7 @@
 }
 
 KDE_NO_EXPORT
-Value EmbedLiveConnect::get(ExecState *, const Identifier & prop) const
+ValueImp *EmbedLiveConnect::get(ExecState *, const Identifier & prop) const
 {
   if (m_liveconnect) {
     KParts::LiveConnectExtension::Type rettype;
@@ -348,10 +293,10 @@
 }
 
 KDE_NO_EXPORT
-void EmbedLiveConnect::put(ExecState * exec, const Identifier &prop, const Value & \
value, int) +void EmbedLiveConnect::put(ExecState * exec, const Identifier &prop, \
ValueImp* value, int)  {
   if (m_liveconnect)
-    m_liveconnect->put(objid, prop.qstring(), value.toString(exec).qstring());
+    m_liveconnect->put(objid, prop.qstring(), value->toString(exec).qstring());
 }
 
 KDE_NO_EXPORT
@@ -360,12 +305,12 @@
 }
 
 KDE_NO_EXPORT
-Value EmbedLiveConnect::call(ExecState *exec, Object&, const List &args)
+ValueImp* EmbedLiveConnect::call(ExecState *exec, ObjectImp*, const List &args)
 {
   if (m_liveconnect) {
     QStringList qargs;
     for (ListIterator i = args.begin(); i != args.end(); ++i)
-      qargs.append((*i).toString(exec).qstring());
+      qargs.append((*i)->toString(exec).qstring());
     KParts::LiveConnectExtension::Type rtype;
     QString rval;
     unsigned long robjid;
@@ -381,7 +326,7 @@
 }
 
 KDE_NO_EXPORT
-Value EmbedLiveConnect::toPrimitive(ExecState *exec, Type) const {
+ValueImp *EmbedLiveConnect::toPrimitive(ExecState *exec, Type) const {
   return String(toString(exec));
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic