コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
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;
}
コード例 #4
0
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;
}
コード例 #5
0
ファイル: grammar.c プロジェクト: rodarima/tc
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);
	}
}
コード例 #6
0
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;
}
コード例 #7
0
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;
}
コード例 #8
0
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;
}
コード例 #9
0
ファイル: grammar_connect.c プロジェクト: rodarima/tc
/*
 * 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);
	}
}
コード例 #10
0
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;
}
コード例 #11
0
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;
}