Mercurial > projects > dynamin
view dynamin/c/glib.d @ 18:836a064828e8
Implement FileDialog/DirectoryDialog with GTK
and start a glib/gdk/gtk binding. Add invoke/invokeNow stubs to fix build on X.
author | Jordan Miner <jminer7@gmail.com> |
---|---|
date | Fri, 24 Jul 2009 00:35:42 -0500 |
parents | |
children |
line wrap: on
line source
module dynamin.c.glib; /* * A binding to at least the part of Glib that Dynamin uses. */ import tango.sys.SharedLib; extern(C): //{{{ gtypes static if((void*).sizeof == 4) { alias uint gsize; } else static if((void*).sizeof == 8) { alias ulong gsize; } alias char gchar; alias short gshort; alias int glong; alias int gint; alias gint gboolean; alias ubyte guchar; alias ushort gushort; alias uint gulong; alias uint guint; alias float gfloat; alias double gdouble; alias byte gint8; alias ubyte guint8; alias short gint16; alias ushort guint16; alias int gint32; alias uint guint32; alias long gint64; alias ulong guint64; enum : gint8 { G_MININT8 = cast(gint8)0x80, G_MAXINT8 = 0x7f } enum : guint8 { G_MAXUINT8 = 0xff } enum : gint16 { G_MININT16 = cast(gint16)0x8000, G_MAXINT16 = 0x7fff } enum : guint16 { G_MAXUINT16 = 0xffff } enum : gint32 { G_MININT32 = 0x80000000, G_MAXINT32 = 0x7fffffff } enum : guint32 { G_MAXUINT32 = 0xffffffff } enum : gint64 { G_MININT64 = 0x8000000000000000, G_MAXINT64 = 0x7fffffffffffffff } enum : guint64 { G_MAXUINT64 = 0xffffffffffffffffU } alias void* gpointer; alias /*const*/ void* gconstpointer; alias gint function(gconstpointer a, gconstpointer b) GCompareFunc; alias gint function(gconstpointer a, gconstpointer b, gpointer user_data) GCompareDataFunc; alias gboolean function(gconstpointer a, gconstpointer b) GEqualFunc; alias void function(gpointer data) GDestroyNotify; alias void function(gpointer data, gpointer user_data) GFunc; alias guint function(gconstpointer key) GHashFunc; alias void function(gpointer key, gpointer value, gpointer user_data) GHFunc; alias void function(gpointer data) GFreeFunc; alias /*const*/ gchar* function(/*const*/ gchar* str, gpointer data) GTranslateFunc; const real G_E = 2.7182818284590452353602874713526624977572470937000; const real G_LN2 = 0.69314718055994530941723212145817656807550013436026; const real G_LN10 = 2.3025850929940456840179914546843642076011014886288; const real G_PI = 3.1415926535897932384626433832795028841971693993751; const real G_PI_2 = 1.5707963267948966192313216916397514420985846996876; const real G_PI_4 = 0.78539816339744830961566084581987572104929234984378; const real G_SQRT2 = 1.4142135623730950488016887242096980785696718753769; version(LittleEndian) { enum { G_BYTE_ORDER = 1234 } } else { enum { G_BYTE_ORDER = 4321 } } enum { G_LITTLE_ENDIAN = 1234, G_BIG_ENDIAN = 4321 } //}}} //{{{ gtype const G_TYPE_FUNDAMENTAL_SHIFT = 2; const G_TYPE_FUNDAMENTAL_MAX = 255 << G_TYPE_FUNDAMENTAL_SHIFT; GType G_TYPE_MAKE_FUNDAMENTAL(uint x) { return x << G_TYPE_FUNDAMENTAL_SHIFT; } enum { G_TYPE_INVALID = 0 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_NONE = 1 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_INTERFACE = 2 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_CHAR = 3 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_UCHAR = 4 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_BOOLEAN = 5 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_INT = 6 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_UINT = 7 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_LONG = 8 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_ULONG = 9 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_INT64 = 10 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_UINT64 = 11 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_ENUM = 12 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_FLAGS = 13 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_FLOAT = 14 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_DOUBLE = 15 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_STRING = 16 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_POINTER = 17 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_BOXED = 18 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_PARAM = 19 << G_TYPE_FUNDAMENTAL_SHIFT, G_TYPE_OBJECT = 20 << G_TYPE_FUNDAMENTAL_SHIFT, } const G_TYPE_RESERVED_GLIB_FIRST = 21; const G_TYPE_RESERVED_GLIB_LAST = 31; const G_TYPE_RESERVED_BSE_FIRST = 32; const G_TYPE_RESERVED_BSE_LAST = 48; const G_TYPE_RESERVED_USER_FIRST = 49; bool G_TYPE_IS_FUNDAMENTAL(GType type) { return type <= G_TYPE_FUNDAMENTAL_MAX; } bool G_TYPE_IS_DERIVED(GType type) { return type > G_TYPE_FUNDAMENTAL_MAX; } /*bool G_TYPE_IS_INTERFACE(GType type) { return G_TYPE_FUNDAMENTAL(type) == G_TYPE_INTERFACE; } bool G_TYPE_IS_CLASSED(GType type) { return g_type_test_flags(type, G_TYPE_FLAG_CLASSED); } bool G_TYPE_IS_INSTANTIATABLE(GType type) { return g_type_test_flags(type, G_TYPE_FLAG_INSTANTIATABLE); } bool G_TYPE_IS_DERIVABLE(GType type) { return g_type_test_flags(type, G_TYPE_FLAG_DERIVABLE); } bool G_TYPE_IS_DEEP_DERIVABLE(GType type) { return g_type_test_flags(type, G_TYPE_FLAG_DEEP_DERIVABLE); } bool G_TYPE_IS_ABSTRACT(GType type) { return g_type_test_flags(type, G_TYPE_FLAG_ABSTRACT); } bool G_TYPE_IS_VALUE_ABSTRACT(GType type) { return g_type_test_flags(type, G_TYPE_FLAG_VALUE_ABSTRACT); } bool G_TYPE_IS_VALUE_TYPE(GType type) { return g_type_check_is_value_type(type); } bool G_TYPE_HAS_VALUE_TABLE(GType type) { return g_type_value_table_peek(type) != NULL; } */ alias gsize GType; struct GTypeClass { GType g_type; } struct GTypeInstance { GTypeClass* g_class; } struct GTypeInterface { GType g_type; GType g_instance_type; } struct GTypeQuery { GType type; /*const*/ gchar* type_name; guint class_size; guint instance_size; } // plus a lot more //GType function(GType type_id) g_type_fundamental; //alias g_type_fundamental G_TYPE_FUNDAMENTAL; gboolean function(GType type, guint flags) g_type_test_flags; //}}} //{{{ gquark typedef guint32 GQuark; GQuark function(/*const*/ gchar* string) g_quark_try_string; GQuark function(/*const*/ gchar* string) g_quark_from_static_string; GQuark function(/*const*/ gchar* string) g_quark_from_string; gchar* function(GQuark quark) g_quark_to_string; gchar* function(/*const*/ gchar* string) g_intern_string; gchar* function(/*const*/ gchar* string) g_intern_static_string; //}}} //{{{ gerror struct GError { GQuark domain; gint code; gchar* message; } GError* function(GQuark domain, gint code, /*const*/ gchar* format, ...) g_error_new; GError* function(GQuark domain, gint code, /*const*/ gchar* message) g_error_new_literal; void function(GError* error) g_error_free; GError* function(/*const*/ GError* error) g_error_copy; gboolean function(/*const*/ GError* error, GQuark domain, gint code) g_error_matches; void function(GError** err, GQuark domain, gint code, /*const*/ gchar* format, ...) g_set_error; void function(GError** err, GQuark domain, gint code, /*const*/ gchar* message) g_set_error_literal; void function(GError** dest, GError* src) g_propagate_error; void function(GError** err) g_clear_error; void function(GError** err, /*const*/ gchar* format, ...) g_prefix_error; void function(GError** dest, GError* src, /*const*/ gchar* format, ...) g_propagate_prefixed_error; //}}} //{{{ gslist struct GSList { gpointer data; GSList* next; } GSList* function() g_slist_alloc; void function(GSList* list) g_slist_free; void function(GSList* list) g_slist_free_1; alias g_slist_free_1 g_slist_free1; GSList* function(GSList* list, gpointer data) g_slist_append; GSList* function(GSList* list, gpointer data) g_slist_prepend; GSList* function(GSList* list, gpointer data, gint position) g_slist_insert; GSList* function(GSList* list, gpointer data, GCompareFunc func) g_slist_insert_sorted; GSList* function( GSList* list, gpointer data, GCompareDataFunc func, gpointer user_data) g_slist_insert_sorted_with_data; GSList* function(GSList* slist, GSList* sibling, gpointer data) g_slist_insert_before; GSList* function(GSList* list1, GSList* list2) g_slist_concat; GSList* function(GSList* list, gconstpointer data) g_slist_remove; GSList* function(GSList* list, gconstpointer data) g_slist_remove_all; GSList* function(GSList* list, GSList* link_) g_slist_remove_link; GSList* function(GSList* list, GSList* link_) g_slist_delete_link; GSList* function(GSList* list) g_slist_reverse; GSList* function(GSList* list) g_slist_copy; GSList* function(GSList* list, guint n) g_slist_nth; GSList* function(GSList* list, gconstpointer data) g_slist_find; GSList* function( GSList* list, gconstpointer data, GCompareFunc func) g_slist_find_custom; gint function(GSList* list, GSList* llink) g_slist_position; gint function(GSList* list, gconstpointer data) g_slist_index; GSList* function(GSList* list) g_slist_last; guint function(GSList* list) g_slist_length; void function(GSList* list, GFunc func, gpointer user_data) g_slist_foreach; GSList* function(GSList* list, GCompareFunc compare_func) g_slist_sort; GSList* function(GSList* list, GCompareDataFunc compare_func, gpointer user_data) g_slist_sort_with_data; gpointer function(GSList* list, guint n) g_slist_nth_data; GSList* g_slist_next(GSList* slist) { return slist ? slist.next : null; } //}}} //{{{ gmem gpointer function(gsize n_bytes) g_malloc; gpointer function(gsize n_bytes) g_malloc0; gpointer function(gpointer mem, gsize n_bytes) g_realloc; void function(gpointer mem) g_free; gpointer function(gsize n_bytes) g_try_malloc; gpointer function(gsize n_bytes) g_try_malloc0; gpointer function(gpointer mem, gsize n_bytes) g_try_realloc; //}}} static this() { auto lib = SharedLib.load("libglib-2.0.so.0"); //{{{ gtype //g_type_fundamental = cast(typeof(g_type_fundamental))lib.getSymbol("g_type_fundamental"); //g_type_test_flags = cast(typeof(g_type_test_flags))lib.getSymbol("g_type_test_flags"); //}}} //{{{ gquark g_quark_try_string = cast(typeof(g_quark_try_string))lib.getSymbol("g_quark_try_string"); g_quark_from_static_string = cast(typeof(g_quark_from_static_string))lib.getSymbol("g_quark_from_static_string"); g_quark_from_string = cast(typeof(g_quark_from_string))lib.getSymbol("g_quark_from_string"); g_quark_to_string = cast(typeof(g_quark_to_string))lib.getSymbol("g_quark_to_string"); g_intern_string = cast(typeof(g_intern_string))lib.getSymbol("g_intern_string"); g_intern_static_string = cast(typeof(g_intern_static_string))lib.getSymbol("g_intern_static_string"); //}}} //{{{ gerror g_error_new = cast(typeof(g_error_new))lib.getSymbol("g_error_new"); g_error_new_literal = cast(typeof(g_error_new_literal))lib.getSymbol("g_error_new_literal"); g_error_free = cast(typeof(g_error_free))lib.getSymbol("g_error_free"); g_error_copy = cast(typeof(g_error_copy))lib.getSymbol("g_error_copy"); g_error_matches = cast(typeof(g_error_matches))lib.getSymbol("g_error_matches"); g_set_error = cast(typeof(g_set_error))lib.getSymbol("g_set_error"); //g_set_error_literal = cast(typeof(g_set_error_literal))lib.getSymbol("g_set_error_literal"); g_propagate_error = cast(typeof(g_propagate_error))lib.getSymbol("g_propagate_error"); g_clear_error = cast(typeof(g_clear_error))lib.getSymbol("g_clear_error"); //g_prefix_error = cast(typeof(g_prefix_error))lib.getSymbol("g_prefix_error"); //g_propagate_prefixed_error = cast(typeof(g_propagate_prefixed_error))lib.getSymbol("g_propagate_prefixed_error"); //}}} //{{{ gslist g_slist_alloc = cast(typeof(g_slist_alloc))lib.getSymbol("g_slist_alloc"); g_slist_free = cast(typeof(g_slist_free))lib.getSymbol("g_slist_free"); g_slist_free_1 = cast(typeof(g_slist_free_1))lib.getSymbol("g_slist_free_1"); g_slist_append = cast(typeof(g_slist_append))lib.getSymbol("g_slist_append"); g_slist_prepend = cast(typeof(g_slist_prepend))lib.getSymbol("g_slist_prepend"); g_slist_insert = cast(typeof(g_slist_insert))lib.getSymbol("g_slist_insert"); g_slist_insert_sorted = cast(typeof(g_slist_insert_sorted))lib.getSymbol("g_slist_insert_sorted"); g_slist_insert_sorted_with_data = cast(typeof(g_slist_insert_sorted_with_data))lib.getSymbol("g_slist_insert_sorted_with_data"); g_slist_insert_before = cast(typeof(g_slist_insert_before))lib.getSymbol("g_slist_insert_before"); g_slist_concat = cast(typeof(g_slist_concat))lib.getSymbol("g_slist_concat"); g_slist_remove = cast(typeof(g_slist_remove))lib.getSymbol("g_slist_remove"); g_slist_remove_all = cast(typeof(g_slist_remove_all))lib.getSymbol("g_slist_remove_all"); g_slist_remove_link = cast(typeof(g_slist_remove_link))lib.getSymbol("g_slist_remove_link"); g_slist_delete_link = cast(typeof(g_slist_delete_link))lib.getSymbol("g_slist_delete_link"); g_slist_reverse = cast(typeof(g_slist_reverse))lib.getSymbol("g_slist_reverse"); g_slist_copy = cast(typeof(g_slist_copy))lib.getSymbol("g_slist_copy"); g_slist_nth = cast(typeof(g_slist_nth))lib.getSymbol("g_slist_nth"); g_slist_find = cast(typeof(g_slist_find))lib.getSymbol("g_slist_find"); g_slist_find_custom = cast(typeof(g_slist_find_custom))lib.getSymbol("g_slist_find_custom"); g_slist_position = cast(typeof(g_slist_position))lib.getSymbol("g_slist_position"); g_slist_index = cast(typeof(g_slist_index))lib.getSymbol("g_slist_index"); g_slist_last = cast(typeof(g_slist_last))lib.getSymbol("g_slist_last"); g_slist_length = cast(typeof(g_slist_length))lib.getSymbol("g_slist_length"); g_slist_foreach = cast(typeof(g_slist_foreach))lib.getSymbol("g_slist_foreach"); g_slist_sort = cast(typeof(g_slist_sort))lib.getSymbol("g_slist_sort"); g_slist_sort_with_data = cast(typeof(g_slist_sort_with_data))lib.getSymbol("g_slist_sort_with_data"); g_slist_nth_data = cast(typeof(g_slist_nth_data))lib.getSymbol("g_slist_nth_data"); //}}} //{{{ gmem g_malloc = cast(typeof(g_malloc))lib.getSymbol("g_malloc"); g_malloc0 = cast(typeof(g_malloc0))lib.getSymbol("g_malloc0"); g_realloc = cast(typeof(g_realloc))lib.getSymbol("g_realloc"); g_free = cast(typeof(g_free))lib.getSymbol("g_free"); g_try_malloc = cast(typeof(g_try_malloc))lib.getSymbol("g_try_malloc"); g_try_malloc0 = cast(typeof(g_try_malloc0))lib.getSymbol("g_try_malloc0"); g_try_realloc = cast(typeof(g_try_realloc))lib.getSymbol("g_try_realloc"); //}}} }