| Server IP : 118.27.122.120 / Your IP : 216.73.217.32 Web Server : Apache System : Linux web0216.sh.tyo1 4.18.0-553.141.2.lve.el7h.x86_64 #1 SMP Wed Jul 8 17:20:31 UTC 2026 x86_64 User : r4834334 ( 11094) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /usr/include/perlqt/ |
Upload File : |
#ifndef SMOKEPERL_H
#define SMOKEPERL_H
#include "QtCore/QHash"
#include "binding.h"
#include "smoke.h"
#include "smokehelp.h"
struct smokeperl_object {
bool allocated;
Smoke* smoke;
int classId;
void* ptr;
};
typedef const char* (*ResolveClassNameFn)(smokeperl_object * o);
typedef void (*ClassCreatedFn)(const char* package, SV* module, SV* klass);
typedef bool (*MarshallSlotReturnValueFn)(Smoke::ModuleIndex classId, void** o, Smoke::Stack stack);
struct PerlQt4Module {
const char *name;
ResolveClassNameFn resolve_classname;
ClassCreatedFn class_created;
PerlQt4::Binding *binding;
MarshallSlotReturnValueFn slot_returnvalue;
};
extern Q_DECL_EXPORT QHash<Smoke*, PerlQt4Module> perlqt_modules;
inline smokeperl_object* sv_obj_info(SV* sv) { // ptr on success, null on fail
if(!sv || !SvROK(sv) || !(SvTYPE(SvRV(sv)) == SVt_PVHV || SvTYPE(SvRV(sv)) == SVt_PVAV))
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;
}
// keep this enum in sync with lib/Qt4/debug.pm
enum Qt4DebugChannel {
qtdb_none = 0x00,
qtdb_ambiguous = 0x01,
qtdb_autoload = 0x02,
qtdb_calls = 0x04,
qtdb_gc = 0x08,
qtdb_virtual = 0x10,
qtdb_verbose = 0x20,
qtdb_signals = 0x40,
qtdb_slots = 0x80,
};
enum MocArgumentType {
xmoc_ptr,
xmoc_bool,
xmoc_int,
xmoc_uint,
xmoc_long,
xmoc_ulong,
xmoc_double,
xmoc_charstar,
xmoc_QString,
xmoc_void
};
struct MocArgument {
// smoke object and associated typeid
SmokeType st;
MocArgumentType argType;
};
#endif //SMOKEPERL_H