diff options
author | Frederic Peters <fpeters@entrouvert.com> | 2004-11-29 14:07:47 +0000 |
---|---|---|
committer | Frederic Peters <fpeters@entrouvert.com> | 2004-11-29 14:07:47 +0000 |
commit | ae1bbcf346aff38cad0f4c913135c7486db22544 (patch) | |
tree | 38a35c50e53514bf19612f3aa6da6f5c53adc4cd | |
parent | 5c803605305688e5e1d7d1ba6cef8ec320c32720 (diff) | |
download | lasso-ae1bbcf346aff38cad0f4c913135c7486db22544.tar.gz lasso-ae1bbcf346aff38cad0f4c913135c7486db22544.tar.xz lasso-ae1bbcf346aff38cad0f4c913135c7486db22544.zip |
map server->providers to a kind of list (should be dict)
-rw-r--r-- | swig/Lasso.i | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/swig/Lasso.i b/swig/Lasso.i index ba15be84..478a56b3 100644 --- a/swig/Lasso.i +++ b/swig/Lasso.i @@ -966,23 +966,33 @@ gchar *LassoProvider_providerId_get(LassoProvider *self) { * Providers ***********************************************************************/ +%{ +static void +add_provider(gchar *key, LassoProvider *provider, LassoProvider **providers) +{ + /* add provider at the end of providers */ + int i=0; + while (providers[i]) i++; + providers[i] = provider; +} +%} #ifndef SWIGPHP4 %rename(Providers) LassoProviders; #endif %nodefault LassoProviders; %{ -typedef GPtrArray LassoProviders; +typedef GHashTable LassoProviders; %} typedef struct { %extend { /* Methods */ - GPtrArray *cast() { + GHashTable *cast() { return self; } - static LassoProviders *frompointer(GPtrArray *providers) { + static LassoProviders *frompointer(GHashTable *providers) { return (LassoProviders *) providers; } @@ -990,14 +1000,21 @@ typedef struct { %rename(__getitem__) getItem; #endif LassoProvider *getItem(int index) { - return g_ptr_array_index(self, index); + LassoProvider **providers; + LassoProvider *item; + int l = g_hash_table_size(self); + providers = g_malloc0(sizeof(LassoProvider*) * (l+1)); + g_hash_table_foreach(self, (GHFunc)add_provider, providers); + item = providers[index]; + g_free(providers); + return item; } #if defined(SWIGPYTHON) %rename(__len__) length; #endif gint length() { - return self->len; + return g_hash_table_size(self); } } } LassoProviders; @@ -1152,7 +1169,7 @@ gchar *LassoServer_providerId_get(LassoServer *self) { /* providers */ #define LassoServer_get_providers LassoServer_providers_get LassoProviders *LassoServer_providers_get(LassoServer *self) { - return NULL; /* XXX */ + return self->providers; } /* Constructors, destructors & static methods implementations */ |