From 74bdbfc76a22ae07c01c45ad33ee38b2b6912d2c Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Mon, 22 Sep 2014 16:17:46 -0700 Subject: [PATCH] Serialize geometry before tags To make it easier to skip the tags if the geometry is optimized away --- geojson.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/geojson.c b/geojson.c index 83e81c4..0bd74ff 100644 --- a/geojson.c +++ b/geojson.c @@ -301,19 +301,6 @@ void check_range(struct index *start, struct index *end, char *metabase, unsigne char *meta = metabase + i->fpos; - int m; - deserialize_int(&meta, &m); - - int i; - for (i = 0; i < m; i++) { - int t; - deserialize_int(&meta, &t); - struct pool_val *key = deserialize_string(&meta, &keys, VT_STRING); - struct pool_val *value = deserialize_string(&meta, &keys, t); - - printf("%s (%d) = %s (%d)\n", key->s, key->n, value->s, value->n); - } - int t; deserialize_int(&meta, &t); printf("(%d) ", t); @@ -338,6 +325,19 @@ void check_range(struct index *start, struct index *end, char *metabase, unsigne } } + int m; + deserialize_int(&meta, &m); + + int i; + for (i = 0; i < m; i++) { + int t; + deserialize_int(&meta, &t); + struct pool_val *key = deserialize_string(&meta, &keys, VT_STRING); + struct pool_val *value = deserialize_string(&meta, &keys, t); + + printf("%s (%d) = %s (%d)\n", key->s, key->n, value->s, value->n); + } + printf("\n"); } @@ -446,6 +446,12 @@ void read_json(FILE *f) { { long long start = fpos; + unsigned bbox[] = { UINT_MAX, UINT_MAX, 0, 0 }; + + serialize_int(metafile, t, &fpos); + parse_geometry(t, coordinates, bbox, &fpos, metafile, VT_MOVETO); + serialize_int(metafile, VT_END, &fpos); + char *metakey[properties->length]; char *metaval[properties->length]; int metatype[properties->length]; @@ -482,12 +488,6 @@ void read_json(FILE *f) { serialize_string(metafile, metaval[i], &fpos); } - unsigned bbox[] = { UINT_MAX, UINT_MAX, 0, 0 }; - - serialize_int(metafile, t, &fpos); - parse_geometry(t, coordinates, bbox, &fpos, metafile, VT_MOVETO); - serialize_int(metafile, VT_END, &fpos); - int z = 14; /* XXX do proper overlap instead of whole bounding box */