summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhorwitz <horwitz@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-03-30 20:29:25 +0000
committerhorwitz <horwitz@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-03-30 20:29:25 +0000
commit7fb24ad63d5f29668287f7f69c8b7c6dd2c99a04 (patch)
treed2367121443c8c0f5f3e8a820c86244b6d81f5df
parent11475baa15a4fcefa61ad946c47241a95d636203 (diff)
downloadnavit-svn-7fb24ad63d5f29668287f7f69c8b7c6dd2c99a04.tar.gz
*Fix:Core:Add autogenerated navit_config.h to ignore list
*Fix:MG:Add missing commit comment. Fix alignment||Thanks Pini for the patch. git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit/navit@2176 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r--data.h9
-rw-r--r--map/mg/mg.h13
-rw-r--r--map/mg/street.c10
-rw-r--r--map/mg/town.c6
4 files changed, 27 insertions, 11 deletions
diff --git a/data.h b/data.h
index 97663e19..19ce0070 100644
--- a/data.h
+++ b/data.h
@@ -53,6 +53,15 @@ get_u24(unsigned char **p) {
static inline unsigned int
+get_u24_unal(unsigned char **p) {
+ unsigned long ret;
+ ret=get_u16_unal(p);
+ ret|=*((*p)++) << 16;
+ return ret;
+}
+
+
+static inline unsigned int
get_u32(unsigned char **p) {
unsigned long ret;
ret=*((unsigned int *)*p);
diff --git a/map/mg/mg.h b/map/mg/mg.h
index dd283b15..22270f99 100644
--- a/map/mg/mg.h
+++ b/map/mg/mg.h
@@ -151,6 +151,11 @@ struct street_name_numbers {
int tmp_len;
unsigned char *tmp_data;
};
+static inline void street_name_numbers_get_coord(struct street_name_numbers * str, struct coord * c) {
+ unsigned char *p=(unsigned char *)str->c;
+ c->x=get_u32_unal(&p);
+ c->y=get_u32_unal(&p);
+}
struct street_name_number {
int len;
@@ -240,10 +245,12 @@ struct block_priv {
};
struct block_offset {
- unsigned short offset;
- unsigned short block;
+/* unsigned short offset;
+ unsigned short block;*/
+ unsigned char p[4];
};
-
+static inline unsigned short block_offset_get_offset(struct block_offset * blk) { unsigned char *p = blk->p; return get_u16_unal(&p); }
+static inline unsigned short block_offset_get_block(struct block_offset * blk) { unsigned char *p = blk->p+2; return get_u16_unal(&p); }
struct tree_search_node {
struct tree_hdr *hdr;
diff --git a/map/mg/street.c b/map/mg/street.c
index e99413b9..6d7c565a 100644
--- a/map/mg/street.c
+++ b/map/mg/street.c
@@ -52,8 +52,8 @@ street_name_numbers_get(struct street_name_numbers *name_numbers, unsigned char
name_numbers->dist=get_u32_unal(p);
name_numbers->country=get_u32_unal(p);
name_numbers->c=coord_get(p);
- name_numbers->first=get_u24(p);
- name_numbers->last=get_u24(p);
+ name_numbers->first=get_u24_unal(p);
+ name_numbers->last=get_u24_unal(p);
name_numbers->segment_count=get_u32_unal(p);
name_numbers->segments=(struct street_name_segment *)(*p);
(*p)+=sizeof(struct street_name_segment)*name_numbers->segment_count;
@@ -71,8 +71,8 @@ street_name_number_get(struct street_name_number *name_number, unsigned char **p
name_number->len=get_u16_unal(p);
name_number->tag=get_u8(p);
name_number->c=coord_get(p);
- name_number->first=get_u24(p);
- name_number->last=get_u24(p);
+ name_number->first=get_u24_unal(p);
+ name_number->last=get_u24_unal(p);
name_number->segment=(struct street_name_segment *)p;
*p=start+name_number->len;
}
@@ -632,7 +632,7 @@ street_name_coord_get(void *priv_data, struct coord *c, int count)
dbg(1,"aux_data=%p\n", p);
if (count) {
street_name_numbers_get(&snns, &p);
- *c=*(snns.c);
+ street_name_numbers_get_coord(&snns, c);
return 1;
}
diff --git a/map/mg/town.c b/map/mg/town.c
index aedf34a0..e22b8d3a 100644
--- a/map/mg/town.c
+++ b/map/mg/town.c
@@ -275,9 +275,9 @@ town_search_get_item(struct map_rect_priv *mr)
}
if (! mr->search_blk_count)
return NULL;
- dbg(1,"block 0x%x offset 0x%x\n", mr->search_blk_off->block, mr->search_blk_off->offset);
- block_get_byindex(mr->m->file[mr->current_file], mr->search_blk_off->block, &mr->b);
- mr->b.p=mr->b.block_start+mr->search_blk_off->offset;
+ dbg(1,"block 0x%x offset 0x%x\n", block_offset_get_block(mr->search_blk_off), block_offset_get_offset(mr->search_blk_off));
+ block_get_byindex(mr->m->file[mr->current_file], block_offset_get_block(mr->search_blk_off), &mr->b);
+ mr->b.p=mr->b.block_start+block_offset_get_offset(mr->search_blk_off);
town_get(mr, &mr->town, &mr->item);
mr->search_blk_off++;
mr->search_blk_count--;