+static int memberType_function(const char *_tag_,int _type_,const char *type,const char *ref,const char *role)
+{
+ if(_type_&XMLPARSE_TAG_START)
+ {
+ XMLPARSE_ASSERT_STRING(_tag_,type);
+ XMLPARSE_ASSERT_STRING(_tag_,ref);
+
+ if(!strcmp(type,"node"))
+ {
+ node_t node_id=atoll(ref); /* need long long conversion */
+
+ if(relation_nnodes && (relation_nnodes%256)==0)
+ relation_nodes=(node_t*)realloc((void*)relation_nodes,(relation_nnodes+256)*sizeof(node_t));
+
+ relation_nodes[relation_nnodes++]=node_id;
+ }
+ else if(!strcmp(type,"way"))
+ {
+ way_t way_id=atoll(ref); /* need long long conversion */
+
+ if(relation_nways && (relation_nways%256)==0)
+ relation_ways=(way_t*)realloc((void*)relation_ways,(relation_nways+256)*sizeof(way_t));
+
+ relation_ways[relation_nways++]=way_id;
+ }
+ else if(!strcmp(type,"relation"))
+ {
+ relation_t relation_id=atoll(ref); /* need long long conversion */
+
+ if(relation_nrelations && (relation_nrelations%256)==0)
+ relation_relations=(relation_t*)realloc((void*)relation_relations,(relation_nrelations+256)*sizeof(relation_t));
+
+ relation_relations[relation_nrelations++]=relation_id;
+ }
+ }
+
+ return(0);
+}