Champlain
view release on metacpan or search on metacpan
xs/ChamplainMapSourceFactory.xs view on Meta::CPAN
SV *value;
ChamplainMapSourceDesc desc = {0,};
if ((!data) || (!SvOK(data)) || (!SvRV(data)) || (SvTYPE(SvRV(data)) != SVt_PVHV)) {
croak("SvChamplainMapSourceDesc: value must be an hashref");
}
hash = (HV *) SvRV(data);
/* All keys are mandatory */
if (value = champlainperl_fetch_or_croak(hash, "id", 2)) {
desc.id = g_strdup(SvGChar(value));
}
if (value = champlainperl_fetch_or_croak(hash, "name", 4)) {
desc.name = g_strdup(SvGChar(value));
}
if (value = champlainperl_fetch_or_croak(hash, "license", 7)) {
desc.license = g_strdup(SvGChar(value));
}
if (value = champlainperl_fetch_or_croak(hash, "license_uri", 11)) {
desc.license_uri = g_strdup(SvGChar(value));
}
if (value = champlainperl_fetch_or_croak(hash, "min_zoom_level", 14)) {
desc.min_zoom_level = (gint) SvIV(value);
}
if (value = champlainperl_fetch_or_croak(hash, "max_zoom_level", 14)) {
desc.max_zoom_level = (gint) SvIV(value);
}
if (value = champlainperl_fetch_or_croak(hash, "projection", 10)) {
desc.projection = SvChamplainMapProjection(value);
}
if (value = champlainperl_fetch_or_croak(hash, "uri_format", 10)) {
desc.uri_format = g_strdup(SvGChar(value));
}
return g_memdup(&desc, sizeof(desc));
}
MODULE = Champlain::MapSourceFactory PACKAGE = Champlain::MapSourceFactory PREFIX = champlain_map_source_factory_
ChamplainMapSourceFactory*
champlain_map_source_factory_dup_default (class)
C_ARGS: /* No args */
void
champlain_map_source_factory_dup_list (ChamplainMapSourceFactory *factory)
PREINIT:
GSList *list = NULL;
GSList *item = NULL;
PPCODE:
list = champlain_map_source_factory_dup_list(factory);
for (item = list; item != NULL; item = item->next) {
ChamplainMapSourceDesc *desc = CHAMPLAIN_MAP_SOURCE_DESC(item->data);
XPUSHs(sv_2mortal(newSVChamplainMapSourceDesc(desc)));
}
g_slist_free(list);
ChamplainMapSource*
champlain_map_source_factory_create (ChamplainMapSourceFactory *factory, const gchar *id)
gboolean
champlain_map_source_factory_register (ChamplainMapSourceFactory *factory, SV *sv_desc, SV* sv_constructor, SV *sv_data=NULL)
PREINIT:
ChamplainMapSourceDesc *desc = NULL;
SV *sv = NULL;
GPerlCallback *callback = NULL;
CODE:
desc = champlainperl_SvChamplainMapSourceDesc(sv_desc);
callback = champlainperl_constructor_create(sv_constructor, sv_data);
RETVAL = champlain_map_source_factory_register(factory, desc, champlainperl_constructor, callback);
OUTPUT:
RETVAL
const gchar*
OSM_MAPNIK (class)
CODE:
RETVAL = CHAMPLAIN_MAP_SOURCE_OSM_MAPNIK;
OUTPUT:
RETVAL
const gchar*
OSM_OSMARENDER (class)
CODE:
RETVAL = CHAMPLAIN_MAP_SOURCE_OSM_OSMARENDER;
OUTPUT:
RETVAL
const gchar*
OSM_CYCLE_MAP (class)
CODE:
RETVAL = CHAMPLAIN_MAP_SOURCE_OSM_CYCLE_MAP;
OUTPUT:
RETVAL
const gchar*
OAM (class)
CODE:
( run in 1.213 second using v1.01-cache-2.11-cpan-71847e10f99 )