forked from enlightenment/efl
eolian: put structs and typedefs right in the respective hashmaps without going through nodes
This commit is contained in:
parent
6f805a9998
commit
5d1cd61c92
|
@ -433,7 +433,7 @@ eo_parser_database_fill(const char *filename, Eina_Bool eot)
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eot) goto nodeloop;
|
if (eot) goto done;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(ls->nodes, k, nd) if (nd->type == NODE_CLASS)
|
EINA_LIST_FOREACH(ls->nodes, k, nd) if (nd->type == NODE_CLASS)
|
||||||
{
|
{
|
||||||
|
@ -448,7 +448,6 @@ eo_parser_database_fill(const char *filename, Eina_Bool eot)
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeloop:
|
|
||||||
EINA_LIST_FOREACH(ls->nodes, k, nd)
|
EINA_LIST_FOREACH(ls->nodes, k, nd)
|
||||||
{
|
{
|
||||||
switch (nd->type)
|
switch (nd->type)
|
||||||
|
@ -457,21 +456,12 @@ nodeloop:
|
||||||
if (!_db_fill_class(nd->def_class, filename))
|
if (!_db_fill_class(nd->def_class, filename))
|
||||||
goto error;
|
goto error;
|
||||||
break;
|
break;
|
||||||
case NODE_TYPEDEF:
|
|
||||||
if (!database_type_add(nd->def_typedef))
|
|
||||||
goto error;
|
|
||||||
nd->def_typedef = NULL;
|
|
||||||
break;
|
|
||||||
case NODE_STRUCT:
|
|
||||||
if (!database_struct_add(nd->def_struct))
|
|
||||||
goto error;
|
|
||||||
nd->def_struct = NULL;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
eo_lexer_free(ls);
|
eo_lexer_free(ls);
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
|
||||||
|
|
|
@ -607,11 +607,6 @@ eo_lexer_free(Eo_Lexer *ls)
|
||||||
case NODE_CLASS:
|
case NODE_CLASS:
|
||||||
eo_definitions_class_def_free(nd->def_class);
|
eo_definitions_class_def_free(nd->def_class);
|
||||||
break;
|
break;
|
||||||
case NODE_TYPEDEF:
|
|
||||||
database_typedef_del(nd->def_typedef);
|
|
||||||
break;
|
|
||||||
case NODE_STRUCT:
|
|
||||||
database_type_del(nd->def_struct);
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,9 +95,7 @@ typedef struct _Eo_Token
|
||||||
|
|
||||||
enum Nodes
|
enum Nodes
|
||||||
{
|
{
|
||||||
NODE_CLASS = 0,
|
NODE_CLASS = 0
|
||||||
NODE_TYPEDEF,
|
|
||||||
NODE_STRUCT
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* represents a node, aka a result of parsing - currently class, typedef
|
/* represents a node, aka a result of parsing - currently class, typedef
|
||||||
|
|
|
@ -268,7 +268,7 @@ parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool is_extern)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
check_match(ls, '}', '{', line, column);
|
check_match(ls, '}', '{', line, column);
|
||||||
if (name) append_node(ls, NODE_STRUCT, def);
|
if (name) database_struct_add(def);
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1060,7 +1060,7 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot)
|
||||||
case KW_type:
|
case KW_type:
|
||||||
{
|
{
|
||||||
parse_typedef(ls);
|
parse_typedef(ls);
|
||||||
append_node(ls, NODE_TYPEDEF, ls->tmp.typedef_def);
|
database_type_add(ls->tmp.typedef_def);
|
||||||
ls->tmp.typedef_def = NULL;
|
ls->tmp.typedef_def = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue