diff options
author | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-09-18 20:29:49 +0000 |
---|---|---|
committer | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-09-18 20:29:49 +0000 |
commit | ad1e977a2bb19bb4ddab881ad18381d2506a8b40 (patch) | |
tree | 763b1eadd7bd611e36b650b62fa0a987d528105d /swig/Lasso.i | |
parent | 60a65436a20263cbf00e41f284fef49142eae593 (diff) | |
download | lasso-ad1e977a2bb19bb4ddab881ad18381d2506a8b40.tar.gz lasso-ad1e977a2bb19bb4ddab881ad18381d2506a8b40.tar.xz lasso-ad1e977a2bb19bb4ddab881ad18381d2506a8b40.zip |
Added SWIG bindings for metadata, providers and providerIds.
Reworked PHP4 binding for Identity.providerIds => PHP API has changed.
Diffstat (limited to 'swig/Lasso.i')
-rw-r--r-- | swig/Lasso.i | 219 |
1 files changed, 196 insertions, 23 deletions
diff --git a/swig/Lasso.i b/swig/Lasso.i index d52e45e1..892f997a 100644 --- a/swig/Lasso.i +++ b/swig/Lasso.i @@ -191,6 +191,7 @@ SyntaxError = _lasso.SyntaxError #define gdouble double #define gldouble long double #define gpointer void* +#define GPtrArray void #define xmlChar char @@ -549,30 +550,92 @@ int get_exception_type(int errorCode) { %exception; %enddef + +/*********************************************************************** + * ProviderIds + ***********************************************************************/ + + +#ifndef SWIGPHP4 +%rename(ProviderIds) LassoProviderIds; +#endif +%nodefault LassoProviderIds; +%{ +typedef GPtrArray LassoProviderIds; +%} +typedef struct { + %extend { + /* Methods */ + + GPtrArray *cast() { + return self; + } + + static LassoProviderIds *frompointer(GPtrArray *providerIds) { + return (LassoProviderIds *) providerIds; + } + +#if defined(SWIGPYTHON) + %rename(__getitem__) getItem; +#endif + gchar *getItem(int index) { + return g_ptr_array_index(self, index); + } + +#if defined(SWIGPYTHON) + %rename(__len__) length; +#endif + gint length() { + return self->len; + } + } +} LassoProviderIds; + + /*********************************************************************** *********************************************************************** - * TypeMaps * + * Xml *********************************************************************** ***********************************************************************/ -#ifdef SWIGPHP4 -/* GPtrArray -> PHP Indexed Array used by Identity->providerIDs */ -%typemap(out) GPtrArray* { - int i; - zval *new_element; - - zend_printf("ici"); - array_init($result); - - for (i = 0; i < $1->len; i++) - { - MAKE_STD_ZVAL(new_element); - ZVAL_STRING(new_element, (char *) g_ptr_array_index($1, i), 1); - zend_hash_next_index_insert(HASH_OF($result), &new_element, sizeof(new_element), NULL); - zend_printf("ici"); - } + +/*********************************************************************** + * Node + ***********************************************************************/ + + +#ifndef SWIGPHP4 +%rename(Node) LassoNode; +#endif +typedef struct { + %extend { + /* Constructor, Destructor & Static Methods */ + + LassoNode(); + + ~LassoNode(); + + /* Methods */ + + %newobject dump; + gchar *dump(); + } +} LassoNode; + +%{ + +/* Constructors, destructors & static methods implementations */ + +#define new_LassoNode lasso_node_new +#define delete_LassoNode lasso_node_destroy + +/* Methods implementations */ + +gchar* LassoNode_dump(LassoNode *self) { + return lasso_node_export(LASSO_NODE(self)); } -#endif + +%} /*********************************************************************** @@ -824,6 +887,91 @@ typedef struct { /*********************************************************************** + * Provider + ***********************************************************************/ + + +#ifndef SWIGPHP4 +%rename(Provider) LassoProvider; +#endif +%nodefault LassoProvider; +typedef struct { + %extend { + /* Attributes */ + + %immutable metadata; + %newobject metadata; + LassoNode *metadata; + + %immutable providerId; + %newobject providerId_get; + gchar *providerId; + } +} LassoProvider; + +%{ + +/* Attributes implementations */ + +/* metadata */ +#define LassoProvider_get_metadata LassoProvider_metadata_get +LassoNode *LassoProvider_metadata_get(LassoProvider *self) { + /* FIXME: The lasso_node_copy is mandatory. Otherwise metadata is not a LassoNode. Is */ + /* it a bug? If we correct this don't forget to remove newobject above. */ + return lasso_node_copy(self->metadata); +} + +/* providerId */ +#define LassoProvider_get_providerId LassoProvider_providerId_get +gchar *LassoProvider_providerId_get(LassoProvider *self) { + return lasso_provider_get_providerID(self); +} + + %} + + +/*********************************************************************** + * Providers + ***********************************************************************/ + + +#ifndef SWIGPHP4 +%rename(Providers) LassoProviders; +#endif +%nodefault LassoProviders; +%{ +typedef GPtrArray LassoProviders; +%} +typedef struct { + %extend { + /* Methods */ + + GPtrArray *cast() { + return self; + } + + static LassoProviders *frompointer(GPtrArray *providers) { + return (LassoProviders *) providers; + } + +#if defined(SWIGPYTHON) + %rename(__getitem__) getItem; +#endif + LassoProvider *getItem(int index) { + return g_ptr_array_index(self, index); + } + +#if defined(SWIGPYTHON) + %rename(__len__) length; +#endif + gint length() { + return self->len; + } + } +} LassoProviders; + + +/*********************************************************************** * Request ***********************************************************************/ @@ -860,17 +1008,26 @@ typedef struct { * Server ***********************************************************************/ + #ifndef SWIGPHP4 %rename(Server) LassoServer; #endif - typedef struct { %extend { + /* Attributes inherited from LassoProvider */ + + %immutable metadata; + %newobject metadata; + LassoNode *metadata; + /* Attributes */ %immutable providerId; gchar *providerId; + %immutable providers; + LassoProviders *providers; + /* Constructor, destructor & static methods */ LassoServer(gchar *metadata = NULL, gchar *publicKey = NULL, @@ -896,6 +1053,16 @@ typedef struct { %{ +/* Attributes inherited from LassoProvider implementations */ + +/* metadata */ +#define LassoServer_get_metadata LassoServer_metadata_get +LassoNode *LassoServer_metadata_get(LassoServer *self) { + /* FIXME: The lasso_node_copy is mandatory. Otherwise metadata is not a LassoNode. Is */ + /* it a bug? If we correct this don't forget to remove newobject above. */ + return lasso_node_copy(LASSO_PROVIDER(self)->metadata); +} + /* Attributes implementations */ /* providerId */ @@ -904,6 +1071,12 @@ gchar *LassoServer_providerId_get(LassoServer *self) { return self->providerID; } +/* providers */ +#define LassoServer_get_providers LassoServer_providers_get +LassoProviders *LassoServer_providers_get(LassoServer *self) { + return self->providers; +} + /* Constructors, destructors & static methods implementations */ #define new_LassoServer lasso_server_new @@ -937,8 +1110,8 @@ typedef struct { %immutable isDirty; gboolean isDirty; - %immutable providerIDs; - GPtrArray* providerIDs; + %immutable providerIds; + LassoProviderIds *providerIds; /* Constructor, Destructor & Static Methods */ @@ -967,8 +1140,8 @@ gboolean LassoIdentity_isDirty_get(LassoIdentity *self) { } /* providerIDs */ -#define LassoIdentity_get_providerIDs LassoIdentity_providerIDs_get -GPtrArray* LassoIdentity_providerIDs_get(LassoIdentity *self) { +#define LassoIdentity_get_providerIds LassoIdentity_providerIds_get +LassoProviderIds *LassoIdentity_providerIds_get(LassoIdentity *self) { return self->providerIDs; } |