/*
* Copyright (c) 2015 Marcus Lundblad
*
* GNOME Maps is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* GNOME Maps is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with GNOME Maps; if not, see
*
* Author: Marcus Lundblad
*/
#ifndef __MAPS_OSM_OBJECT_H__
#define __MAPS_OSM_OBJECT_H__
#include
#include
#define MAPS_TYPE_OSMOBJECT maps_osm_object_get_type ()
G_DECLARE_DERIVABLE_TYPE(MapsOSMObject, maps_osm_object, MAPS, OSMOBJECT,
GObject)
typedef struct _MapsOSMObjectPrivate MapsOSMObjectPrivate;
struct _MapsOSMObjectClass
{
GObjectClass parent_class;
/* return the name of the distinguishing OSM XML tag (beneath ) */
const char * (* get_xml_tag_name) (void);
/* return hash table with XML attributes (key/values) specific for
the object (on the XML tag beneath ) */
GHashTable * (* get_xml_attributes) (const MapsOSMObject *object);
/* return a list of custom object-specific XML tags to attach,
can return NULL if there's no object-specific nodes */
xmlNodePtr (* get_xml_child_nodes) (const MapsOSMObject *object);
};
const char *maps_osm_object_get_tag (const MapsOSMObject *object,
const char *key);
void maps_osm_object_set_tag (MapsOSMObject *object, const char *key,
const char *value);
void maps_osm_object_delete_tag (MapsOSMObject *object, const char *key);
char *maps_osm_object_serialize (const MapsOSMObject *object);
const GHashTable *maps_osm_object_get_tags (const MapsOSMObject *object);
#endif //__MAPS_OSM_OBJECT_H__