// ----------------------------------------------------------------------------
// Generated by InterfaceFactory [Fri May 16 23:15:13 2003]
// 
// File        : rootobject.h
// Class       : RootObject
// class layer : Dispatchable Interface
// ----------------------------------------------------------------------------

#ifndef __ROOTOBJECT_H
#define __ROOTOBJECT_H

#include <bfc/dispatch.h>
#include <bfc/common.h>

class RootObjectCallback;
class ScriptObject;



#include <api/script/objects/rootobjcontroller.h>

// ----------------------------------------------------------------------------

class RootObject: public Dispatchable {
  protected:
    RootObject() {}
    ~RootObject() {}
  public:
    const wchar_t *rootobject_getClassName();
    void rootobject_notify(const wchar_t *s, const wchar_t *t, int u, int v);
    ScriptObject *rootobject_getScriptObject();
    void rootobject_setScriptObject(ScriptObject *obj);
    void rootobject_addCB(RootObjectCallback *cb);
  
  protected:
    enum {
      ROOTOBJECT_ROOTOBJECT_GETCLASSNAME = 10,
      ROOTOBJECT_ROOTOBJECT_NOTIFY = 20,
      ROOTOBJECT_ROOTOBJECT_GETSCRIPTOBJECT = 30,
      ROOTOBJECT_ROOTOBJECT_SETSCRIPTOBJECT = 40,
      ROOTOBJECT_ROOTOBJECT_ADDCB = 50,
    };
};

// ----------------------------------------------------------------------------

inline const wchar_t *RootObject::rootobject_getClassName() {
  const wchar_t *__retval = _call(ROOTOBJECT_ROOTOBJECT_GETCLASSNAME, (const wchar_t *)0);
  return __retval;
}

inline void RootObject::rootobject_notify(const wchar_t *s, const wchar_t *t, int u, int v) {
  _voidcall(ROOTOBJECT_ROOTOBJECT_NOTIFY, s, t, u, v);
}

inline ScriptObject *RootObject::rootobject_getScriptObject() {
  ScriptObject *__retval = _call(ROOTOBJECT_ROOTOBJECT_GETSCRIPTOBJECT, (ScriptObject *)NULL);
  return __retval;
}

inline void RootObject::rootobject_setScriptObject(ScriptObject *obj) {
  _voidcall(ROOTOBJECT_ROOTOBJECT_SETSCRIPTOBJECT, obj);
}

inline void RootObject::rootobject_addCB(RootObjectCallback *cb) {
  _voidcall(ROOTOBJECT_ROOTOBJECT_ADDCB, cb);
}

// ----------------------------------------------------------------------------

#endif // __ROOTOBJECT_H