Commit Graph
100 Commits
Author SHA1 Message Date
Eric Fischer 1554a59153 Add a progress indicator. Remember to run the optimizer. 2014-09-18 16:27:34 -07:00
Eric Fischer 9fd4da4f7d Unlink tmp files early in case the tiling doesn't run to completion 2014-09-18 14:04:52 -07:00
Eric Fischer b5d28af005 Iterate through the bbox and look up geometries by tile 2014-09-18 14:01:22 -07:00
Eric Fischer f4a40cb16c Use proper temporary files instead of fixed names 2014-09-18 12:12:59 -07:00
Eric Fischer e8adeba40e Keep a file bounding box to know the area that needs to be tiled 2014-09-18 10:26:47 -07:00
Eric Fischer 14e7b648ed Error check when writing to temporaries 2014-09-17 16:21:25 -07:00
Eric Fischer 57fe46f423 Memory map the metadata pool too 2014-09-17 16:00:19 -07:00
Eric Fischer a38ebd9804 Sort the index 2014-09-17 15:48:29 -07:00
Eric Fischer 6613246554 Write the index to a file and then memory map it 2014-09-17 15:44:07 -07:00
Eric Fischer ee8c23b010 Start indexing; sanity check that the file positions are right 2014-09-16 17:54:23 -07:00
Eric Fischer 449da18c63 Sanity check serialization 2014-09-16 17:19:54 -07:00
Eric Fischer 88dc948b6b Serialize metadata and geometry to a file 2014-09-16 16:39:56 -07:00
Eric Fischer a5b8a02ec0 More consistent naming for constants 2014-09-16 14:11:50 -07:00
Eric Fischer d2f0aa0d37 Fix not saying moveto for top level points 2014-09-16 13:54:57 -07:00
Eric Fischer e82edb90a3 Most of the way toward serializing the drawing operations 2014-09-16 13:51:22 -07:00
Eric Fischer 33747bdfd8 Project to web mercator and calculate bounding box 2014-09-16 11:16:51 -07:00
Eric Fischer ff5b632cf5 MultiPoints are all movetos, no linetos 2014-09-15 17:57:16 -07:00
Eric Fischer 1dcfca9d51 Get closer to vector format 2014-09-15 17:33:54 -07:00
Eric Fischer f54af30a40 Parse nested geometry 2014-09-15 16:32:06 -07:00
Eric Fischer 3d43c5afbd Flatten out error-handling so it isn't nested so deeply 2014-09-15 15:47:06 -07:00
Eric Fischer efa3995d94 Clean up meta naming a little 2014-09-15 15:30:03 -07:00
Eric Fischer 0ee8d877ca Add stub main() for testing 2014-09-15 15:27:35 -07:00
Eric Fischer 567d57b864 Remove unneeded datamaps stuff 2014-09-15 15:18:08 -07:00
Eric Fischer e61898b46e Start of GeoJSON from datamaps v2 2014-09-15 15:02:33 -07:00
Eric Fischer 73cf86acdb Preserve the original string representation of numbers too.
Not always useful, but sometimes it will be.
2014-02-26 17:01:30 -08:00
Eric Fischer 0509a860fb Make it an actual library 2014-02-21 16:55:36 -08:00
Eric Fischer 18e90522cb Remember return value from main() 2014-02-19 17:11:56 -08:00
Eric Fischer ad4016635c Document the test program 2014-02-08 10:45:25 -08:00
Eric Fischer bb33b45ece Clarify about reading trees 2014-02-08 10:35:48 -08:00
Eric Fischer 559eb8831d Add license 2014-02-08 10:33:57 -08:00
Eric Fischer 3bd062516d Remove debug #include 2014-02-08 10:32:04 -08:00
Eric Fischer b09634f4f8 More cleanup after errors. Command line options for the reader styles. 2014-02-08 10:28:52 -08:00
Eric Fischer a2fd84c0a3 Fix more memory leaks 2014-02-08 10:21:53 -08:00
Eric Fischer b6f079fea8 Additional rationale 2014-02-08 10:10:55 -08:00
Eric Fischer c6077f7e54 Fix memory leaks from errors while reading strings or numbers 2014-02-08 10:04:23 -08:00
Eric Fischer 391db023e0 Talk about error cleanup in README 2014-02-08 09:57:55 -08:00
Eric Fischer 5a01013642 Make sure the root pointer is null for errors at the top level 2014-02-08 09:41:49 -08:00
Eric Fischer b72bb6f1f4 Clean up after errors and fix related bugs:
It was freeing the wrong object when there was an error
attaching an object to its parent!

