diff options
-rw-r--r-- | eo_tokenizer.h | 17 | ||||
-rw-r--r-- | eo_tokenizer.rl | 25 |
2 files changed, 33 insertions, 9 deletions
diff --git a/eo_tokenizer.h b/eo_tokenizer.h index eb618b9..646dd45 100644 --- a/eo_tokenizer.h +++ b/eo_tokenizer.h @@ -60,20 +60,26 @@ typedef struct _eo_param_def /* PROPERTIES */ -typedef enum _property_type +typedef enum _eo_accessor_type { SETTER, GETTER, PROP_TYPE_LAST -} Property_Type; +} Eo_Accessor_Type; -typedef struct _eo_property_def +typedef struct _eo_accessor_def { - Property_Type type; + Eo_Accessor_Type type; Eo_Ret_Def ret; - const char *name; const char *comment; + Eina_List *legacies; +} Eo_Accessor_Def; + +typedef struct _eo_property_def +{ + const char *name; Eina_List *params; + Eina_List *accessors; } Eo_Property_Def; /* METHODS */ @@ -130,6 +136,7 @@ typedef struct _eo_tokenizer Eo_Property_Def *prop; Eo_Method_Def *meth; Eo_Param_Def *param; + Eo_Accessor_Def *accessor; } tmp; } Eo_Tokenizer; diff --git a/eo_tokenizer.rl b/eo_tokenizer.rl index aebf832..ee66d05 100644 --- a/eo_tokenizer.rl +++ b/eo_tokenizer.rl @@ -339,20 +339,37 @@ _eo_tokenizer_param_free(Eo_Param_Def *param) } static void +_eo_tokenizer_accessor_free(Eo_Accessor_Def *accessor) +{ + const char *s; + Eina_List *l; + + if (accessor->comment) + eina_stringshare_del(accessor->comment); + + EINA_LIST_FOREACH(accessor->legacies, l, s) + if (s) eina_stringshare_del(s); + + _eo_tokenizer_ret_free(&accessor->ret); + + free(accessor); +} + +static void _eo_tokenizer_property_def_free(Eo_Property_Def *prop) { Eo_Param_Def *param; - - _eo_tokenizer_ret_free(&prop->ret); + Eo_Accessor_Def *accessor; if (prop->name) eina_stringshare_del(prop->name); - if (prop->comment) - eina_stringshare_del(prop->comment); EINA_LIST_FREE(prop->params, param) _eo_tokenizer_param_free(param); + EINA_LIST_FREE(prop->accessors, accessor) + _eo_tokenizer_accessor_free(accessor); + free(prop); } |