Make dynamic-bindings for each class.
[commonqt:commonqt.git] / commonqt.h
1 #ifdef __cplusplus
2 extern "C" {
3 #endif
4
5 #ifdef WIN32
6 #  define EXPORT __declspec(dllexport)
7 #else
8 #  define EXPORT
9 #endif
10
11 class DynamicBinding;
12 class Binding;
13   
14 typedef struct SmokeData {
15         const char *name;
16
17         void *classes;
18         short numClasses;
19
20         void *methods;
21         short numMethods;
22
23         void *methodMaps;
24         short numMethodMaps;
25
26         void *methodNames;
27         short numMethodNames;
28
29         void *types;
30         short numTypes;
31
32         short *inheritanceList;
33         short *argumentList;
34         short *ambiguousMethodList;
35         void *castFn;
36
37         void *binding;
38 } SmokeData;
39
40 EXPORT void sw_init();
41 EXPORT void sw_smoke(Smoke *, SmokeData*, void *, void *, void *);
42 EXPORT void sw_override(DynamicBinding*, short, bool);
43 EXPORT void* sw_make_dynamic_binding(Smoke*, QMetaObject*, short,
44                                      void*, void*, void*);
45   
46 EXPORT void* sw_make_qbytearray(char *);
47 EXPORT void sw_delete_qbytearray(void *q);
48 EXPORT void* sw_make_qstring(char *);
49 EXPORT void sw_delete_qstring(void *);
50 EXPORT void* sw_make_metaobject(void *, char *, int *);
51 EXPORT void sw_delete(void *p);
52 EXPORT void* sw_qstring_to_utf8(void* s);
53 EXPORT const void* sw_qstring_to_utf16(void*);
54
55 EXPORT int sw_windows_version();
56
57 EXPORT void sw_find_class(char *, Smoke **, short *);
58 EXPORT void sw_id_instance_class(void *, Smoke **, short *);
59 EXPORT short sw_find_name(Smoke *, char *);
60 EXPORT short sw_id_method(Smoke *, short, short);
61 EXPORT short sw_id_type(Smoke *, char *);
62 EXPORT short sw_id_class(Smoke *, char *, bool);
63
64 EXPORT void* sw_qstringlist_new();
65 EXPORT void sw_qstringlist_delete(void*);
66 EXPORT void sw_qstringlist_append(void*, char*);
67 EXPORT int sw_qstringlist_size(void*);
68 EXPORT const void* sw_qstringlist_at(void*, int);
69
70 EXPORT void* sw_qlist_void_new(void);
71 EXPORT int sw_qlist_void_size(void*);
72 EXPORT void sw_qlist_void_delete(void*);
73 EXPORT const void* sw_qlist_void_at(void*, int);
74 EXPORT void sw_qlist_void_append(void*, void*);
75
76 #define DECLARE_QLIST_SCALAR_MARSHALLER(NAME) \
77   EXPORT void* sw_qlist_##NAME##_new(); \
78   EXPORT int sw_qlist_##NAME##_size(void *ptr); \
79   EXPORT void sw_qlist_##NAME##_delete(void *ptr); \
80   EXPORT const void* sw_qlist_##NAME##_at(void *ptr, int index); \
81   EXPORT void sw_qlist_##NAME##_append(void *ptr, void *whatptr);
82
83 DECLARE_QLIST_SCALAR_MARSHALLER(int)
84 DECLARE_QLIST_SCALAR_MARSHALLER(qvariant)
85 DECLARE_QLIST_SCALAR_MARSHALLER(qbytearray)
86 DECLARE_QLIST_SCALAR_MARSHALLER(qmodelindex)
87 DECLARE_QLIST_SCALAR_MARSHALLER(qkeysequence)
88
89 #ifdef __cplusplus
90 }
91 #endif