summaryrefslogtreecommitdiff
path: root/navit
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-07-01 19:03:50 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-07-01 19:03:50 +0000
commitbaeb93443290d63fceaabaa5b4ebcfc0dd80fb05 (patch)
treed7c5123c87e035af00de49a5b18670e6ad66a867 /navit
parent93ddd6bb74eea5358147eee1e4c88297883c2daa (diff)
downloadnavit-baeb93443290d63fceaabaa5b4ebcfc0dd80fb05.tar.gz
Add:Core:Better flags display
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@3467 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit')
-rw-r--r--navit/attr.c41
-rw-r--r--navit/attr.h5
-rw-r--r--navit/item.c5
3 files changed, 44 insertions, 7 deletions
diff --git a/navit/attr.c b/navit/attr.c
index 750235973..841e30bde 100644
--- a/navit/attr.c
+++ b/navit/attr.c
@@ -214,6 +214,43 @@ attr_new_from_text(const char *name, const char *value)
return ret;
}
+static char *
+flags_to_text(int flags)
+{
+ char *ret=NULL;
+ if (flags & AF_ONEWAY) ret=g_strconcat_printf(ret,"%sAF_ONEWAY",ret?"|":"");
+ if (flags & AF_ONEWAYREV) ret=g_strconcat_printf(ret,"%sAF_ONEWAYREV",ret?"|":"");
+ if (flags & AF_SEGMENTED) ret=g_strconcat_printf(ret,"%sAF_SEGMENTED",ret?"|":"");
+ if (flags & AF_ROUNDABOUT) ret=g_strconcat_printf(ret,"%sAF_ROUNDABOUT",ret?"|":"");
+ if (flags & AF_ROUNDABOUT_VALID) ret=g_strconcat_printf(ret,"%sAF_ROUNDABOUT_VALID",ret?"|":"");
+ if (flags & AF_ONEWAY_EXCEPTION) ret=g_strconcat_printf(ret,"%sAF_ONEWAY_EXCEPTION",ret?"|":"");
+ if (flags & AF_SPEED_LIMIT) ret=g_strconcat_printf(ret,"%sAF_SPEED_LIMIT",ret?"|":"");
+ if (flags & AF_RESERVED1) ret=g_strconcat_printf(ret,"%sAF_RESERVED1",ret?"|":"");
+ if (flags & AF_SIZE_OR_WEIGHT_LIMIT) ret=g_strconcat_printf(ret,"%sAF_SIZE_OR_WEIGHT_LIMIT",ret?"|":"");
+ if (flags & AF_THROUGH_TRAFFIC_LIMIT) ret=g_strconcat_printf(ret,"%sAF_THROUGH_TRAFFIC_LIMIT",ret?"|":"");
+ if (flags & AF_TOLL) ret=g_strconcat_printf(ret,"%sAF_TOLL",ret?"|":"");
+ if (flags & AF_SEASONAL) ret=g_strconcat_printf(ret,"%sAF_SEASONAL",ret?"|":"");
+ if (flags & AF_UNPAVED) ret=g_strconcat_printf(ret,"%sAF_UNPAVED",ret?"|":"");
+ if (flags & AF_DANGEROUS_GOODS) ret=g_strconcat_printf(ret,"%sAF_DANGEROUS_GOODS",ret?"|":"");
+ if ((flags & AF_ALL) == AF_ALL)
+ return g_strconcat_printf(ret,"%sAF_ALL",ret?"|":"");
+ if ((flags & AF_ALL) == AF_MOTORIZED_FAST)
+ return g_strconcat_printf(ret,"%sAF_MOTORIZED_FAST",ret?"|":"");
+ if (flags & AF_EMERGENCY_VEHICLES) ret=g_strconcat_printf(ret,"%sAF_EMERGENCY_VEHICLES",ret?"|":"");
+ if (flags & AF_TRANSPORT_TRUCK) ret=g_strconcat_printf(ret,"%sAF_TRANSPORT_TRUCK",ret?"|":"");
+ if (flags & AF_DELIVERY_TRUCK) ret=g_strconcat_printf(ret,"%sAF_DELIVERY_TRUCK",ret?"|":"");
+ if (flags & AF_PUBLIC_BUS) ret=g_strconcat_printf(ret,"%sAF_PUBLIC_BUS",ret?"|":"");
+ if (flags & AF_TAXI) ret=g_strconcat_printf(ret,"%sAF_TAXI",ret?"|":"");
+ if (flags & AF_HIGH_OCCUPANCY_CAR) ret=g_strconcat_printf(ret,"%sAF_HIGH_OCCUPANCY_CAR",ret?"|":"");
+ if (flags & AF_CAR) ret=g_strconcat_printf(ret,"%sAF_CAR",ret?"|":"");
+ if (flags & AF_MOTORCYCLE) ret=g_strconcat_printf(ret,"%sAF_MOTORCYCLE",ret?"|":"");
+ if (flags & AF_MOPED) ret=g_strconcat_printf(ret,"%sAF_MOPED",ret?"|":"");
+ if (flags & AF_HORSE) ret=g_strconcat_printf(ret,"%sAF_HORSE",ret?"|":"");
+ if (flags & AF_BIKE) ret=g_strconcat_printf(ret,"%sAF_BIKE",ret?"|":"");
+ if (flags & AF_PEDESTRIAN) ret=g_strconcat_printf(ret,"%sAF_PEDESTRIAN",ret?"|":"");
+ return ret;
+}
+
char *
attr_to_text(struct attr *attr, struct map *map, int pretty)
{
@@ -245,8 +282,8 @@ attr_to_text(struct attr *attr, struct map *map, int pretty)
ret=g_strdup(attr->u.str);
return ret;
}
- if (type == attr_flags)
- return g_strdup_printf("0x%x", attr->u.num);
+ if (type == attr_flags || type == attr_through_traffic_flags)
+ return flags_to_text(attr->u.num);
if (type >= attr_type_int_begin && type <= attr_type_int_end)
return g_strdup_printf("%d", attr->u.num);
if (type >= attr_type_int64_begin && type <= attr_type_int64_end)
diff --git a/navit/attr.h b/navit/attr.h
index fb65ee82c..45b63595a 100644
--- a/navit/attr.h
+++ b/navit/attr.h
@@ -65,6 +65,11 @@ enum attr_type {
#define AF_BIKE (1<<30)
#define AF_PEDESTRIAN (1<<31)
+#define AF_PBH (AF_PEDESTRIAN|AF_BIKE|AF_HORSE)
+#define AF_MOTORIZED_FAST (AF_MOTORCYCLE|AF_CAR|AF_HIGH_OCCUPANCY_CAR|AF_TAXI|AF_PUBLIC_BUS|AF_DELIVERY_TRUCK|AF_TRANSPORT_TRUCK|AF_EMERGENCY_VEHICLES)
+#define AF_ALL (AF_PBH|AF_MOPED|AF_MOTORIZED_FAST)
+
+
#define AF_DG_ANY (1<<0)
#define AF_DG_WATER_HARMFUL (1<<1)
#define AF_DG_EXPLOSIVE (1<<2)
diff --git a/navit/item.c b/navit/item.c
index 880cb9df4..649a49478 100644
--- a/navit/item.c
+++ b/navit/item.c
@@ -33,11 +33,6 @@ struct item_name {
struct item_range item_range_all = { type_none, type_last };
-#define AF_PBH (AF_PEDESTRIAN|AF_BIKE|AF_HORSE)
-#define AF_MOTORIZED_FAST (AF_MOTORCYCLE|AF_CAR|AF_HIGH_OCCUPANCY_CAR|AF_TAXI|AF_PUBLIC_BUS|AF_DELIVERY_TRUCK|AF_TRANSPORT_TRUCK|AF_EMERGENCY_VEHICLES)
-#define AF_ALL (AF_PBH|AF_MOPED|AF_MOTORIZED_FAST)
-
-
struct default_flags {
enum item_type type;
int flags;