static xml_part * parse_part (xmlNode *cur_node) { xml_part *ret; if ((ret = g_new0(xml_part, 1)) == NULL) return NULL; for (cur_node = cur_node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type != XML_ELEMENT_NODE) continue; if (NODE_IS_TYPE (cur_node, "icon")) ret->icon = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "t")) ret->t = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "wind")) ret->wind = parse_wind(cur_node); else if (NODE_IS_TYPE (cur_node, "ppcp")) ret->ppcp = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "hmid")) ret->hmid = DATA(cur_node); } return ret; }
static xml_wind * parse_wind (xmlNode *cur_node) { xml_wind *ret; if ((ret = g_new0(xml_wind, 1)) == NULL) return NULL; for (cur_node = cur_node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type != XML_ELEMENT_NODE) continue; if (NODE_IS_TYPE (cur_node, "s")) ret->s = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "gust")) ret->gust = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "d")) ret->d = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "t")) ret->t = DATA(cur_node); } return ret; }
xml_weather * parse_weather (xmlNode *cur_node) { xml_weather *ret; if (!NODE_IS_TYPE (cur_node, "weather")) { return NULL; } if ((ret = g_new0(xml_weather, 1)) == NULL) return NULL; for (cur_node = cur_node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type != XML_ELEMENT_NODE) continue; if (NODE_IS_TYPE (cur_node, "cc")) ret->cc = parse_cc(cur_node); else if (NODE_IS_TYPE (cur_node, "loc")) ret->loc = parse_loc(cur_node); else if (NODE_IS_TYPE (cur_node, "dayf")) { xmlNode *child_node; guint i = 0; for (child_node = cur_node->children; child_node; child_node = child_node->next) { if (NODE_IS_TYPE (child_node, "day")) { if (i >= XML_WEATHER_DAYF_N) break; ret->dayf[i] = parse_dayf(child_node); i++; } } } } return ret; }
xml_dayf * parse_dayf (xmlNode *cur_node) { xml_dayf *ret; gchar *value; if ((ret = g_new0(xml_dayf, 1)) == NULL) return NULL; ret->day = (gchar *) xmlGetProp (cur_node, (const xmlChar *) "t"); ret->date = (gchar *) xmlGetProp (cur_node, (const xmlChar *) "dt"); for (cur_node = cur_node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type != XML_ELEMENT_NODE) continue; if (NODE_IS_TYPE (cur_node, "hi")) { ret->hi = DATA(cur_node); g_assert(ret->hi != NULL); } else if (NODE_IS_TYPE (cur_node, "low")) { ret->low = DATA(cur_node); } else if (NODE_IS_TYPE (cur_node, "part")) { value = (gchar *) xmlGetProp (cur_node, (const xmlChar *) "p"); if (xmlStrEqual ((const xmlChar *)value, (const xmlChar *)"d")) ret->part[0] = parse_part(cur_node); else if (xmlStrEqual ((const xmlChar *)value, (const xmlChar *)"n")) ret->part[1] = parse_part(cur_node); g_free(value); } } return ret; }
void grammar_symbol_print(struct symbol_t *s) { if(NODE_IS_TYPE(s, NODE_VAR)) { printf("Variable [%p]: %s\n", s, s->name); //list_map(&(s->to), (void (*)(void *)) grammar_connector_print); //printf("FROM:\n"); //list_map(&(s->from), (void (*)(void *)) grammar_connector_print); } else if(NODE_IS_TYPE(s, NODE_TER)) { printf("Terminal [%p]: %s\n", s, s->name); //list_map(&(s->to), (void (*)(void *)) grammar_connector_print); //printf("FROM:\n"); //list_map(&(s->from), (void (*)(void *)) grammar_connector_print); } else { printf("ERROR, unknown type [%p]\n", s); } }
static xml_uv * parse_uv (xmlNode *cur_node) { xml_uv *ret; if ((ret = g_new0 (xml_uv, 1)) == NULL) return NULL; for (cur_node = cur_node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type != XML_ELEMENT_NODE) continue; if (NODE_IS_TYPE (cur_node, "i")) ret->i = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "t")) ret->t = DATA(cur_node); } return ret; }
static xml_bar * parse_bar (xmlNode *cur_node) { xml_bar *ret; if ((ret = g_new0(xml_bar, 1)) == NULL) return NULL; for (cur_node = cur_node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type != XML_ELEMENT_NODE) continue; if (NODE_IS_TYPE (cur_node, "r")) ret->r = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "d")) ret->d = DATA(cur_node); } return ret; }
static void cb_searchdone (gboolean result, gpointer user_data) { search_dialog *dialog = (search_dialog *) user_data; xmlDoc *doc; xmlNode *cur_node; if (!result || dialog->recv_buffer == NULL) return; doc = xmlParseMemory(dialog->recv_buffer, strlen(dialog->recv_buffer)); g_free(dialog->recv_buffer); dialog->recv_buffer = NULL; if (!doc) return; cur_node = xmlDocGetRootElement(doc); if (cur_node) { for (cur_node = cur_node->children; cur_node; cur_node = cur_node->next) { if (NODE_IS_TYPE(cur_node, "loc")) { gchar *id = (gchar *) xmlGetProp(cur_node, (const xmlChar *) "id"); gchar *city; if (!id) continue; city = DATA(cur_node); if (!city) { g_free(id); continue; } append_result(dialog->result_mdl, id, city); g_free(id); g_free(city); } } } xmlFreeDoc(doc); return; }
/* * Disconnects a connector from any. * * Before: * * ??? --> (C) --> ? * | * v * (?) * * After: * * ??? (C) --> ? * | * v * (?) * */ int grammar_disconnect_from(struct connector_t *connector) { #ifndef NDEBUG if(connector->from == NULL) debug("connector->from == NULL"); #endif if(NODE_IS_TYPE(connector->from, NODE_CON)) { grammar_disconnect_from_connector(connector); return 0; } else { return grammar_disconnect_from_symbol(connector); } }
xml_loc * parse_loc (xmlNode *cur_node) { xml_loc *ret; if ((ret = g_new0(xml_loc, 1)) == NULL) return NULL; for (cur_node = cur_node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type != XML_ELEMENT_NODE) continue; if (NODE_IS_TYPE (cur_node, "dnam")) ret->dnam = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "sunr")) ret->sunr = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "suns")) ret->suns = DATA(cur_node); } return ret; }
xml_cc * parse_cc (xmlNode *cur_node) { xml_cc *ret; if ((ret = g_new0(xml_cc, 1)) == NULL) return NULL; for (cur_node = cur_node->children; cur_node; cur_node = cur_node->next) { if (cur_node->type != XML_ELEMENT_NODE) continue; if (NODE_IS_TYPE (cur_node, "tmp")) ret->tmp = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "icon")) ret->icon = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "t")) ret->t = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "flik")) ret->flik = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "bar")) ret->bar = parse_bar(cur_node); else if (NODE_IS_TYPE (cur_node, "wind")) ret->wind = parse_wind(cur_node); else if (NODE_IS_TYPE (cur_node, "hmid")) ret->hmid = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "vis")) ret->vis = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "uv")) ret->uv = parse_uv(cur_node); else if (NODE_IS_TYPE (cur_node, "dewp")) ret->dewp = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "lsup")) ret->lsup = DATA(cur_node); else if (NODE_IS_TYPE (cur_node, "obst")) ret->obst = DATA(cur_node); } return ret; }