1{
2}
3
4{****************************************************************************
5                                 Interface
6****************************************************************************}
7
8{$ifdef read_interface}
9  type
10     PGtkFlagValue = pointer;
11
12     TGtkFundamentalType = longint;
13const
14     GTK_TYPE_INVALID = 0;
15     GTK_TYPE_NONE = 1;
16     GTK_TYPE_CHAR = 2;
17       GTK_TYPE_UCHAR = 3;
18       GTK_TYPE_BOOL = 4;
19       GTK_TYPE_INT = 5;
20       GTK_TYPE_UINT = 6;
21       GTK_TYPE_LONG = 7;
22       GTK_TYPE_ULONG = 8;
23       GTK_TYPE_FLOAT = 9;
24       GTK_TYPE_DOUBLE = 10;
25       GTK_TYPE_STRING = 11;
26       GTK_TYPE_ENUM = 12;
27       GTK_TYPE_FLAGS = 13;
28       GTK_TYPE_BOXED = 14;
29       GTK_TYPE_POINTER = 15;
30       GTK_TYPE_SIGNAL = 16;
31       GTK_TYPE_ARGS = 17;
32       GTK_TYPE_CALLBACK = 18;
33       GTK_TYPE_C_CALLBACK = 19;
34       GTK_TYPE_FOREIGN = 20;
35       GTK_TYPE_OBJECT = 21;
36
37{********************************
38  Types inserted in gtkobjects
39********************************}
40
41  const
42     GTK_TYPE_FLAT_FIRST = GTK_TYPE_CHAR;
43     GTK_TYPE_FLAT_LAST = GTK_TYPE_POINTER;
44     GTK_TYPE_STRUCTURED_FIRST = GTK_TYPE_SIGNAL;
45     GTK_TYPE_STRUCTURED_LAST = GTK_TYPE_FOREIGN;
46     GTK_TYPE_FUNDAMENTAL_LAST = GTK_TYPE_OBJECT;
47     GTK_TYPE_FUNDAMENTAL_MAX = 32;
48
49function  GTK_CHECK_CLASS_TYPE(type_class:PGtkTypeClass;otype:TGtkType) : boolean;cdecl;
50
51{$ifndef gtkwin}
52function  GTK_TYPE_IDENTIFIER:TGtkType;cdecl;external gtkdll name 'gtk_identifier_get_type';
53function  GTK_IDENTIFIER_TYPE:TGtkType;cdecl;external gtkdll name 'gtk_identifier_get_type';
54function  GTK_IS_IDENTIFIER(obj:pointer):boolean;
55function  GTK_IS_IDENTIFIER_CLASS(klass:pointer):boolean;
56
57function  gtk_identifier_get_type:TGtkType;cdecl;external gtkdll name 'gtk_identifier_get_type';
58{$endif}
59
60function  GTK_TYPE_MAKE(parent_t,seqno:TGtkType):TGtkType;
61function  GTK_FUNDAMENTAL_TYPE(thetype : TGtkType) : TGtkFundamentalType;
62function  GTK_TYPE_SEQNO(thetype : TGtkType) : TGtkType;
63
64function  GTK_VALUE_CHAR(const a : TGtkArg) : gchar;
65function  GTK_VALUE_UCHAR(const a : TGtkArg) : guchar;
66function  GTK_VALUE_BOOL(const a : TGtkArg) : gboolean;
67function  GTK_VALUE_INT(const a : TGtkArg) : gint;
68function  GTK_VALUE_UINT(const a : TGtkArg) : guint;
69function  GTK_VALUE_LONG(const a : TGtkArg) : glong;
70function  GTK_VALUE_ULONG(const a : TGtkArg) : gulong;
71function  GTK_VALUE_FLOAT(const a : TGtkArg) : gfloat;
72function  GTK_VALUE_DOUBLE(const a : TGtkArg) : gdouble;
73function  GTK_VALUE_ENUM(const a : TGtkArg) : longint;
74function  GTK_VALUE_FLAGS(const a : TGtkArg) : longint;
75function  GTK_VALUE_BOXED(const a : TGtkArg) : gpointer;
76function  GTK_VALUE_POINTER(const a : TGtkArg) : gpointer;
77function  GTK_VALUE_OBJECT(const a : TGtkArg): gpointer;
78{function GTK_VALUE_SIGNAL(const a : TGtkArg) : gpointer;
79function  GTK_VALUE_ARGS(const a : TGtkArg) : longint;
80function  GTK_VALUE_CALLBACK(const a : TGtkArg) : gpointer;
81function  GTK_VALUE_C_CALLBACK(const a : TGtkArg) : gpointer;
82function  GTK_VALUE_FOREIGN(const a : TGtkArg) : gpointer;}
83
84function  GTK_RETLOC_CHAR(const a : TGtkArg) : Pgchar;
85function  GTK_RETLOC_UCHAR(const a : TGtkArg) : Pguchar;
86function  GTK_RETLOC_BOOL(const a : TGtkArg) : Pgboolean;
87function  GTK_RETLOC_INT(const a : TGtkArg) : Pgint;
88function  GTK_RETLOC_UINT(const a : TGtkArg) : Pguint;
89function  GTK_RETLOC_LONG(const a : TGtkArg) : Pglong;
90function  GTK_RETLOC_ULONG(const a : TGtkArg) : Pgulong;
91function  GTK_RETLOC_FLOAT(const a : TGtkArg) : Pgfloat;
92function  GTK_RETLOC_DOUBLE(const a : TGtkArg) : Pgdouble;
93function  GTK_RETLOC_ENUM(const a : TGtkArg) : Pgint;
94function  GTK_RETLOC_FLAGS(const a : TGtkArg) : Pguint;
95function  GTK_RETLOC_BOXED(const a : TGtkArg) : Pgpointer;
96
97    type
98       PGtkTypeInfo = ^TGtkTypeInfo;
99       TGtkTypeInfo = record
100            type_name : Pgchar;
101            object_size : guint;
102            class_size : guint;
103            class_init_func : TGtkClassInitFunc;
104            object_init_func : TGtkObjectInitFunc;
105            reserved_1 : gpointer;
106            reserved_2 : gpointer;
107            base_class_init_func : TGtkClassInitFunc;
108         end;
109
110       PGtkTypeQuery = ^TGtkTypeQuery;
111       TGtkTypeQuery = record
112            thetype : TGtkType;
113            type_name : Pgchar;
114            object_size : guint;
115            class_size : guint;
116         end;
117
118       PGtkEnumValue = ^TGtkEnumValue;
119       TGtkEnumValue = record
120            value : guint;
121            value_name : Pgchar;
122            value_nick : Pgchar;
123         end;
124
125
126procedure gtk_type_init;cdecl;external gtkdll name 'gtk_type_init';
127function  gtk_type_unique(parent_thetype:TGtkType; type_info:PGtkTypeInfo):TGtkType;cdecl;external gtkdll name 'gtk_type_unique';
128procedure gtk_type_set_chunk_alloc(thetype:TGtkType; n_chunks:guint);cdecl;external gtkdll name 'gtk_type_set_chunk_alloc';
129function  gtk_type_name(thetype:guint):Pgchar;cdecl;external gtkdll name 'gtk_type_name';
130function  gtk_type_from_name(name:Pgchar):TGtkType;cdecl;external gtkdll name 'gtk_type_from_name';
131function  gtk_type_parent(thetype:TGtkType):TGtkType;cdecl;external gtkdll name 'gtk_type_parent';
132function  gtk_type_class(thetype:TGtkType):gpointer;cdecl;external gtkdll name 'gtk_type_class';
133function  gtk_type_parent_class(thetype:TGtkType):gpointer;cdecl;external gtkdll name 'gtk_type_parent_class';
134function  gtk_type_children_types(thetype:TGtkType):PGList;cdecl;external gtkdll name 'gtk_type_children_types';
135function  gtk_type_new(thetype:TGtkType):gpointer;cdecl;external gtkdll name 'gtk_type_new';
136procedure gtk_type_free(thetype:TGtkType; mem:gpointer);cdecl;external gtkdll name 'gtk_type_free';
137procedure gtk_type_describe_heritage(thetype:TGtkType);cdecl;external gtkdll name 'gtk_type_describe_heritage';
138procedure gtk_type_describe_tree(thetype:TGtkType; show_size:gboolean);cdecl;external gtkdll name 'gtk_type_describe_tree';
139function  gtk_type_is_a(thetype:TGtkType; is_a_thetype:TGtkType):gboolean;cdecl;external gtkdll name 'gtk_type_is_a';
140function  gtk_type_check_object_cast(type_object:PGtkTypeObject; cast_thetype:TGtkType):PGtkTypeObject;cdecl;external gtkdll name 'gtk_type_check_object_cast';
141function  gtk_type_check_class_cast(klass:PGtkTypeClass; cast_thetype:TGtkType):PGtkTypeClass;cdecl;external gtkdll name 'gtk_type_check_class_cast';
142function  gtk_type_register_enum(type_name:Pgchar; values:PGtkEnumValue):TGtkType;cdecl;external gtkdll name 'gtk_type_register_enum';
143function  gtk_type_register_flags(type_name:Pgchar; values:PGtkFlagValue):TGtkType;cdecl;external gtkdll name 'gtk_type_register_flags';
144function  gtk_type_enum_get_values(enum_thetype:TGtkType):PGtkEnumValue;cdecl;external gtkdll name 'gtk_type_enum_get_values';
145function  gtk_type_flags_get_values(flags_thetype:TGtkType):PGtkFlagValue;cdecl;external gtkdll name 'gtk_type_flags_get_values';
146function  gtk_type_enum_find_value(enum_thetype:TGtkType; value_name:Pgchar):PGtkEnumValue;cdecl;external gtkdll name 'gtk_type_enum_find_value';
147function  gtk_type_flags_find_value(flag_thetype:TGtkType; value_name:Pgchar):PGtkFlagValue;cdecl;external gtkdll name 'gtk_type_flags_find_value';
148procedure gtk_type_set_varargs_type(foreign_thetype:TGtkType; varargs_thetype:TGtkType);cdecl;external gtkdll name 'gtk_type_set_varargs_type';
149function  gtk_type_get_varargs_type(foreign_thetype:TGtkType):TGtkType;cdecl;external gtkdll name 'gtk_type_get_varargs_type';
150function  gtk_type_query(thetype:TGtkType):PGtkTypeQuery;cdecl;external gtkdll name 'gtk_type_query';
151
152{$endif read_interface}
153
154
155{****************************************************************************
156                              Implementation
157****************************************************************************}
158
159{$ifdef read_implementation}
160
161function  GTK_CHECK_CLASS_TYPE(type_class:PGtkTypeClass;otype:TGtkType) : boolean;cdecl;
162begin
163  GTK_CHECK_CLASS_TYPE:=(type_class<>nil) and (gtk_type_is_a(type_class^.thetype,otype));
164end;
165
166{$ifndef gtkwin}
167function  GTK_IS_IDENTIFIER(obj:pointer):boolean;
168begin
169  GTK_IS_IDENTIFIER:=(obj<>nil) and GTK_IS_IDENTIFIER_CLASS(PGtkTypeObject(obj)^.klass);
170end;
171
172function  GTK_IS_IDENTIFIER_CLASS(klass:pointer):boolean;
173begin
174  GTK_IS_IDENTIFIER_CLASS:=(klass<>nil) and (PGtkTypeClass(klass)^.thetype=GTK_IDENTIFIER_TYPE);
175end;
176{$endif}
177
178function  GTK_TYPE_MAKE(parent_t,seqno:TGtkType):TGtkType;
179begin
180  GTK_TYPE_MAKE:=(seqno shl 8) or (longint(GTK_FUNDAMENTAL_TYPE(parent_t)));
181end;
182
183function  GTK_FUNDAMENTAL_TYPE(thetype : TGtkType) : TGtkFundamentalType;
184begin
185  GTK_FUNDAMENTAL_TYPE:=TGtkFundamentalType(longint(thetype) and $FF);
186end;
187
188function  GTK_TYPE_SEQNO(thetype : TGtkType) : TGtkType;
189begin
190  if longint(thetype)>$FF then
191    GTK_TYPE_SEQNO:=longint(thetype) shr 8
192  else
193    GTK_TYPE_SEQNO:=thetype;
194end;
195
196function  GTK_VALUE_CHAR(const a : TGtkArg) : gchar;
197begin
198  GTK_VALUE_CHAR:=a.d.char_data;
199end;
200
201function  GTK_VALUE_UCHAR(const a : TGtkArg) : guchar;
202begin
203  GTK_VALUE_UCHAR:=a.d.uchar_data;
204end;
205
206function  GTK_VALUE_BOOL(const a : TGtkArg) : gboolean;
207begin
208  GTK_VALUE_BOOL:=a.d.bool_data;
209end;
210
211function  GTK_VALUE_INT(const a : TGtkArg) : gint;
212begin
213  GTK_VALUE_INT:=a.d.int_data;
214end;
215
216function  GTK_VALUE_UINT(const a : TGtkArg) : guint;
217begin
218  GTK_VALUE_UINT:=a.d.uint_data;
219end;
220
221function  GTK_VALUE_LONG(const a : TGtkArg) : glong;
222begin
223  GTK_VALUE_LONG:=a.d.long_data;
224end;
225
226function  GTK_VALUE_ULONG(const a : TGtkArg) : gulong;
227begin
228  GTK_VALUE_ULONG:=a.d.ulong_data;
229end;
230
231function  GTK_VALUE_FLOAT(const a : TGtkArg) : gfloat;
232begin
233  GTK_VALUE_FLOAT:=a.d.float_data;
234end;
235
236function  GTK_VALUE_DOUBLE(const a : TGtkArg) : gdouble;
237begin
238  GTK_VALUE_DOUBLE:=a.d.double_data;
239end;
240
241function  GTK_VALUE_ENUM(const a : TGtkArg) : longint;
242begin
243  GTK_VALUE_ENUM:=a.d.int_data;
244end;
245
246function  GTK_VALUE_FLAGS(const a : TGtkArg) : longint;
247begin
248  GTK_VALUE_FLAGS:=a.d.uint_data;
249end;
250
251function  GTK_VALUE_BOXED(const a : TGtkArg) : gpointer;
252begin
253  GTK_VALUE_BOXED:=a.d.pointer_data;
254end;
255
256function  GTK_VALUE_POINTER(const a : TGtkArg) : gpointer;
257begin
258  GTK_VALUE_POINTER:=a.d.pointer_data;
259end;
260
261function  GTK_VALUE_OBJECT(const a : TGtkArg): gpointer;
262begin
263  GTK_VALUE_OBJECT:=a.d.object_data;
264end;
265
266{function GTK_VALUE_SIGNAL(const a : TGtkArg) : gpointer;
267begin
268  GTK_VALUE_SIGNAL:=a.d.signal_data;
269end;
270
271function  GTK_VALUE_ARGS(const a : TGtkArg) : longint;
272begin
273  GTK_VALUE_ARGS:=a.d.args_data;
274end;
275
276function  GTK_VALUE_CALLBACK(const a : TGtkArg) : gpointer;
277begin
278  GTK_VALUE_CALLBACK:=a.d.callback_data;
279end;
280
281function  GTK_VALUE_C_CALLBACK(const a : TGtkArg) : gpointer;
282begin
283  GTK_VALUE_C_CALLBACK:=a.d.c_callback_data;
284end;
285
286function  GTK_VALUE_FOREIGN(const a : TGtkArg) : gpointer;
287begin
288  GTK_VALUE_FOREIGN:=a.d.foreign_data;
289end;}
290
291function  GTK_RETLOC_CHAR(const a : TGtkArg) : Pgchar;
292      begin
293         GTK_RETLOC_CHAR:=Pgchar(a.d.pointer_data);
294      end;
295
296function  GTK_RETLOC_UCHAR(const a : TGtkArg) : Pguchar;
297      begin
298         GTK_RETLOC_UCHAR:=Pguchar(a.d.pointer_data);
299      end;
300
301function  GTK_RETLOC_BOOL(const a : TGtkArg) : Pgboolean;
302      begin
303         GTK_RETLOC_BOOL:=Pgboolean(a.d.pointer_data);
304      end;
305
306function  GTK_RETLOC_INT(const a : TGtkArg) : Pgint;
307      begin
308         GTK_RETLOC_INT:=Pgint(a.d.pointer_data);
309      end;
310
311function  GTK_RETLOC_UINT(const a : TGtkArg) : Pguint;
312      begin
313         GTK_RETLOC_UINT:=Pguint(a.d.pointer_data);
314      end;
315
316function  GTK_RETLOC_LONG(const a : TGtkArg) : Pglong;
317      begin
318         GTK_RETLOC_LONG:=Pglong(a.d.pointer_data);
319      end;
320
321function  GTK_RETLOC_ULONG(const a : TGtkArg) : Pgulong;
322      begin
323         GTK_RETLOC_ULONG:=Pgulong(a.d.pointer_data);
324      end;
325
326function  GTK_RETLOC_FLOAT(const a : TGtkArg) : Pgfloat;
327      begin
328         GTK_RETLOC_FLOAT:=Pgfloat(a.d.pointer_data);
329      end;
330
331function  GTK_RETLOC_DOUBLE(const a : TGtkArg) : Pgdouble;
332      begin
333         GTK_RETLOC_DOUBLE:=Pgdouble(a.d.pointer_data);
334      end;
335
336function  GTK_RETLOC_ENUM(const a : TGtkArg) : Pgint;
337      begin
338         GTK_RETLOC_ENUM:=Pgint(a.d.pointer_data);
339      end;
340
341function  GTK_RETLOC_FLAGS(const a : TGtkArg) : Pguint;
342      begin
343         GTK_RETLOC_FLAGS:=Pguint(a.d.pointer_data);
344      end;
345
346function  GTK_RETLOC_BOXED(const a : TGtkArg) : Pgpointer;
347      begin
348         GTK_RETLOC_BOXED:=Pgpointer(a.d.pointer_data);
349      end;
350
351function  GTK_RETLOC_POINTER(const a : TGtkArg) : Pgpointer;
352      begin
353         GTK_RETLOC_POINTER:=Pgpointer(a.d.pointer_data);
354      end;
355
356{$endif read_implementation}
357
358
359