Don't crash when printing null (partially read) hash values.
2014-02-08 09:31:49 -08:00
Eric Fischer 5e6fa6f8dc Remember to deallocate the parser 2014-02-08 00:42:28 -08:00
Eric Fischer 54f637a9a8 More documentation of object internals 2014-02-07 18:11:36 -08:00
Eric Fischer 9d31e8a05e Slightly less wordy name for reading JSON with separators 2014-02-07 18:01:18 -08:00
Eric Fischer 39f9ff3f04 Make streaming formatting consistent 2014-02-07 17:14:39 -08:00
Eric Fischer 9979c70b1f Add the whole-tree reader 2014-02-07 17:02:33 -08:00
Eric Fischer 0fd66048c8 Get rid of root node to simplify. Walk the tree if you need it. 2014-02-07 16:56:38 -08:00
Eric Fischer e99c037be3 Add header dependency 2014-02-07 16:53:02 -08:00
Eric Fischer 1cbf8a813e Match documented function names 2014-02-07 16:49:52 -08:00
Eric Fischer 45049fb874 More documentation 2014-02-07 16:48:06 -08:00
Eric Fischer 8278580336 Begin README 2014-02-07 16:25:54 -08:00
Eric Fischer a7e26262ea Expose interface for arbitrary reader functions 2014-02-07 16:23:03 -08:00
Eric Fischer 4a14e09457 Clarify what types are used where 2014-02-07 16:09:05 -08:00
Eric Fischer fee27e1353 Add a callback interface for non-closing punctuation 2014-02-07 15:51:46 -08:00
Eric Fischer f67e97cd08 Work out more details of how json_free() needs to work.
The idea is that you can free any element once you are
done with it, even if it is part of an array or hash that
isn't completely read yet.

Removing array elements is reasonably well defined because
nothing else depends on them. Removing a hash key or value
causes it to be replaced by a null unless the other side of
the component has already been nulled out, in which case
the whole pair is removed.
2014-02-06 22:45:40 -08:00
Eric Fischer f0f73c6dd1 Keep track of the root of the parse tree for the caller 2014-02-06 21:06:27 -08:00
Eric Fischer 415193ad8e Remove old state resetting 2014-02-06 21:05:46 -08:00
Eric Fischer 69a5ca0bb9 Include filename in error output 2014-02-06 20:51:15 -08:00
Eric Fischer 9d4ee102b4 Forgot to initialize the error to NULL 2014-02-06 20:49:48 -08:00
Eric Fischer a74444af28 Track line number for error reports 2014-02-06 20:44:39 -08:00
Eric Fischer 46120e84c4 Remember to check for missing commas 2014-02-06 20:31:31 -08:00
Eric Fischer e22b154ecc Add an input form that parses JSON from a string 2014-02-06 19:27:21 -08:00
Eric Fischer ed079e37a9 Add a reader abstraction 2014-02-06 19:22:37 -08:00
Eric Fischer 979b9243d8 A container object makes the state transitions more straightforward
And should make it possible to free an object that has just been read
and still know what the next state will be, importantly.
2014-02-06 18:56:22 -08:00
Eric Fischer 55510cac04 Start adding free logic 2014-02-06 17:58:23 -08:00
Eric Fischer e9d2c94f93 Pass along the string length instead of just null-terminating 2014-02-06 13:28:35 -08:00
Eric Fischer 1a7b4189bf Detect a lack of digits in the exponent for a number 2014-02-06 13:26:56 -08:00
Eric Fischer 55692cb27c Treat unclosed containers at EOF as an error after all 2014-02-06 13:20:56 -08:00
Eric Fischer 6449e817b6 Detect attempts to attach an element to a non-container parent.
Maybe there is a better name for this. The typical case is adjacent
tokens not separated by a comma.
2014-02-06 12:51:32 -08:00
Eric Fischer ad2843d65b Be consistent about EOF handling around whitespace 2014-02-06 12:31:12 -08:00
Eric Fischer f76bcab825 Detect misplaced comma within hash 2014-02-06 12:25:59 -08:00
Eric Fischer 948584126a Detect trailing commas and colons inside arrays and hashes. 2014-02-06 12:19:33 -08:00
Eric Fischer 42283ece0b More sensible way of passing errors back to caller 2014-02-06 12:13:23 -08:00
Eric Fischer f8465828e5 Maybe the right way to handle empty arrays?
The previous check for the array length being 0 didn't work
for the case of an array that contains only an empty array.

