navit  0.5.1-trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Groups
attr.h
Go to the documentation of this file.
1 
20 #ifndef NAVIT_ATTR_H
21 #define NAVIT_ATTR_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #include "projection.h"
28 
29 enum item_type;
30 
34 enum attr_type {
35 #define ATTR2(x,y) attr_##y=x,
36 #define ATTR(x) attr_##x,
37 
38 /* Special macro for unused attribute types. Creates a placeholder entry
39  * in the enum so the following values do not change. */
40 #define ATTR_UNUSED ATTR_UNUSED_L(__LINE__)
41 #define ATTR_UNUSED_L(x) ATTR_UNUSED_WITH_LINE_NUMBER(x)
42 #define ATTR_UNUSED_WITH_LINE_NUMBER(x) ATTR_UNUSED_##x,
43 
44 #include "attr_def.h"
45 
46 #undef ATTR_UNUSED_WITH_LINE_NUMBER
47 #undef ATTR_UNUSED_L
48 #undef ATTR_UNUSED
49 
50 #undef ATTR2
51 #undef ATTR
52 };
53 
57 };
58 
59 #define AF_ONEWAY (1<<0)
60 #define AF_ONEWAYREV (1<<1)
61 #define AF_NOPASS (AF_ONEWAY|AF_ONEWAYREV)
62 #define AF_ONEWAYMASK (AF_ONEWAY|AF_ONEWAYREV)
63 #define AF_SEGMENTED (1<<2)
64 #define AF_ROUNDABOUT (1<<3)
65 #define AF_ROUNDABOUT_VALID (1<<4)
66 #define AF_ONEWAY_EXCEPTION (1<<5)
67 #define AF_SPEED_LIMIT (1<<6)
68 #define AF_RESERVED1 (1<<7)
69 #define AF_SIZE_OR_WEIGHT_LIMIT (1<<8)
70 #define AF_THROUGH_TRAFFIC_LIMIT (1<<9)
71 #define AF_TOLL (1<<10)
72 #define AF_SEASONAL (1<<11)
73 #define AF_UNPAVED (1<<12)
74 #define AF_FORD (1<<13)
75 #define AF_UNDERGROUND (1<<14)
76 #define AF_HIGH_OCCUPANCY_CAR_ONLY (1<<18)
77 #define AF_DANGEROUS_GOODS (1<<19)
78 #define AF_EMERGENCY_VEHICLES (1<<20)
79 #define AF_TRANSPORT_TRUCK (1<<21)
80 #define AF_DELIVERY_TRUCK (1<<22)
81 #define AF_PUBLIC_BUS (1<<23)
82 #define AF_TAXI (1<<24)
83 #define AF_HIGH_OCCUPANCY_CAR (1<<25)
84 #define AF_CAR (1<<26)
85 #define AF_MOTORCYCLE (1<<27)
86 #define AF_MOPED (1<<28)
87 #define AF_HORSE (1<<29)
88 #define AF_BIKE (1<<30)
89 #define AF_PEDESTRIAN (1<<31)
90 
91 #define AF_PBH (AF_PEDESTRIAN|AF_BIKE|AF_HORSE)
92 #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)
93 #define AF_ALL (AF_PBH|AF_MOPED|AF_MOTORIZED_FAST)
94 
95 
96 #define AF_DG_ANY (1<<0)
97 #define AF_DG_WATER_HARMFUL (1<<1)
98 #define AF_DG_EXPLOSIVE (1<<2)
99 #define AF_DG_FLAMMABLE (1<<3)
100 
101 /*
102  * Values for attributes that could carry relative values.
103  * Some attributes allow both absolute and relative values. The value for these
104  * attributes is stored as an int. Absolute values are stored as-is, relative
105  * values are stored shifted by adding ATTR_REL_RELSHIFT.
106  */
108 #define ATTR_REL_MINABS -0x40000000
109 
110 #define ATTR_REL_MAXABS 0x40000000
111 
112 #define ATTR_REL_MINREL -0x1FFFFFFF
113 
114 #define ATTR_REL_MAXREL 0x20000000
115 
118 #define ATTR_REL_RELSHIFT 0x60000000
119 
135 };
136 
137 #define ATTR_IS_INT(x) ((x) >= attr_type_int_begin && (x) <= attr_type_int_end)
138 #define ATTR_IS_DOUBLE(x) ((x) >= attr_type_double_begin && (x) <= attr_type_double_end)
139 #define ATTR_IS_STRING(x) ((x) >= attr_type_string_begin && (x) <= attr_type_string_end)
140 #define ATTR_IS_OBJECT(x) ((x) >= attr_type_object_begin && (x) <= attr_type_object_end)
141 #define ATTR_IS_ITEM(x) ((x) >= attr_type_item_begin && (x) <= attr_type_item_end)
142 #define ATTR_IS_COORD_GEO(x) ((x) >= attr_type_coord_geo_begin && (x) <= attr_type_coord_geo_end)
143 #define ATTR_IS_NUMERIC(x) (ATTR_IS_INT(x) || ATTR_IS_DOUBLE(x))
144 #define ATTR_IS_COLOR(x) ((x) >= attr_type_color_begin && (x) <= attr_type_color_end)
145 #define ATTR_IS_PCOORD(x) ((x) >= attr_type_pcoord_begin && (x) <= attr_type_pcoord_end)
146 #define ATTR_IS_COORD(x) ((x) >= attr_type_coord_begin && (x) <= attr_type_coord_end)
147 #define ATTR_IS_GROUP(x) ((x) >= attr_type_group_begin && (x) <= attr_type_group_end)
148 
149 #define ATTR_INT(x,y) ((struct attr){attr_##x,{.num=y}})
150 #define ATTR_OBJECT(x,y) ((struct attr){attr_##x,{.navit=y}})
151 
152 struct range {
153  short min, max;
154 };
155 
156 struct attr {
158  union {
159  char *str;
160  void *data;
161  long num;
162  struct item *item;
165  double * numd;
166  struct color *color;
168  struct navit *navit;
171  struct vehicle *vehicle;
172  struct layout *layout;
173  struct layer *layer;
174  struct map *map;
175  struct mapset *mapset;
176  struct log *log;
177  struct route *route;
179  struct coord *coord;
180  struct pcoord *pcoord;
181  struct gui *gui;
184  struct itemgra *itemgra;
185  struct plugin *plugin;
186  struct plugins *plugins;
187  struct polygon *polygon;
189  struct circle *circle;
190  struct text *text;
191  struct icon *icon;
192  struct image *image;
193  struct arrows *arrows;
194  struct element *element;
195  struct speech *speech;
196  struct cursor *cursor;
202  struct config *config;
203  struct osd *osd;
204  struct range range;
206  int *dash;
207  enum item_type *item_types;
209  long long *num64;
210  struct attr *attrs;
211  } u;
212 };
213 
214 struct attr_iter;
215 /* prototypes */
216 void attr_create_hash(void);
217 void attr_destroy_hash(void);
218 enum attr_type attr_from_name(const char *name);
219 char *attr_to_name(enum attr_type attr);
220 struct attr *attr_new_from_text(const char *name, const char *value);
221 char *attr_to_text_ext(struct attr *attr, char *sep, enum attr_format fmt, enum attr_format def_fmt, struct map *map);
222 char *attr_to_text(struct attr *attr, struct map *map, int pretty);
223 struct attr *attr_search(struct attr **attrs, struct attr *last, enum attr_type attr);
224 int attr_generic_get_attr(struct attr **attrs, struct attr **def_attrs, enum attr_type type, struct attr *attr, struct attr_iter *iter);
225 struct attr **attr_generic_set_attr(struct attr **attrs, struct attr *attr);
226 struct attr **attr_generic_add_attr(struct attr **attrs, struct attr *attr);
227 struct attr **attr_generic_add_attr_list(struct attr **attrs, struct attr **add);
228 struct attr **attr_generic_prepend_attr(struct attr **attrs, struct attr *attr);
229 struct attr **attr_generic_remove_attr(struct attr **attrs, struct attr *attr);
231 int attr_data_size(struct attr *attr);
232 void *attr_data_get(struct attr *attr);
233 void attr_data_set(struct attr *attr, void *data);
234 void attr_data_set_le(struct attr *attr, void *data);
235 void attr_free_content(struct attr *attr);
236 void attr_free(struct attr *attr);
237 void attr_dup_content(struct attr *src, struct attr *dst);
238 struct attr *attr_dup(struct attr *attr);
239 void attr_list_free(struct attr **attrs);
240 struct attr **attr_list_dup(struct attr **attrs);
241 struct attr **attr_list_append(struct attr **attrs, struct attr *attr);
242 int attr_from_line(char *line, char *name, int *pos, char *val_ret, char *name_ret);
244 int attr_types_contains_default(enum attr_type *types, enum attr_type type, int deflt);
245 int attr_rel2real(int attrval, int whole, int treat_neg_as_rel);
246 /* end of prototypes */
247 #ifdef __cplusplus
248 }
249 #endif
250 
251 #endif
Definition: navigation.c:161
Definition: speech.c:28
attr_type
Definition: attr.h:34
struct polyline * polyline
Definition: attr.h:188
enum projection projection
Definition: attr.h:164
int attr_data_size(struct attr *attr)
Definition: attr.c:751
unsigned char types
Definition: garmin_img.c:522
struct tracking * tracking
Definition: attr.h:183
char * attr_to_text_ext(struct attr *attr, char *sep, enum attr_format fmt, enum attr_format def_fmt, struct map *map)
Converts attribute data to human-readable text.
Definition: attr.c:374
struct speech * speech
Definition: attr.h:195
enum attr_type * attr_types
Definition: attr.h:208
struct mapset * mapset
Definition: attr.h:175
Definition: config_.c:34
struct plugins * plugins
Definition: attr.h:186
struct coord_geo * coord_geo
Definition: attr.h:167
tuple iter
Definition: eval.py:8
struct gui * gui
Definition: attr.h:181
Attribute definitions.
short max
Definition: attr.h:153
attr_format
Definition: attr.h:54
struct circle * circle
Definition: attr.h:189
struct icon * icon
Definition: attr.h:191
Definition: graphics.c:1352
Definition: item.h:99
Definition: color.h:23
struct displaylist * displaylist
Definition: attr.h:197
A mapset.
Definition: mapset.c:44
struct image * image
Definition: attr.h:192
void attr_list_free(struct attr **attrs)
Definition: attr.c:893
enum item_type * item_types
Definition: attr.h:207
Definition: attr.h:123
Definition: gui.c:30
struct pcoord * pcoord
Definition: attr.h:180
Definition: log.c:57
struct attr ** attr_generic_prepend_attr(struct attr **attrs, struct attr *attr)
Definition: attr.c:675
struct attr ** attr_generic_remove_attr(struct attr **attrs, struct attr *attr)
Definition: attr.c:693
struct plugin * plugin
Definition: attr.h:185
item_type
Definition: item.h:29
void attr_data_set(struct attr *attr, void *data)
Definition: attr.c:801
Definition: vehicle.c:58
void * attr_data_get(struct attr *attr)
Definition: attr.c:790
Definition: roadprofile.h:24
Definition: vehicleprofile.h:33
struct graphics * graphics
Definition: attr.h:182
struct element * element
Definition: attr.h:194
Definition: track.c:85
struct log * log
Definition: attr.h:176
struct config * config
Definition: attr.h:202
Definition: plugin.c:139
static GValue value
Definition: datawindow.c:42
struct item * item
Definition: attr.h:162
void attr_create_hash(void)
Definition: attr.c:71
struct navit_object * navit_object
Definition: attr.h:205
char * attr_to_name(enum attr_type attr)
Converts an attr_type to a string.
Definition: attr.c:123
void attr_dup_content(struct attr *src, struct attr *dst)
Definition: attr.c:858
Definition: layout.h:31
short min
Definition: attr.h:153
A complete route.
Definition: route.c:248
Definition: bookmarks.c:54
struct navit * navit
Definition: attr.h:168
void attr_data_set_le(struct attr *attr, void *data)
Definition: attr.c:811
struct vehicleprofile * vehicleprofile
Definition: attr.h:199
Definition: plugin.c:150
void * data
Definition: attr.h:160
struct attr ** attr_list_dup(struct attr **attrs)
Definition: attr.c:903
attr_position_valid
Definition: attr.h:121
int attr_rel2real(int attrval, int whole, int treat_neg_as_rel)
Derive absolute value from relative attribute, given value of the whole range.
Definition: attr.c:1022
projection
Definition: projection.h:23
struct attr ** attr_generic_add_attr_list(struct attr **attrs, struct attr **add)
Definition: attr.c:665
graphics object A graphics object serves as the target for drawing operations. It encapsulates variou...
Definition: graphics.c:70
Definition: config_.c:48
Definition: layout.h:87
union attr::@0 u
struct color * color
Definition: attr.h:166
Definition: attr.h:134
long num
Definition: attr.h:161
struct polygon * polygon
Definition: attr.h:187
Definition: callback.c:36
Definition: attr.h:152
char data
Definition: garmin_img.c:354
Definition: attr.h:156
struct coord * coord
Definition: attr.h:179
enum attr_type type
Definition: attr.h:157
struct callback_list * callback_list
Definition: attr.h:170
struct route * route
Definition: attr.h:177
Definition: callback.c:26
Definition: layout.h:71
struct roadprofile * roadprofile
Definition: attr.h:200
void attr_free_content(struct attr *attr)
Definition: attr.c:844
int * dash
Definition: attr.h:206
Definition: attr.h:122
void attr_free(struct attr *attr)
Definition: attr.c:851
enum attr_type attr_type_begin(enum attr_type type)
Definition: attr.c:719
char * str
Definition: attr.h:159
Holds information about a map.
Definition: map.c:60
long long * num64
Definition: attr.h:209
struct attr * attr_new_from_text(const char *name, const char *value)
Creates an attribute from text information.
Definition: attr.c:145
Definition: attr.h:55
struct text * text
Definition: attr.h:190
struct osd * osd
Definition: attr.h:203
struct arrows * arrows
Definition: attr.h:193
Definition: osd.c:34
struct attr * attrs
Definition: attr.h:210
void attr_destroy_hash(void)
Definition: attr.c:81
double * numd
Definition: attr.h:165
struct attr ** attr_list_append(struct attr **attrs, struct attr *attr)
int attr_from_line(char *line, char *name, int *pos, char *val_ret, char *name_ret)
Definition: attr.c:920
struct layout * layout
Definition: attr.h:172
Definition: graphics.c:116
enum item_type item_type
Definition: attr.h:163
struct attr * attr_dup(struct attr *attr)
Definition: attr.c:885
tuple pos
Definition: startup.py:3
struct bookmarks * bookmarks
Definition: attr.h:201
enum attr_type attr_from_name(const char *name)
Converts a string to an attr_type.
Definition: attr.c:96
struct transformation * transformation
Definition: attr.h:198
struct vehicle * vehicle
Definition: attr.h:171
struct layer * layer
Definition: attr.h:173
char type[3]
Definition: garmin_img.c:130
Definition: coord.h:34
char name[0]
Definition: street.c:559
struct itemgra * itemgra
Definition: attr.h:184
struct map * map
Definition: attr.h:174
Definition: navit.c:111
Definition: coord.h:40
struct callback * callback
Definition: attr.h:169
int attr_types_contains_default(enum attr_type *types, enum attr_type type, int deflt)
Check if an enumeration of attribute types contains a specific attribute.
Definition: attr.c:1005
Definition: attr.h:56
struct attr * attr_search(struct attr **attrs, struct attr *last, enum attr_type attr)
Searches for an attribute of a given type.
Definition: attr.c:516
A WGS84 coordinate.
Definition: coord.h:85
struct cursor * cursor
Definition: attr.h:196
struct navigation * navigation
Definition: attr.h:178
The parameters needed to transform a map for display.
Definition: transform.c:64
struct attr ** attr_generic_set_attr(struct attr **attrs, struct attr *attr)
Generic set function.
Definition: attr.c:613
char * attr_to_text(struct attr *attr, struct map *map, int pretty)
Converts an attribute to a string that can be displayed.
Definition: attr.c:498
int attr_types_contains(enum attr_type *types, enum attr_type type)
Checks if an enumeration of attribute types contains a specific attribute.
Definition: attr.c:982
int attr_generic_get_attr(struct attr **attrs, struct attr **def_attrs, enum attr_type type, struct attr *attr, struct attr_iter *iter)
Generic get function.
Definition: attr.c:574
Definition: xmlconfig.h:120
struct attr ** attr_generic_add_attr(struct attr **attrs, struct attr *attr)
Generic add function.
Definition: attr.c:646
Definition: layout.h:77
Definition: layout.h:95