summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-10-25 18:22:57 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-10-25 18:22:57 +0000
commite0a92eaf3f551f83bd921ec02453f6319516ec64 (patch)
treed2cfefad00a8674a06ae88c4855a6732c296535e
parentde911d13ec8f13f7e00ee23e63aa6a59c738b751 (diff)
downloadnavit-e0a92eaf3f551f83bd921ec02453f6319516ec64.tar.gz
Core:Made attributes for maps settable
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@2690 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r--navit/map.c2
-rw-r--r--navit/map.h3
-rw-r--r--navit/mapset.c19
-rw-r--r--navit/mapset.h6
4 files changed, 28 insertions, 2 deletions
diff --git a/navit/map.c b/navit/map.c
index ea6aace72..b7b2b7b91 100644
--- a/navit/map.c
+++ b/navit/map.c
@@ -146,6 +146,8 @@ int
map_set_attr(struct map *this_, struct attr *attr)
{
this_->attrs=attr_generic_set_attr(this_->attrs, attr);
+ if (this_->meth.map_set_attr)
+ this_->meth.map_set_attr(this_->priv, attr);
callback_list_call_attr_2(this_->attr_cbl, attr->type, this_, attr);
return 1;
}
diff --git a/navit/map.h b/navit/map.h
index b43313b58..dda18e16c 100644
--- a/navit/map.h
+++ b/navit/map.h
@@ -75,6 +75,9 @@ struct map_methods {
void (*map_search_destroy)(struct map_search_priv *ms); /**< Function to destroy a map search struct */
struct item * (*map_search_get_item)(struct map_search_priv *ms); /**< Function to get the next item of a search on the map */
struct item * (*map_rect_create_item)(struct map_rect_priv *mr, enum item_type type); /**< Function to create a new item in the map */
+ int (*map_get_attr)(struct map_priv *priv, enum attr_type type, struct attr *attr);
+ int (*map_set_attr)(struct map_priv *priv, struct attr *attr);
+
};
/**
diff --git a/navit/mapset.c b/navit/mapset.c
index e1a8f61ea..ba5560b86 100644
--- a/navit/mapset.c
+++ b/navit/mapset.c
@@ -77,6 +77,25 @@ mapset_add_attr(struct mapset *ms, struct attr *attr)
}
}
+int
+mapset_get_attr(struct mapset *ms, enum attr_type type, struct attr *attr, struct attr_iter *iter)
+{
+ GList *map;
+ map=ms->maps;
+ switch (type) {
+ case attr_map:
+ if (map) {
+ attr->u.map=map->data;
+ return 1;
+ }
+ break;
+ default:
+ break;
+ }
+ return 0;
+}
+
+
#if 0
static void mapset_maps_free(struct mapset *ms)
{
diff --git a/navit/mapset.h b/navit/mapset.h
index 0e19010bd..21d5b2d6e 100644
--- a/navit/mapset.h
+++ b/navit/mapset.h
@@ -21,7 +21,9 @@
#define NAVIT_MAPSET_H
/* prototypes */
+enum attr_type;
struct attr;
+struct attr_iter;
struct item;
struct map;
struct mapset;
@@ -29,6 +31,7 @@ struct mapset_handle;
struct mapset_search;
struct mapset *mapset_new(struct attr *parent, struct attr **attrs);
int mapset_add_attr(struct mapset *ms, struct attr *attr);
+int mapset_get_attr(struct mapset *ms, enum attr_type type, struct attr *attr, struct attr_iter *iter);
void mapset_destroy(struct mapset *ms);
struct mapset_handle *mapset_open(struct mapset *ms);
struct map *mapset_next(struct mapset_handle *msh, int active);
@@ -36,6 +39,5 @@ void mapset_close(struct mapset_handle *msh);
struct mapset_search *mapset_search_new(struct mapset *ms, struct item *item, struct attr *search_attr, int partial);
struct item *mapset_search_get_item(struct mapset_search *this);
void mapset_search_destroy(struct mapset_search *this);
-
+/* end of prototypes */
#endif
-