eolian: first batch of database_ functions removal (simplifies code)

This commit is contained in:
Daniel Kolesa 2014-08-15 13:51:41 +01:00
parent 913e0f09fa
commit 97d9bf37fa
3 changed files with 102 additions and 253 deletions

View File

@ -1,56 +1,12 @@
#include "eo_parser.h"
static Eina_Bool
_db_fill_ctor(Eolian_Class *cl, Eo_Method_Def *meth)
{
Eo_Param_Def *param;
Eina_List *l;
Eolian_Function *foo_id = database_function_new(meth->name, EOLIAN_CTOR);
database_class_function_add(cl, foo_id);
if (meth->ret)
{
database_function_return_comment_set(foo_id, EOLIAN_METHOD,
meth->ret->comment);
}
database_function_legacy_set(foo_id, EOLIAN_METHOD, meth->legacy);
EINA_LIST_FOREACH(meth->params, l, param)
{
database_method_parameter_add(foo_id, (Eolian_Parameter_Dir)param->way,
param->type, param->name, param->comment);
param->type = NULL;
}
foo_id->base = meth->base;
meth->base.file = NULL;
return EINA_TRUE;
}
static Eina_Bool
_db_fill_ctors(Eolian_Class *cl, Eo_Class_Def *kls)
{
Eo_Method_Def *meth;
Eina_List *l;
EINA_LIST_FOREACH(kls->constructors, l, meth)
if (!_db_fill_ctor(cl, meth)) return EINA_FALSE;
return EINA_TRUE;
}
static Eina_Bool
_db_fill_key(Eolian_Function *foo_id, Eo_Param_Def *param)
{
Eolian_Function_Parameter *p = database_property_key_add(foo_id,
param->type,
param->name,
param->comment);
Eolian_Function_Parameter *p = database_parameter_add(param->type,
param->name,
param->comment);
foo_id->keys = eina_list_append(foo_id->keys, p);
database_parameter_nonull_set(p, param->nonull);
param->type = NULL;
@ -75,10 +31,10 @@ _db_fill_keys(Eolian_Function *foo_id, Eo_Property_Def *prop)
static Eina_Bool
_db_fill_value(Eolian_Function *foo_id, Eo_Param_Def *param)
{
Eolian_Function_Parameter *p = database_property_value_add(foo_id,
param->type,
param->name,
param->comment);
Eolian_Function_Parameter *p = database_parameter_add(param->type,
param->name,
param->comment);
foo_id->params = eina_list_append(foo_id->params, p);
database_parameter_nonull_set(p, param->nonull);
param->type = NULL;
@ -103,11 +59,11 @@ _db_fill_values(Eolian_Function *foo_id, Eo_Property_Def *prop)
static Eina_Bool
_db_fill_param(Eolian_Function *foo_id, Eo_Param_Def *param)
{
Eolian_Function_Parameter *p = database_method_parameter_add(foo_id,
param->way,
param->type,
param->name,
param->comment);
Eolian_Function_Parameter *p = database_parameter_add(param->type,
param->name,
param->comment);
p->param_dir = param->way;
foo_id->params = eina_list_append(foo_id->params, p);
database_parameter_nonull_set(p, param->nonull);
param->type = NULL;
@ -136,29 +92,45 @@ _db_fill_accessor(Eolian_Function *foo_id, Eo_Class_Def *kls,
Eo_Accessor_Param *acc_param;
Eina_List *l;
database_function_type_set(foo_id, ((accessor->type == SETTER)
? EOLIAN_PROP_SET : EOLIAN_PROP_GET));
Eolian_Function_Type ftype = (accessor->type == SETTER)
? EOLIAN_PROP_SET : EOLIAN_PROP_GET;
if (accessor->type == SETTER)
foo_id->type = (foo_id->type == EOLIAN_PROP_GET) ? EOLIAN_PROPERTY
: EOLIAN_PROP_SET;
else
foo_id->type = (foo_id->type == EOLIAN_PROP_SET) ? EOLIAN_PROPERTY
: EOLIAN_PROP_GET;
if (accessor->ret && accessor->ret->type)
{
database_function_return_type_set(foo_id, ftype, accessor->ret->type);
database_function_return_comment_set(foo_id, ftype,
accessor->ret->comment);
database_function_return_flag_set_as_warn_unused(foo_id, ftype,
accessor->ret->warn_unused);
database_function_return_default_val_set(foo_id, ftype,
accessor->ret->default_ret_val);
if (accessor->type == SETTER)
{
foo_id->set_ret_type = accessor->ret->type;
foo_id->set_ret_val = accessor->ret->default_ret_val;
foo_id->set_return_comment = eina_stringshare_ref(accessor->ret->comment);
foo_id->set_return_warn_unused = accessor->ret->warn_unused;
}
else
{
foo_id->get_ret_type = accessor->ret->type;
foo_id->get_ret_val = accessor->ret->default_ret_val;
foo_id->get_return_comment = eina_stringshare_ref(accessor->ret->comment);
foo_id->get_return_warn_unused = accessor->ret->warn_unused;
}
accessor->ret->type = NULL;
accessor->ret->default_ret_val = NULL;
}
if (accessor->legacy)
database_function_legacy_set(foo_id, ftype, accessor->legacy);
database_function_description_set(foo_id, ftype, accessor->comment);
if (accessor->type == SETTER)
{
foo_id->set_description = eina_stringshare_ref(accessor->comment);
if (accessor->legacy)
foo_id->set_legacy = eina_stringshare_ref(accessor->legacy);
}
else
{
foo_id->get_description = eina_stringshare_ref(accessor->comment);
if (accessor->legacy)
foo_id->get_legacy = eina_stringshare_ref(accessor->legacy);
}
EINA_LIST_FOREACH(accessor->params, l, acc_param)
{
@ -180,9 +152,14 @@ _db_fill_accessor(Eolian_Function *foo_id, Eo_Class_Def *kls,
}
if (kls->type == EOLIAN_CLASS_INTERFACE)
database_function_set_as_virtual_pure(foo_id, ftype);
{
if (accessor->type == SETTER)
foo_id->set_virtual_pure = EINA_TRUE;
else
foo_id->get_virtual_pure = EINA_TRUE;
}
if (ftype == EOLIAN_PROP_GET)
if (accessor->type == GETTER)
foo_id->base = accessor->base;
else
foo_id->set_base = accessor->base;
@ -212,8 +189,8 @@ _db_fill_property(Eolian_Class *cl, Eo_Class_Def *kls, Eo_Property_Def *prop)
Eolian_Function *foo_id = database_function_new(prop->name,
EOLIAN_UNRESOLVED);
database_function_scope_set(foo_id, prop->scope);
database_function_set_as_class(foo_id, prop->is_class);
foo_id->scope = prop->scope;
foo_id->is_class = prop->is_class;
if (!_db_fill_keys (foo_id, prop)) goto failure;
if (!_db_fill_values (foo_id, prop)) goto failure;
@ -221,9 +198,9 @@ _db_fill_property(Eolian_Class *cl, Eo_Class_Def *kls, Eo_Property_Def *prop)
if (!prop->accessors)
{
database_function_type_set(foo_id, EOLIAN_PROPERTY);
foo_id->type = EOLIAN_PROPERTY;
if (kls->type == EOLIAN_CLASS_INTERFACE)
database_function_set_as_virtual_pure(foo_id, EOLIAN_UNRESOLVED);
foo_id->get_virtual_pure = foo_id->set_virtual_pure = EINA_TRUE;
foo_id->base = prop->base;
prop->base.file = NULL;
}
@ -254,33 +231,29 @@ _db_fill_method(Eolian_Class *cl, Eo_Class_Def *kls, Eo_Method_Def *meth)
{
Eolian_Function *foo_id = database_function_new(meth->name, EOLIAN_METHOD);
database_function_scope_set(foo_id, meth->scope);
foo_id->scope = meth->scope;
database_class_function_add(cl, foo_id);
if (meth->ret)
{
database_function_return_type_set(foo_id, EOLIAN_METHOD,
meth->ret->type);
database_function_return_comment_set(foo_id, EOLIAN_METHOD,
meth->ret->comment);
database_function_return_flag_set_as_warn_unused(foo_id, EOLIAN_METHOD,
meth->ret->warn_unused);
database_function_return_default_val_set(foo_id, EOLIAN_METHOD,
meth->ret->default_ret_val);
foo_id->get_ret_type = meth->ret->type;
foo_id->get_return_comment = eina_stringshare_ref(meth->ret->comment);
foo_id->get_return_warn_unused = meth->ret->warn_unused;
foo_id->get_ret_val = meth->ret->default_ret_val;
meth->ret->type = NULL;
meth->ret->default_ret_val = NULL;
}
database_function_description_set(foo_id, EOLIAN_METHOD, meth->comment);
database_function_legacy_set(foo_id, EOLIAN_METHOD, meth->legacy);
database_function_object_set_as_const(foo_id, meth->obj_const);
database_function_set_as_class(foo_id, meth->is_class);
foo_id->get_description = eina_stringshare_ref(meth->comment);
foo_id->get_legacy = eina_stringshare_ref(meth->legacy);
foo_id->obj_is_const = meth->obj_const;
foo_id->is_class = meth->is_class;
_db_fill_params(foo_id, meth);
if (kls->type == EOLIAN_CLASS_INTERFACE)
database_function_set_as_virtual_pure(foo_id, EOLIAN_METHOD);
foo_id->get_virtual_pure = EINA_TRUE;
foo_id->base = meth->base;
meth->base.file = NULL;
@ -300,6 +273,38 @@ _db_fill_methods(Eolian_Class *cl, Eo_Class_Def *kls)
return EINA_TRUE;
}
static Eina_Bool
_db_fill_ctor(Eolian_Class *cl, Eo_Method_Def *meth)
{
Eolian_Function *foo_id = database_function_new(meth->name, EOLIAN_CTOR);
database_class_function_add(cl, foo_id);
if (meth->ret)
foo_id->get_return_comment = eina_stringshare_ref(meth->ret->comment);
foo_id->get_legacy = eina_stringshare_ref(meth->legacy);
_db_fill_params(foo_id, meth);
foo_id->base = meth->base;
meth->base.file = NULL;
return EINA_TRUE;
}
static Eina_Bool
_db_fill_ctors(Eolian_Class *cl, Eo_Class_Def *kls)
{
Eo_Method_Def *meth;
Eina_List *l;
EINA_LIST_FOREACH(kls->constructors, l, meth)
if (!_db_fill_ctor(cl, meth)) return EINA_FALSE;
return EINA_TRUE;
}
static int
_db_fill_implement(Eolian_Class *cl, Eolian_Implement *impl)
{
@ -350,7 +355,10 @@ _db_fill_implement(Eolian_Class *cl, Eolian_Implement *impl)
eolian_class_name_get(cl));
return -1;
}
database_function_set_as_virtual_pure(foo_id, ftype);
if (ftype == EOLIAN_PROP_SET)
foo_id->set_virtual_pure = EINA_TRUE;
else
foo_id->get_virtual_pure = EINA_TRUE;
return 1;
}
database_class_implement_add(cl, impl);

View File

@ -32,145 +32,3 @@ database_function_new(const char *function_name, Eolian_Function_Type foo_type)
fid->type = foo_type;
return fid;
}
void
database_function_scope_set(Eolian_Function *fid, Eolian_Object_Scope scope)
{
EINA_SAFETY_ON_NULL_RETURN(fid);
fid->scope = scope;
}
void
database_function_type_set(Eolian_Function *fid, Eolian_Function_Type foo_type)
{
EINA_SAFETY_ON_NULL_RETURN(fid);
switch (foo_type)
{
case EOLIAN_PROP_SET:
if (fid->type == EOLIAN_PROP_GET) foo_type = EOLIAN_PROPERTY;
break;
case EOLIAN_PROP_GET:
if (fid->type == EOLIAN_PROP_SET) foo_type = EOLIAN_PROPERTY;
break;
default:
break;
}
fid->type = foo_type;
}
Eina_Bool
database_function_set_as_virtual_pure(Eolian_Function *fid, Eolian_Function_Type ftype)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EINA_FALSE);
switch (ftype)
{
case EOLIAN_UNRESOLVED: case EOLIAN_METHOD: case EOLIAN_PROP_GET: fid->get_virtual_pure = EINA_TRUE; break;
case EOLIAN_PROP_SET: fid->set_virtual_pure = EINA_TRUE; break;
default: return EINA_FALSE;
}
return EINA_TRUE;
}
void
database_function_set_as_class(Eolian_Function *fid, Eina_Bool is_class)
{
EINA_SAFETY_ON_NULL_RETURN(fid);
fid->is_class = is_class;
}
Eolian_Function_Parameter *
database_property_key_add(Eolian_Function *fid, Eolian_Type *type, const char *name, const char *description)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL);
Eolian_Function_Parameter *param = database_parameter_add(type, name, description);
fid->keys = eina_list_append(fid->keys, param);
return param;
}
Eolian_Function_Parameter *
database_property_value_add(Eolian_Function *fid, Eolian_Type *type, const char *name, const char *description)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL);
Eolian_Function_Parameter *param = database_parameter_add(type, name, description);
fid->params = eina_list_append(fid->params, param);
return param;
}
Eolian_Function_Parameter *
database_method_parameter_add(Eolian_Function *fid, Eolian_Parameter_Dir param_dir, Eolian_Type *type, const char *name, const char *description)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL);
Eolian_Function_Parameter *param = database_parameter_add(type, name, description);
param->param_dir = param_dir;
fid->params = eina_list_append(fid->params, param);
return param;
}
void database_function_return_type_set(Eolian_Function *fid, Eolian_Function_Type ftype, Eolian_Type *ret_type)
{
switch (ftype)
{
case EOLIAN_PROP_SET: fid->set_ret_type = ret_type; break;
case EOLIAN_UNRESOLVED: case EOLIAN_METHOD: case EOLIAN_PROP_GET: fid->get_ret_type = ret_type; break;
default: return;
}
}
void database_function_return_default_val_set(Eolian_Function *fid, Eolian_Function_Type ftype, Eolian_Expression *ret_default_value)
{
switch (ftype)
{
case EOLIAN_PROP_SET: fid->set_ret_val = ret_default_value; break;
case EOLIAN_UNRESOLVED: case EOLIAN_METHOD: case EOLIAN_PROP_GET: fid->get_ret_val = ret_default_value; break;
default: return;
}
}
void database_function_return_comment_set(Eolian_Function *fid, Eolian_Function_Type ftype, const char *ret_comment)
{
switch (ftype)
{
case EOLIAN_PROP_SET: fid->set_return_comment = eina_stringshare_ref(ret_comment); break;
case EOLIAN_UNRESOLVED: case EOLIAN_METHOD: case EOLIAN_PROP_GET: fid->get_return_comment = eina_stringshare_ref(ret_comment); break;
default: return;
}
}
void database_function_return_flag_set_as_warn_unused(Eolian_Function *fid,
Eolian_Function_Type ftype, Eina_Bool warn_unused)
{
EINA_SAFETY_ON_NULL_RETURN(fid);
switch (ftype)
{
case EOLIAN_METHOD: case EOLIAN_PROP_GET: fid->get_return_warn_unused = warn_unused; break;
case EOLIAN_PROP_SET: fid->set_return_warn_unused = warn_unused; break;
default: return;
}
}
void
database_function_object_set_as_const(Eolian_Function *fid, Eina_Bool is_const)
{
EINA_SAFETY_ON_NULL_RETURN(fid);
fid->obj_is_const = is_const;
}
void database_function_legacy_set(Eolian_Function *fid, Eolian_Function_Type ftype, const char *legacy)
{
switch (ftype)
{
case EOLIAN_PROP_SET: fid->set_legacy = eina_stringshare_ref(legacy); break;
case EOLIAN_UNRESOLVED: case EOLIAN_METHOD: case EOLIAN_CTOR: case EOLIAN_PROP_GET: fid->get_legacy = eina_stringshare_ref(legacy); break;
default: return;
}
}
void database_function_description_set(Eolian_Function *fid, Eolian_Function_Type ftype, const char *desc)
{
switch (ftype)
{
case EOLIAN_PROP_SET: fid->set_description = eina_stringshare_ref(desc); break;
case EOLIAN_UNRESOLVED: case EOLIAN_METHOD: case EOLIAN_CTOR: case EOLIAN_PROP_GET: fid->get_description = eina_stringshare_ref(desc); break;
default: return;
}
}