The tricky part is that the current node is the array when
the array has just begun or just after a comma, but also
when the completed array has been passed off to the caller.
2014-02-06 00:30:25 -08:00
Eric Fischer 68e0784cc3 At least don't talk about allocation sizes in the public API 2014-02-05 23:35:35 -08:00
Eric Fischer d630aa917e Put arrays in order by getting rid of the linked lists.
Resizing is ugly, but less ugly than backwards arrays.
2014-02-05 23:18:27 -08:00
Eric Fischer 879f9126b3 Name the types in the order the JSON spec names them in 2014-02-05 22:40:35 -08:00
Eric Fischer c69e595e4e Do escaping in output strings 2014-02-05 22:34:47 -08:00
Eric Fischer 9299ef2ecb Handle empty arrays and hashes. Detect non-string hash keys. 2014-02-05 22:13:03 -08:00
Eric Fischer 71981fc49e Add Makefile 2014-02-05 22:04:58 -08:00
Eric Fischer 7641459278 Handle named files, not just standard input 2014-02-05 22:00:52 -08:00
Eric Fischer 264abd48de Fix crash with comma or colon at the top level. 2014-02-05 21:52:39 -08:00
Eric Fischer e7184989ec Handle \u escapes in strings 2014-02-05 21:42:49 -08:00
Eric Fischer 4506a85e6b Add comments 2014-02-05 21:34:17 -08:00
Eric Fischer 95410dbf33 Fix logic error that broke top-level hashes 2014-02-05 21:29:40 -08:00
Eric Fischer 7983c66add Separate source and header files 2014-02-05 21:27:48 -08:00
Eric Fischer 281b98e3d8 Guard against hash keys with no values 2014-02-05 18:34:02 -08:00
Eric Fischer 45e37eb66a Hash getter to extract all Features 2014-02-05 18:23:49 -08:00
Eric Fischer 8aec0ed9d2 Break up the wall of text a little 2014-02-05 18:03:12 -08:00
Eric Fischer e195aa54c3 Much more reasonable pretty-printing (but still reversed) 2014-02-05 17:59:04 -08:00
Eric Fischer 285f1bf8e6 Fix number parsing bug and hash initialization bug 2014-02-05 17:38:02 -08:00
Eric Fischer 3e049754d1 Fix null dereferences 2014-02-05 17:28:45 -08:00
Eric Fischer 558c47c498 Slightly better debug output 2014-02-05 17:21:19 -08:00
Eric Fischer 3e9bb4567e Test code 2014-02-05 16:51:28 -08:00
Eric Fischer 80408353c8 Add strings 2014-02-05 16:45:20 -08:00
Eric Fischer b0103ea458 Growing string instead of static buffer 2014-02-05 16:39:50 -08:00
Eric Fischer 2a7fa98a3a Add numbers (and a buffer overflow risk to fix) 2014-02-05 16:23:01 -08:00
Eric Fischer 7865a9757e Attach child objects to the containers 2014-02-05 16:10:22 -08:00
Eric Fischer 50f30c3dd0 Comma and colon 2014-02-05 16:00:01 -08:00
Eric Fischer f895b8f6b7 Correct value for false 2014-02-05 15:49:53 -08:00
Eric Fischer c913f0eec1 Add null, true, false 2014-02-05 15:42:15 -08:00
Eric Fischer 32cf645516 Arrays and hashes 2014-02-05 15:33:43 -08:00
Eric Fischer c3cda93a77 Basic data types 2014-02-05 15:16:23 -08:00