]> err.no Git - libchamplain/commitdiff
Implement champlain_map_source_factory_register() (constructor callback is missing)
authorEmmanuel Rodriguez <emmanuel.rodriguez@gmail.com>
Sun, 10 May 2009 20:53:30 +0000 (22:53 +0200)
committerEmmanuel Rodriguez <emmanuel.rodriguez@gmail.com>
Sun, 10 May 2009 20:53:30 +0000 (22:53 +0200)
Fix the checks for the keys in SvChamplainMapSourceDesc().

bindings/perl/Champlain/xs/ChamplainMapSourceFactory.xs

index 5befcd217a361ef0f2aefc394fa1c96ba984b0cf..3b64c0b4875da5b211d72263debce1428c892d92 100644 (file)
@@ -56,8 +56,7 @@ SvChamplainMapSourceDesc (SV *data) {
         *   - filename
         */
        desc = g_new0(ChamplainMapSourceDesc, 1);
-       
-       if (! ((s = hv_fetch(hash, "id", 2, 0)) && SvOK(*s))) {
+       if ((s = hv_fetch(hash, "id", 2, 0)) && SvOK(*s)) {
                desc->id = SvGChar(*s);
        }
        else {
@@ -65,7 +64,7 @@ SvChamplainMapSourceDesc (SV *data) {
                croak("SvChamplainMapSourceDesc: requires the key: 'id'");
        }
        
-       if (! ((s = hv_fetch(hash, "name", 4, 0)) && SvOK(*s))) {
+       if ((s = hv_fetch(hash, "name", 4, 0)) && SvOK(*s)) {
                desc->name = SvGChar(*s);
        }
        else {
@@ -73,7 +72,7 @@ SvChamplainMapSourceDesc (SV *data) {
                croak("SvChamplainMapSourceDesc: requires the key: 'name'");
        }
        
-       if (! ((s = hv_fetch(hash, "license", 7, 0)) && SvOK(*s))) {
+       if ((s = hv_fetch(hash, "license", 7, 0)) && SvOK(*s)) {
                desc->license = SvGChar(*s);
        }
        else {
@@ -81,7 +80,7 @@ SvChamplainMapSourceDesc (SV *data) {
                croak("SvChamplainMapSourceDesc: requires the key: 'license'");
        }
        
-       if (! ((s = hv_fetch(hash, "license_uri", 11, 0)) && SvOK(*s))) {
+       if ((s = hv_fetch(hash, "license_uri", 11, 0)) && SvOK(*s)) {
                desc->license_uri = SvGChar(*s);
        }
        else {
@@ -89,7 +88,7 @@ SvChamplainMapSourceDesc (SV *data) {
                croak("SvChamplainMapSourceDesc: requires the key: 'license_uri'");
        }
        
-       if (! ((s = hv_fetch(hash, "min_zoom_level", 14, 0)) && SvOK(*s))) {
+       if ((s = hv_fetch(hash, "min_zoom_level", 14, 0)) && SvOK(*s)) {
                desc->min_zoom_level = (gint)SvIV(*s);
        }
        else {
@@ -97,7 +96,7 @@ SvChamplainMapSourceDesc (SV *data) {
                croak("SvChamplainMapSourceDesc: requires the key: 'min_zoom_level'");
        }
        
-       if (! ((s = hv_fetch(hash, "max_zoom_level", 14, 0)) && SvOK(*s))) {
+       if ((s = hv_fetch(hash, "max_zoom_level", 14, 0)) && SvOK(*s)) {
                desc->max_zoom_level = (gint)SvIV(*s);
        }
        else {
@@ -105,7 +104,7 @@ SvChamplainMapSourceDesc (SV *data) {
                croak("SvChamplainMapSourceDesc: requires the key: 'max_zoom_level'");
        }
        
-       if (! ((s = hv_fetch(hash, "projection", 10, 0)) && SvOK(*s))) {
+       if ((s = hv_fetch(hash, "projection", 10, 0)) && SvOK(*s)) {
                desc->projection = SvChamplainMapProjection(*s);
        }
        else {
@@ -146,8 +145,19 @@ ChamplainMapSource*
 champlain_map_source_factory_create (ChamplainMapSourceFactory *factory, const gchar *id)
 
 
-#gboolean
-#champlain_map_source_factory_register (ChamplainMapSourceFactory *factory, const gchar *id, ChamplainMapSourceConstructor callback)
+gboolean
+champlain_map_source_factory_register (ChamplainMapSourceFactory *factory, SV *data)
+       PREINIT:
+               ChamplainMapSourceDesc *desc = NULL;
+               SV *sv = NULL;
+       
+       CODE:
+               
+               desc = SvChamplainMapSourceDesc(data);
+               RETVAL = champlain_map_source_factory_register(factory, desc);
+
+       OUTPUT:
+               RETVAL
 
 
 const gchar*