return EINA_TRUE;
}
-static Eina_Bool
-_db_fill_type(Eolian_Typedef *type_def)
-{
- return database_type_add(type_def);
-}
-
-static Eina_Bool
-_db_fill_struct(Eolian_Type *struct_def)
-{
- return database_struct_add(struct_def);
-}
-
Eina_Bool
eo_parser_database_fill(const char *filename, Eina_Bool eot)
{
goto error;
break;
case NODE_TYPEDEF:
- {
- Eolian_Typedef *def = nd->def_typedef;
- nd->def_typedef = NULL;
- if (!_db_fill_type(def))
+ if (!database_type_add(nd->def_typedef))
+ {
+ ERR("Redefinition of typedef %s\n", nd->def_typedef->alias);
goto error;
- break;
- }
+ }
+ nd->def_typedef = NULL;
+ break;
case NODE_STRUCT:
- {
- Eolian_Type *def = nd->def_struct;
- nd->def_struct = NULL;
- if (!_db_fill_struct(def))
+ if (!database_struct_add(nd->def_struct))
+ {
+ ERR("Redefinition of struct %s\n", nd->def_struct->name);
goto error;
- break;
- }
+ }
+ nd->def_struct = NULL;
+ break;
default:
break;
}
Eina_Bool
database_type_add(Eolian_Typedef *def)
{
- if (_types)
- {
- eina_hash_set(_types, def->alias, def);
- return EINA_TRUE;
- }
- return EINA_FALSE;
+ if (!_types) return EINA_FALSE;
+ if (eina_hash_find(_types, def->alias)) return EINA_FALSE;
+ eina_hash_set(_types, def->alias, def);
+ return EINA_TRUE;
}
Eina_Bool database_struct_add(Eolian_Type *tp)
{
- if (_structs)
- {
- eina_hash_set(_structs, tp->name, tp);
- return EINA_TRUE;
- }
- return EINA_FALSE;
+ if (!_structs) return EINA_FALSE;
+ if (eina_hash_find(_structs, tp->name)) return EINA_FALSE;
+ eina_hash_set(_structs, tp->name, tp);
+ return EINA_TRUE;
}
static void