blob: 0860f5bef9e521691205ea1f0ca5f06ef21e1c4e [file] [log] [blame]
// Copyright 2005 Google Inc.
// All Rights Reserved.
#ifndef FUNCTION_OBJECT_H
#define FUNCTION_OBJECT_H
#include "gwt-webkit.h"
#include <kjs/object.h>
class FunctionObject : public KJS::JSObject {
protected:
FunctionObject(const KJS::UString& name);
public:
const KJS::ClassInfo *classInfo() const { return &info; }
// shared implementations of JSObject methods
virtual bool getOwnPropertySlot(KJS::ExecState*, const KJS::Identifier&, KJS::PropertySlot&);
virtual bool canPut(KJS::ExecState*, const KJS::Identifier&) const;
virtual void put(KJS::ExecState*, const KJS::Identifier&, KJS::JSValue*, int);
virtual bool deleteProperty(KJS::ExecState*, const KJS::Identifier&);
virtual KJS::JSValue *defaultValue(KJS::ExecState*, KJS::JSType) const;
virtual bool implementsCall() const;
// subclasses must implement
virtual KJS::JSValue *callAsFunction(KJS::ExecState*, KJS::JSObject*, const KJS::List&) = 0;
static const KJS::ClassInfo info;
private:
static KJS::JSValue* getter(KJS::ExecState*, KJS::JSObject*, const KJS::Identifier&, const KJS::PropertySlot&);
private:
KJS::UString name;
};
class ToStringFunction : public FunctionObject {
public:
ToStringFunction();
virtual KJS::JSValue *callAsFunction(KJS::ExecState*, KJS::JSObject*, const KJS::List&);
};
#endif