Core:Made attributes for maps settable
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 25 Oct 2009 18:22:57 +0000 (18:22 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 25 Oct 2009 18:22:57 +0000 (18:22 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit@2690 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/map.c
navit/map.h
navit/mapset.c
navit/mapset.h

index ea6aace..b7b2b7b 100644 (file)
@@ -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;
 }
index b43313b..dda18e1 100644 (file)
@@ -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);
+
 };
 
 /**
index e1a8f61..ba5560b 100644 (file)
@@ -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)
 {
index 0e19010..21d5b2d 100644 (file)
@@ -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
-