On 12/04/14 04:40, Daniel Kolesa wrote:
> 2014-12-04 1:16 GMT+00:00 Daniel Zaoui <daniel.za...@samsung.com>:
>> Yo D5,
>>
>> Just for the curiosity, do you have a scenario where we need this?
>>
> Yeah. We found some yesterday with Tom

Hum... My question was not good :-)

Could you share a scenario where we need this? :P

>
>> D2
>>
>> On 12/03/14 17:07, Daniel Kolesa wrote:
>>> q66 pushed a commit to branch master.
>>>
>>> http://git.enlightenment.org/core/efl.git/commit/?id=49aebd063e9a9bebac9ff5d7a9e3ecf7a70712cd
>>>
>>> commit 49aebd063e9a9bebac9ff5d7a9e3ecf7a70712cd
>>> Author: Daniel Kolesa <d.kol...@samsung.com>
>>> Date:   Wed Dec 3 14:59:24 2014 +0000
>>>
>>>     eolian: add eolian_function_is_c_only
>>>
>>>     This function allows us to mark functions that are not bindable.
>>>     Also remove some obsolete code.
>>> ---
>>>  src/lib/eolian/Eolian.h                | 10 +++++
>>>  src/lib/eolian/database_function_api.c |  7 ++++
>>>  src/lib/eolian/eo_lexer.h              |  4 +-
>>>  src/lib/eolian/eo_parser.c             | 77 
>>> +++++++++++++++-------------------
>>>  src/lib/eolian/eolian_database.h       |  1 +
>>>  5 files changed, 54 insertions(+), 45 deletions(-)
>>>
>>> diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
>>> index 42e41c7..9464cdf 100644
>>> --- a/src/lib/eolian/Eolian.h
>>> +++ b/src/lib/eolian/Eolian.h
>>> @@ -874,6 +874,16 @@ EAPI Eina_Bool eolian_function_is_legacy_only(const 
>>> Eolian_Function *function_id
>>>  EAPI Eina_Bool eolian_function_is_class(const Eolian_Function 
>>> *function_id);
>>>
>>>  /*
>>> + * @brief Get whether a function is C only (i.e. not bindable).
>>> + *
>>> + * @param[in] function_id Id of the function
>>> + * @return EINA_TRUE and EINA_FALSE respectively
>>> + *
>>> + * @ingroup Eolian
>>> + */
>>> +EAPI Eina_Bool eolian_function_is_c_only(const Eolian_Function 
>>> *function_id);
>>> +
>>> +/*
>>>   * @brief Indicates if a function is a constructing function of a given 
>>> class.
>>>   *
>>>   * @param[in] klass the class
>>> diff --git a/src/lib/eolian/database_function_api.c 
>>> b/src/lib/eolian/database_function_api.c
>>> index 000dda6..266ae54 100644
>>> --- a/src/lib/eolian/database_function_api.c
>>> +++ b/src/lib/eolian/database_function_api.c
>>> @@ -249,3 +249,10 @@ eolian_function_object_is_const(const Eolian_Function 
>>> *fid)
>>>     EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EINA_FALSE);
>>>     return fid->obj_is_const;
>>>  }
>>> +
>>> +EAPI Eina_Bool
>>> +eolian_function_is_c_only(const Eolian_Function *fid)
>>> +{
>>> +   EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EINA_FALSE);
>>> +   return fid->is_c_only;
>>> +}
>>> diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
>>> index 120e97a..eb1ca97 100644
>>> --- a/src/lib/eolian/eo_lexer.h
>>> +++ b/src/lib/eolian/eo_lexer.h
>>> @@ -29,8 +29,8 @@ enum Tokens
>>>      KW(get), KW(implements), KW(interface), KW(keys), KW(legacy), \
>>>      KW(legacy_prefix), KW(methods), KW(mixin), KW(own), KW(params), \
>>>      KW(properties), KW(set), KW(type), KW(values), KW(var), KWAT(auto), \
>>> -    KWAT(class), KWAT(const), KWAT(const_get), KWAT(const_set), 
>>> KWAT(empty), \
>>> -    KWAT(extern), KWAT(free), KWAT(in), KWAT(inout), KWAT(nonull), \
>>> +    KWAT(c_only), KWAT(class), KWAT(const), KWAT(const_get), 
>>> KWAT(const_set), \
>>> +    KWAT(empty), KWAT(extern), KWAT(free), KWAT(in), KWAT(inout), 
>>> KWAT(nonull), \
>>>      KWAT(optional), KWAT(out), KWAT(private), KWAT(protected), 
>>> KWAT(virtual), \
>>>      KWAT(warn_unused), \
>>>      \
>>> diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
>>> index 0d45bd0..9673c03 100644
>>> --- a/src/lib/eolian/eo_parser.c
>>> +++ b/src/lib/eolian/eo_parser.c
>>> @@ -1276,7 +1276,8 @@ parse_property(Eo_Lexer *ls)
>>>     Eolian_Function *prop = NULL;
>>>     Eina_Bool has_get       = EINA_FALSE, has_set    = EINA_FALSE,
>>>               has_keys      = EINA_FALSE, has_values = EINA_FALSE,
>>> -             has_protected = EINA_FALSE, has_class  = EINA_FALSE;
>>> +             has_protected = EINA_FALSE, has_class  = EINA_FALSE,
>>> +             has_c_only    = EINA_FALSE;
>>>     prop = calloc(1, sizeof(Eolian_Function));
>>>     prop->klass = ls->tmp.kls;
>>>     prop->type = EOLIAN_UNRESOLVED;
>>> @@ -1299,6 +1300,11 @@ parse_property(Eo_Lexer *ls)
>>>          prop->is_class = EINA_TRUE;
>>>          eo_lexer_get(ls);
>>>          break;
>>> +      case KW_at_c_only:
>>> +        CASE_LOCK(ls, c_only, "c_only qualifier");
>>> +        prop->is_c_only = EINA_TRUE;
>>> +        eo_lexer_get(ls);
>>> +        break;
>>>        default:
>>>          goto body;
>>>       }
>>> @@ -1340,14 +1346,14 @@ end:
>>>  }
>>>
>>>  static void
>>> -parse_method(Eo_Lexer *ls, Eina_Bool ctor)
>>> +parse_method(Eo_Lexer *ls)
>>>  {
>>>     int line, col;
>>>     Eolian_Function *meth = NULL;
>>>     Eina_Bool has_const       = EINA_FALSE, has_params = EINA_FALSE,
>>>               has_return      = EINA_FALSE, has_legacy = EINA_FALSE,
>>>               has_protected   = EINA_FALSE, has_class  = EINA_FALSE,
>>> -             has_eo          = EINA_FALSE;
>>> +             has_eo          = EINA_FALSE, has_c_only = EINA_FALSE;
>>>     meth = calloc(1, sizeof(Eolian_Function));
>>>     meth->klass = ls->tmp.kls;
>>>     meth->type = EOLIAN_METHOD;
>>> @@ -1355,48 +1361,33 @@ parse_method(Eo_Lexer *ls, Eina_Bool ctor)
>>>     meth->base.line = ls->line_number;
>>>     meth->base.column = ls->column;
>>>     ls->tmp.kls->methods = eina_list_append(ls->tmp.kls->methods, meth);
>>> -   if (ctor)
>>> +   check(ls, TOK_VALUE);
>>> +   meth->name = eina_stringshare_ref(ls->t.value.s);
>>> +   eo_lexer_get(ls);
>>> +   for (;;) switch (ls->t.kw)
>>>       {
>>> -        if (ls->t.token != TOK_VALUE)
>>> -          eo_lexer_syntax_error(ls, "expected method name");
>>> -        meth->name = eina_stringshare_ref(ls->t.value.s);
>>> +      case KW_at_protected:
>>> +        CASE_LOCK(ls, protected, "protected qualifier")
>>> +        meth->scope = EOLIAN_SCOPE_PROTECTED;
>>>          eo_lexer_get(ls);
>>> -        for (;;) switch (ls->t.kw)
>>> -          {
>>> -           case KW_at_protected:
>>> -             CASE_LOCK(ls, protected, "protected qualifier")
>>> -             meth->scope = EOLIAN_SCOPE_PROTECTED;
>>> -             eo_lexer_get(ls);
>>> -             break;
>>> -           default:
>>> -             goto body;
>>> -          }
>>> -     }
>>> -   else
>>> -     {
>>> -        check(ls, TOK_VALUE);
>>> -        meth->name = eina_stringshare_ref(ls->t.value.s);
>>> +        break;
>>> +      case KW_at_const:
>>> +        CASE_LOCK(ls, const, "const qualifier")
>>> +        meth->obj_is_const = EINA_TRUE;
>>>          eo_lexer_get(ls);
>>> -        for (;;) switch (ls->t.kw)
>>> -          {
>>> -           case KW_at_protected:
>>> -             CASE_LOCK(ls, protected, "protected qualifier")
>>> -             meth->scope = EOLIAN_SCOPE_PROTECTED;
>>> -             eo_lexer_get(ls);
>>> -             break;
>>> -           case KW_at_const:
>>> -             CASE_LOCK(ls, const, "const qualifier")
>>> -             meth->obj_is_const = EINA_TRUE;
>>> -             eo_lexer_get(ls);
>>> -             break;
>>> -           case KW_at_class:
>>> -             CASE_LOCK(ls, class, "class qualifier");
>>> -             meth->is_class = EINA_TRUE;
>>> -             eo_lexer_get(ls);
>>> -             break;
>>> -           default:
>>> -             goto body;
>>> -          }
>>> +        break;
>>> +      case KW_at_class:
>>> +        CASE_LOCK(ls, class, "class qualifier");
>>> +        meth->is_class = EINA_TRUE;
>>> +        eo_lexer_get(ls);
>>> +        break;
>>> +      case KW_at_c_only:
>>> +        CASE_LOCK(ls, c_only, "c_only qualifier");
>>> +        meth->is_c_only = EINA_TRUE;
>>> +        eo_lexer_get(ls);
>>> +        break;
>>> +      default:
>>> +        goto body;
>>>       }
>>>  body:
>>>     line = ls->line_number;
>>> @@ -1671,7 +1662,7 @@ parse_methods(Eo_Lexer *ls)
>>>     line = ls->line_number, col = ls->column;
>>>     check_next(ls, '{');
>>>     while (ls->t.token != '}')
>>> -     parse_method(ls, EINA_FALSE);
>>> +     parse_method(ls);
>>>     check_match(ls, '}', '{', line, col);
>>>  }
>>>
>>> diff --git a/src/lib/eolian/eolian_database.h 
>>> b/src/lib/eolian/eolian_database.h
>>> index e011e11..b12e05a 100644
>>> --- a/src/lib/eolian/eolian_database.h
>>> +++ b/src/lib/eolian/eolian_database.h
>>> @@ -118,6 +118,7 @@ struct _Eolian_Function
>>>     Eina_Bool get_only_legacy: 1;
>>>     Eina_Bool set_only_legacy: 1;
>>>     Eina_Bool is_class :1;
>>> +   Eina_Bool is_c_only :1;
>>>     Eina_List *ctor_of;
>>>     Eolian_Class *klass;
>>>  };
>>>
>>
>> ------------------------------------------------------------------------------
>> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
>> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
>> with Interactivity, Sharing, Native Excel Exports, App Integration & more
>> Get technology previously reserved for billion-dollar corporations, FREE
>> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
>> _______________________________________________
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to