From 10ee12b66a226f890b423ab711e17efd04bd2f70 Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Thu, 18 Oct 2018 22:45:41 +0900 Subject: Moved to /usr folder instead of /opt/trinity. This relates to bug 266. Signed-off-by: Michele Calgaro --- PerlTQt/perltqt.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 PerlTQt/perltqt.h (limited to 'PerlTQt/perltqt.h') diff --git a/PerlTQt/perltqt.h b/PerlTQt/perltqt.h new file mode 100644 index 0000000..7eb240a --- /dev/null +++ b/PerlTQt/perltqt.h @@ -0,0 +1,54 @@ +#ifndef PERLTQT_H +#define PERLTQT_H + +#include "marshall.h" + +struct smokeperl_object { + bool allocated; + Smoke *smoke; + int classId; + void *ptr; +}; + +struct TypeHandler { + const char *name; + Marshall::HandlerFn fn; +}; + +extern int do_debug; // evil +extern SV *sv_qapp; +extern int object_count; + +// keep this enum in sync with lib/TQt/debug.pm + +enum TQtDebugChannel { + qtdb_none = 0x00, + qtdb_ambiguous = 0x01, + qtdb_autoload = 0x02, + qtdb_calls = 0x04, + qtdb_gc = 0x08, + qtdb_virtual = 0x10, + qtdb_verbose = 0x20 +}; + +void unmapPointer(smokeperl_object *, Smoke::Index, void*); +SV *getPointerObject(void *ptr); +void mapPointer(SV *, smokeperl_object *, HV *, Smoke::Index, void *); + + +extern struct mgvtbl vtbl_smoke; + +inline smokeperl_object *sv_obj_info(SV *sv) { // ptr on success, null on fail + if(!sv || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVHV) + return 0; + SV *obj = SvRV(sv); + MAGIC *mg = mg_find(obj, '~'); + if(!mg || mg->mg_virtual != &vtbl_smoke) { + // FIXME: die or something? + return 0; + } + smokeperl_object *o = (smokeperl_object*)mg->mg_ptr; + return o; +} + +#endif // PERLTQT_H -- cgit v1.2.3