Source Code (Use browser search to find items of interest.)

Class Index

kdelibs'TypeOfNode (./kdelibs/kjs/nodes.h:279)

  class TypeOfNode : public Node {
  public:
    TypeOfNode(Node *e) : expr(e) {}
    KJSO *evaluate();
  private:
    Node *expr;
  };


kdelibs'TypeOfNode::evaluate() (./kdelibs/kjs/nodes.cpp:438)

KJSO *TypeOfNode::evaluate()
{
  const char *s = 0L;
  Ptr e = expr->evaluate();
  if (e->isA(ReferenceType)) {
    Ptr b = e->getBase();
    if (b->isA(NullType))
      return KJSO::newUndefined();
  }
  Ptr v = e->getValue();
  switch (v->type())
    {
    case UndefinedType:
      s = "undefined";
      break;
    case NullType:
      s = "object";
      break;
    case BooleanType:
      s = "boolean";
      break;
    case NumberType:
      s = "number";
      break;
    case StringType:
      s = "string";
      break;
    default:
      if (v->implementsCall())
	s = "function";
      else
	s = "object";
      break;
    }

  return KJSO::newString(s);
}

// ECMA 11.4.4 and 11.4.5