View File

@ -310,23 +310,6 @@ Eina_Bool database_class_name_validate(const char *class_name, const Eolian_Clas
Eolian_Function *database_function_new(const char *function_name, Eolian_Function_Type foo_type);
void database_function_del(Eolian_Function *fid);
void database_function_type_set(Eolian_Function *function_id, Eolian_Function_Type foo_type);
void database_function_legacy_set(Eolian_Function *fid, Eolian_Function_Type ftype, const char *legacy);
void database_function_description_set(Eolian_Function *fid, Eolian_Function_Type ftype, const char *desc);
void database_function_return_type_set(Eolian_Function *foo_id, Eolian_Function_Type ftype, Eolian_Type *ret_type);
void database_function_return_comment_set(Eolian_Function *foo_id, Eolian_Function_Type ftype, const char *ret_comment);
void database_function_return_default_val_set(Eolian_Function *foo_id, Eolian_Function_Type ftype, Eolian_Expression *ret_default_value);
void database_function_return_flag_set_as_warn_unused(Eolian_Function *foo_id, Eolian_Function_Type ftype, Eina_Bool warn_unused);
void database_function_object_set_as_const(Eolian_Function *foo_id, Eina_Bool is_const);
void database_function_set_as_class(Eolian_Function *foo_id, Eina_Bool is_class);
Eina_Bool database_function_set_as_virtual_pure(Eolian_Function *function_id, Eolian_Function_Type type);
void database_function_scope_set(Eolian_Function *function_id, Eolian_Object_Scope scope);
Eolian_Function_Parameter *database_property_key_add(Eolian_Function *foo_id, Eolian_Type *type, const char *name, const char *description);
Eolian_Function_Parameter *database_property_value_add(Eolian_Function *foo_id, Eolian_Type *type, const char *name, const char *description);
Eolian_Function_Parameter *database_method_parameter_add(Eolian_Function *foo_id, Eolian_Parameter_Dir param_dir, Eolian_Type *type, const char *name, const char *description);
/* func parameters */
Eolian_Function_Parameter *database_parameter_add(Eolian_Type *type, const char *name, const char *description);