hsqml-0.1.0: cbits/HsQMLObject.h
#ifndef HSQML_OBJECT_H
#define HSQML_OBJECT_H
#include <QObject>
class HsQMLClass;
class HsQMLObject;
class HsQMLObjectProxy
{
public:
HsQMLObjectProxy(HsStablePtr, HsQMLClass*);
virtual ~HsQMLObjectProxy();
HsStablePtr haskell() const;
HsQMLClass* klass() const;
HsQMLObject* object();
void clearObject();
enum RefSrc {Handle, Object};
void ref(RefSrc);
void deref(RefSrc);
private:
HsStablePtr mHaskell;
HsQMLClass* mKlass;
HsQMLObject* mObject;
QAtomicInt mRefCount;
};
class HsQMLObject : public QObject
{
public:
HsQMLObject(HsQMLObjectProxy*);
virtual ~HsQMLObject();
virtual const QMetaObject* metaObject() const;
virtual void* qt_metacast(const char*);
virtual int qt_metacall(QMetaObject::Call, int, void**);
HsQMLObjectProxy* proxy() const;
private:
HsQMLObjectProxy* mProxy;
HsStablePtr mHaskell;
HsQMLClass* mKlass;
};
#endif /*HSQML_OBJECT_H*/