1 module dqml.dothersideinterface;
2 
3 extern(C)
4 {
5     // QCoreApplication
6     char* dos_qcoreapplication_application_dir_path();
7 
8     // QApplication
9     void dos_qapplication_create();
10     void dos_qapplication_exec();
11     void dos_qapplication_delete();
12     void dos_qapplication_quit();
13 
14     // QGuiApplication
15     void dos_qguiapplication_create();
16     void dos_qguiapplication_exec();
17     void dos_qguiapplication_delete();
18     void dos_qguiapplication_quit();
19 
20     // QQmlApplicationEngine
21     void* dos_qqmlapplicationengine_create();
22     void  dos_qqmlapplicationengine_load(void*, immutable (char)* filename);
23     void  dos_qqmlapplicationengine_load_url(void*, void*);
24     void  dos_qqmlapplicationengine_load_data(void*, immutable (char)* data);
25     void  dos_qqmlapplicationengine_add_import_path(void* vptr, immutable (char)* path);
26     void* dos_qqmlapplicationengine_context(void*);
27     void  dos_qqmlapplicationengine_delete(void*);
28 
29     // QQuickView
30     void* dos_qquickview_create();
31     void  dos_qquickview_show(void*);
32     char* dos_qquickview_source(void*);
33     void  dos_qquickview_set_source(void*, immutable (char)* filename);
34     void  dos_qquickview_set_source_url(void*, void*);
35     void  dos_qquickview_set_resize_mode(void*, int);
36     void* dos_qquickview_rootContext(void*);
37     void  dos_qquickview_delete(void*);
38 
39     // CharArray
40     void dos_chararray_delete(char*);
41 
42     // QQmlContext
43     char* dos_qqmlcontext_baseUrl(void*);
44     void  dos_qqmlcontext_setcontextproperty(void*, immutable (char)*, void*);
45 
46     // QVariant
47     void*  dos_qvariant_create();
48     void*  dos_qvariant_create_int(int);
49     void*  dos_qvariant_create_bool(bool);
50     void*  dos_qvariant_create_string(immutable(char)*);
51     void*  dos_qvariant_create_qobject(void*);
52     void*  dos_qvariant_create_float(float);
53     void*  dos_qvariant_create_double(double);
54     void*  dos_qvariant_create_qvariant(void*);
55     int    dos_qvariant_toInt(void*);
56     bool   dos_qvariant_toBool(void*);
57     char*  dos_qvariant_toString(void*);
58     float  dos_qvariant_toFloat(void*);
59     double dos_qvariant_toDouble(void*);
60     void*  dos_qvariant_toQObject(void*);
61     void   dos_qvariant_setInt(void*, int);
62     void   dos_qvariant_setBool(void*, bool);
63     void   dos_qvariant_setString(void*, immutable(char)*);
64     void   dos_qvariant_setFloat(void*, float);
65     void   dos_qvariant_setDouble(void*, double);
66     void   dos_qvariant_setQObject(void*, void*);
67     bool   dos_qvariant_isnull(void*);
68     void   dos_qvariant_delete(void*);
69     void   dos_qvariant_assign(void*, void*);
70 
71     // QObject
72     void* dos_qobject_qmetaobject();
73     void* dos_qobject_create(void*, void*,
74                              void function (void*, void*, int , void**));
75     void  dos_qobject_signal_emit(void*, immutable(char)* name,
76                                  int parametersCount,
77                                  void** parameters);
78     bool  dos_qobject_signal_connect(void*,
79                                     immutable(char)*,
80                                     void*,
81                                     immutable(char)*,
82                                     int);
83     bool  dos_qobject_signal_disconnect(void*,
84                                        immutable(char)*,
85                                        void*,
86                                        immutable(char)*);
87     char* dos_qobject_objectName(void*);
88     void  dos_qobject_delete(void*);
89 
90     // QModelIndex
91     void* dos_qmodelindex_create();
92     void* dos_qmodelindex_create_qmodelindex(void* other);
93     void  dos_qmodelindex_delete(void* index);
94     int   dos_qmodelindex_row(void*);
95     int   dos_qmodelindex_column(void*);
96     bool  dos_qmodelindex_isValid(void* index);
97     void* dos_qmodelindex_data(void* index, int role);
98     void* dos_qmodelindex_parent(void* index);
99     void* dos_qmodelindex_child(void* index, int r, int c);
100     void* dos_qmodelindex_sibling(void* index, int r, int c);
101     void  dos_qmodelindex_assign(void* leftSide, void* rightSide);
102 
103     // QHashIntByteArray
104     void* dos_qhash_int_qbytearray_create();
105     void  dos_qhash_int_qbytearray_delete(void*);
106     void  dos_qhash_int_qbytearray_insert(void*, int, immutable(char)*);
107     char* dos_qhash_int_qbytearray_value(void*, int);
108 
109     // QAbstractListModel
110     void* dos_qabstractlistmodel_qmetaobject();
111     void* dos_qabstractlistmodel_create(void*, void*,
112                                         void function (void*, void*, int, void**),
113                                         void function (void*, void*, ref int),
114                                         void function (void*, void*, ref int),
115                                         void function (void*, void*, int, void*),
116                                         void function (void*, void*, void*, int, ref bool),
117                                         void function (void*, void*),
118                                         void function (void*, void*, ref int),
119                                         void function (void*, int, int, int, void*));
120     void dos_qabstractlistmodel_beginInsertRows(void* vptr, void* parent, int first, int last);
121     void dos_qabstractlistmodel_endInsertRows(void* vptr);
122     void dos_qabstractlistmodel_beginRemoveRows(void* vptr, void* parent, int first, int last);
123     void dos_qabstractlistmodel_endRemoveRows(void* vptr);
124     void dos_qabstractlistmodel_beginResetModel(void* vptr);
125     void dos_qabstractlistmodel_endResetModel(void* vptr);
126     void dos_qabstractlistmodel_dataChanged(void* vptr, void* topLeft, void* bottomRight, int* rolesPtr, int rolesLength);
127     void dos_qabstractlistmodel_delete(void*);
128 
129     // QResource
130     void dos_qresource_register(immutable(char)* filename);
131 
132     // QUrl
133     void* dos_qurl_create(immutable(char)*, int);
134     void  dos_qurl_delete(void*);
135     char* dos_qurl_to_string(void* vptr);
136 
137     // QMetaObjectFactory
138     struct DosSignalDefinition
139     {
140         immutable(char)* name;
141         int parametersCount;
142         int* parametersTypes;
143     }
144 
145     struct DosSignalDefinitions
146     {
147         int count;
148         DosSignalDefinition* definitions;
149     }
150 
151     struct DosSlotDefinition
152     {
153         immutable(char)* name;
154         int returnType;
155         int parametersCount;
156         int* parametersTypes;
157     }
158 
159     struct DosSlotDefinitions
160     {
161         int count;
162         DosSlotDefinition* definitions;
163     }
164 
165     struct DosPropertyDefinition
166     {
167         immutable(char)* name;
168         int type;
169         immutable(char)* readSlot;
170         immutable(char)* writeSlot;
171         immutable(char)* notifySignal;
172     }
173 
174     struct DosPropertyDefinitions
175     {
176         int count;
177         DosPropertyDefinition* definitions;
178     }
179 
180     void* dos_qmetaobject_create(void* superclass,
181                                  immutable(char)* className,
182                                  const ref DosSignalDefinitions signalDefinitions,
183                                  const ref DosSlotDefinitions slotDefinitions,
184                                  const ref DosPropertyDefinitions propertyDefinitions);
185     void  dos_qmetaobject_delete(void*);
186 
187 
188     struct DosQmlRegisterType
189     {
190       int major;
191       int minor;
192       immutable(char)* uri;
193       immutable(char)* qml;
194       void* staticMetaObject;
195       void function(int, void*, ref void*, ref void*) createFunction;
196       void function(int, void*) deleteFunction;
197     }
198 
199     int dos_qdeclarative_qmlregistertype(const ref DosQmlRegisterType args);
200     int dos_qdeclarative_qmlregistersingletontype(const ref DosQmlRegisterType args);
201 }