#ifndef _BINDINGS_OBJC_INSTANCE_H_
#define _BINDINGS_OBJC_INSTANCE_H_
#include <CoreFoundation/CoreFoundation.h>
#include <objc_class.h>
#include <objc_runtime.h>
#include <objc_utility.h>
namespace KJS {
namespace Bindings {
class ObjcClass;
class ObjcInstance : public Instance
{
public:
ObjcInstance (ObjectStructPtr instance);
~ObjcInstance ();
virtual Class *getClass() const;
ObjcInstance (const ObjcInstance &other);
ObjcInstance &operator=(const ObjcInstance &other);
virtual void begin();
virtual void end();
virtual Value valueOf() const;
virtual Value defaultValue (Type hint) const;
virtual Value invokeMethod (ExecState *exec, const MethodList &method, const List &args);
virtual Value invokeDefaultMethod (ExecState *exec, const List &args);
virtual void setValueOfField (ExecState *exec, const Field *aField, const Value &aValue) const;
virtual bool supportsSetValueOfUndefinedField ();
virtual void setValueOfUndefinedField (ExecState *exec, const Identifier &property, const Value &aValue);
virtual Value ObjcInstance::getValueOfField (ExecState *exec, const Field *aField) const;
virtual Value getValueOfUndefinedField (ExecState *exec, const Identifier &property, Type hint) const;
ObjectStructPtr getObject() const { return _instance; }
Value stringValue() const;
Value numberValue() const;
Value booleanValue() const;
private:
ObjectStructPtr _instance;
mutable ObjcClass *_class;
ObjectStructPtr _pool;
long _beginCount;
};
}
}
#endif