static int parse_member(char *p) { char type_buffer[BUFFER_SIZE]; char ref_buffer[BUFFER_SIZE]; char role_buffer[BUFFER_SIZE]; enum relation_member_type type; if (!osm_xml_get_attribute(p, "type", type_buffer, BUFFER_SIZE)) return 0; if (!osm_xml_get_attribute(p, "ref", ref_buffer, BUFFER_SIZE)) return 0; if (!osm_xml_get_attribute(p, "role", role_buffer, BUFFER_SIZE)) return 0; if (!strcmp(type_buffer,"node")) type=rel_member_node; else if (!strcmp(type_buffer,"way")) type=rel_member_way; else if (!strcmp(type_buffer,"relation")) type=rel_member_relation; else { fprintf(stderr,"Unknown type '%s'\n",type_buffer); return 0; } osm_add_member(type, atoll(ref_buffer), role_buffer); return 1; }
static int parse_member(char *p) { char type_buffer[BUFFER_SIZE]; char ref_buffer[BUFFER_SIZE]; char role_buffer[BUFFER_SIZE]; int type; if (!osm_xml_get_attribute(p, "type", type_buffer, BUFFER_SIZE)) return 0; if (!osm_xml_get_attribute(p, "ref", ref_buffer, BUFFER_SIZE)) return 0; if (!osm_xml_get_attribute(p, "role", role_buffer, BUFFER_SIZE)) return 0; if (!strcmp(type_buffer,"node")) type=1; else if (!strcmp(type_buffer,"way")) type=2; else if (!strcmp(type_buffer,"relation")) type=3; else { fprintf(stderr,"Unknown type %s\n",type_buffer); type=0; } osm_add_member(type, atoll(ref_buffer), role_buffer); return 1; }
static int parse_tag(char *p) { char k_buffer[BUFFER_SIZE]; char v_buffer[BUFFER_SIZE]; if (!osm_xml_get_attribute(p, "k", k_buffer, BUFFER_SIZE)) return 0; if (!osm_xml_get_attribute(p, "v", v_buffer, BUFFER_SIZE)) return 0; osm_xml_decode_entities(v_buffer); osm_add_tag(k_buffer, v_buffer); return 1; }
static int parse_node(char *p) { char id_buffer[BUFFER_SIZE]; char lat_buffer[BUFFER_SIZE]; char lon_buffer[BUFFER_SIZE]; if (!osm_xml_get_attribute(p, "id", id_buffer, BUFFER_SIZE)) return 0; if (!osm_xml_get_attribute(p, "lat", lat_buffer, BUFFER_SIZE)) return 0; if (!osm_xml_get_attribute(p, "lon", lon_buffer, BUFFER_SIZE)) return 0; osm_add_node(atoll(id_buffer), atof(lat_buffer), atof(lon_buffer)); return 1; }
static int parse_nd(char *p) { char ref_buffer[BUFFER_SIZE]; if (!osm_xml_get_attribute(p, "ref", ref_buffer, BUFFER_SIZE)) return 0; osm_add_nd(atoll(ref_buffer)); return 1; }
static int parse_relation(char *p) { char id_buffer[BUFFER_SIZE]; if (!osm_xml_get_attribute(p, "id", id_buffer, BUFFER_SIZE)) return 0; osm_add_relation(atoll(id_buffer)); return 1; }