bindings/c,cpp,python: More support
[sdk] / bindings / python / cffi-ecere.h
1 typedef struct Class Class;
2 typedef uint32_t bool;
3 typedef uint32_t uint32;
4 typedef uint32_t Color;
5 typedef uint32 BorderBits;
6
7 enum enum_BorderStyle
8 {
9    none,
10    contour      = 0x00000001,
11    fixed        = 0x00000003,
12    sizable      = 0x00000007,
13    thin         = 0x00000023,
14    sizableThin  = 0x00000027,
15    deep         = 0x00000008,
16    bevel        = 0x00000010,
17    sizableDeep  = 0x0000000F,
18    sizableBevel = 0x00000017,
19    fixedDeep    = 0x0000000B,
20    fixedBevel   = 0x00000013,
21    deepContour  = 0x00000009
22 };
23 typedef BorderBits BorderStyle;
24
25 struct class_members_Instance
26 {
27    void **_vTbl;
28    Class * _class;
29    int _refCount;
30 };
31
32 typedef struct class_members_Instance * Instance;
33
34 typedef Instance Module;
35 typedef Module Application;
36
37 enum AccessMode
38 {
39    defaultAccess,
40    publicAccess,
41    privateAccess,
42    staticAccess,
43    baseSystemAccess
44 };
45 typedef enum AccessMode AccessMode;
46
47 enum ClassType
48 {
49    normalClass,
50    structClass,
51    bitClass,
52    unitClass,
53    enumClass,
54    noHeadClass
55 };
56 typedef enum ClassType ClassType;
57
58 typedef char * String;
59 typedef const char * constString;
60
61 struct Class
62 {
63    Class * prev;
64    Class * next;
65    const char *name;
66    int offset;
67    int structSize;
68    void **_vTbl;
69    int vTblSize;
70    bool (*Constructor)(void *);
71    void (*Destructor)(void *);
72
73    int offsetClass;
74    int sizeClass;
75    Class * base;
76    ...;
77    /*BinaryTree methods;
78    BinaryTree members;
79    BinaryTree prop;
80    OldList membersAndProperties;
81    BinaryTree classProperties;
82    OldList derivatives;
83    */
84    int memberID;
85    int startMemberID;
86    //ClassType type;
87    Module module;
88    //NameSpace * nameSpace;
89    const char *dataTypeString;
90    //Type dataType;
91    int typeSize;
92    int defaultAlignment;
93    //void (*Initialize)();
94    int memberOffset;
95    //OldList selfWatchers;
96    const char *designerClass;
97    bool noExpansion;
98    const char *defaultProperty;
99    bool comRedefinition;
100    int count;
101    int isRemote;
102    bool internalDecl;
103    void *data;
104    bool computeSize;
105    short structAlignment;
106    short pointerAlignment;
107    int destructionWatchOffset;
108    bool fixed;
109    //OldList delayedCPValues;
110    //AccessMode inheritanceAccess;
111    const char *fullName;
112    void *symbol;
113    /*OldList conversions;
114    OldList templateParams;
115    ClassTemplateArgument * templateArgs;*/
116    Class * templateClass;
117    //OldList templatized;
118    int numParams;
119    bool isInstanceClass;
120    bool byValueSystemClass;
121    void * bindingsClass;
122 };
123
124 constString getTranslatedString(constString name, constString string, constString stringAndContext);
125
126 Class * eC_registerClass(ClassType type, const char *name, const char *baseName, int size, int sizeClass,
127    bool (*Constructor)(void *), void (*Destructor)(void *), Module module, AccessMode declMode, AccessMode inheritanceAccess);
128
129 Instance Instance_new(Class * _class);
130 Instance Instance_newEx(Class * _class, bool bindingsAlloc);
131 void Instance_setMethod(Instance instance, constString name, void *function);
132
133 void Instance_evolve(Instance *instancePtr, Class * _class);
134
135 Application eC_init(bool loadEcere, bool guiApp, int argc, char * argv[]);
136 Module ecere_init(Module fromModule);
137
138 void Application_main(Application app);
139
140 extern void (*PrintLn)(Class * class_object, const void * object, ...);
141
142 extern Class * class_int;
143 // extern Class * class_float;
144 extern Class * class_double;
145 extern Class * class_String;
146 extern Class * class_Window;
147 extern Class * class_Button;
148 extern Class * class_GuiApplication;
149
150 extern Class * class_FontResource;
151
152 #define false 0
153 #define true 1
154
155 typedef struct Size Size;
156 struct Size { int w, h; };
157
158 typedef struct Point Point;
159 struct Point { int x, y; };
160
161 typedef Instance Surface;
162
163 extern void (* Surface_writeTextf)(Surface s, int x, int y, const char * format, ...);
164
165 typedef Instance FontResource;
166
167 extern void (* FontResource_set_faceName)(FontResource f, constString v);
168 extern constString (* FontResource_get_faceName)(FontResource f);
169
170 extern void (* FontResource_set_size)(FontResource f, float v);
171 extern float (* FontResource_get_size)(FontResource f);
172
173 extern void (* FontResource_set_bold)(FontResource f, bool v);
174 extern bool (* FontResource_get_bold)(FontResource f);
175
176 extern void (* FontResource_set_italic)(FontResource f, bool v);
177 extern bool (* FontResource_get_italic)(FontResource f);
178
179 extern void (* FontResource_set_outlineSize)(FontResource f, float v);
180 extern float (* FontResource_get_outlineSize)(FontResource f);
181
182 extern void (* FontResource_set_outlineFade)(FontResource f, float v);
183 extern float (* FontResource_get_outlineFade)(FontResource f);
184
185 typedef Instance Window;
186 typedef Window Button;
187 typedef Window MessageBox;
188 typedef int64_t DialogResult;
189 typedef uint32 Modifiers;
190
191 extern DialogResult (* Window_modal)(Window);
192 extern bool (* Window_create)(Window);
193
194 extern void (* Window_set_parent)(Window w, Window v);
195 extern Window (* Window_get_parent)(Window w);
196
197 extern void (* Window_set_displayDriver)(Window w, constString v);
198 extern constString (* Window_get_displayDriver)(Window w);
199
200 extern void (* Window_set_size)(Window w, const Size * v);
201 extern void (* Window_get_size)(Window w, Size * v);
202
203 extern void (* Window_set_font)(Window w, const FontResource font);
204 extern FontResource (* Window_get_font)(Window w);
205
206 extern void (* Window_set_position)(Window w, const Point * v);
207 extern void (* Window_get_position)(Window w, Point * v);
208
209 extern void (* Window_set_hasClose)(Window w, bool hasClose);
210 extern bool (* Window_get_hasClose)(Window w);
211
212 extern void (* Window_set_hasMaximize)(Window w, bool hasMaximize);
213 extern bool (* Window_get_hasMaximize)(Window w);
214
215 extern void (* Window_set_hasMinimize)(Window w, bool hasMinimize);
216 extern bool (* Window_get_hasMinimize)(Window w);
217
218 extern void (* Window_set_caption)(Window w, constString caption);
219 extern constString (* Window_get_caption)(Window w);
220
221 extern void (* Window_set_borderStyle)(Window w, BorderStyle borderStyle);
222 extern BorderStyle (* Window_get_borderStyle)(Window w);
223
224 extern void (* Window_set_background)(Window w, Color background);
225 extern Color (* Window_get_background)(Window w);
226
227 extern void (* Window_set_foreground)(Window w, Color v);
228 extern Color (* Window_get_foreground)(Window w);
229
230 extern void (* MessageBox_set_contents)(MessageBox m, constString contents);
231 extern constString (* MessageBox_get_contents)(MessageBox m);
232
233 #define COLOR_r_MASK       0x00FF0000
234 #define COLOR_r_SHIFT      16
235 #define COLOR_g_MASK       0x0000FF00
236 #define COLOR_g_SHIFT      8
237 #define COLOR_b_MASK       0x000000FF
238 #define COLOR_b_SHIFT      0
239
240 #define BORDERBITS_contour_MASK  0x00000001
241 #define BORDERBITS_contour_SHIFT 0
242 #define BORDERBITS_fixed_MASK    0x00000002
243 #define BORDERBITS_fixed_SHIFT   1
244 #define BORDERBITS_sizable_MASK  0x00000004
245 #define BORDERBITS_sizable_SHIFT 2
246 #define BORDERBITS_deep_MASK     0x00000008
247 #define BORDERBITS_deep_SHIFT    3
248 #define BORDERBITS_bevel_MASK    0x00000010
249 #define BORDERBITS_bevel_SHIFT   4
250 #define BORDERBITS_thin_MASK     0x00000020
251 #define BORDERBITS_thin_SHIFT    5