4 #include "cl_smoke_qt.h"
8 #include <QExplicitlySharedDataPointer>
13 CL_SMOKE_QT_EXPORT int
14 cl_smoke_setup_lisp_object(void* destruct);
16 CL_SMOKE_QT_EXPORT unsigned int
17 cl_smoke_lisp_object_id(const void* object);
19 CL_SMOKE_QT_EXPORT int
20 cl_smoke_lisp_object_is_set(const void* object);
22 CL_SMOKE_QT_EXPORT void*
23 cl_smoke_make_lisp_object(unsigned int id);
25 CL_SMOKE_QT_EXPORT void*
26 cl_smoke_free_lisp_object(void* object);
28 CL_SMOKE_QT_EXPORT void*
29 cl_smoke_lisp_object_value(const void* variant);
38 typedef void (*destructor)(unsigned int id);
42 lisp_object(unsigned int id);
44 lisp_object(const lisp_object& other);
48 { Q_ASSERT(this->set()); return d->id; }
51 set_id(unsigned int id);
58 ::cl_smoke_setup_lisp_object(void* destruct);
61 struct data : public QSharedData
64 data(unsigned int id);
73 QExplicitlySharedDataPointer<data> d;
75 static destructor destruct;
79 } // namespace cl_smoke
81 Q_DECLARE_METATYPE(cl_smoke::qt::lisp_object);
83 #endif // LISP_OBJECT_H