readosm
1.1.0
|
ReadOSM implements a very simple and straightforward interface; there are only three methods:
Accordingly to the above premises, implementing a complete OSM parser is incredibly simple:
#include <readosm.h> static int parse_node (const void *user_data, const readosm_node * node) { /* callback function consuming Node objects */ struct some_user_defined_struct *my_struct = (struct some_user_defined_struct *) user_data; ... some smart code ... return READOSM_OK; } static int parse_way (const void *user_data, const readosm_way * way) { /* callback function consuming Way objects */ struct some_user_defined_struct *my_struct = (struct some_user_defined_struct *) user_data; ... some smart code ... return READOSM_OK; } static int parse_relation (const void *user_data, const readosm_relation * relation) { /* callback function consuming Relation objects */ struct some_user_defined_struct *my_struct = (struct some_user_defined_struct *) user_data; ... some smart code ... return READOSM_OK; } int main () { /* the basic OSM parser implementation */ int ret; const void *handle; struct some_user_defined_struct my_struct; ret = readosm_open ("path-to-some-OSM-file", &handle); ... error handling intentionally suppressed ... ret = readosm_parse (handle, &my_struct, parse_node, parse_way, parse_relation); ... error handling intentionally suppressed ... ret = readosm_close (handle); ... error handling intentionally suppressed ... return 0; }
So the real programming work is simply the one required in order to implement the callback-functions own code.
You can usefully read and study the Examples code-samples in order to get any other relevant information about this topic.