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