On Tue, Jul 23, 2013 at 12:01 PM, Gustavo Sverzut Barbieri
<[email protected]> wrote:
[snip]
> the con I could see is we loose validation in the caller, you'd need
> to validate in the function... Example:
> eo_do(evas_obj, ecore_timer_interval_set(10.0));
> this would still call directly ecore_timer_interval_set(), which
> internally would get the eo_o, which should be validated and return if
> not right. All in all that would be the case, as
> ecore_timer_interval_set() would need to get the actual method
> (virtual) to call.
Just an idea that might be expanded. What if you change the syntax a bit to:
eo_do(obj
, x = eo_call(ecore_foo) (10.0)
);
This way we can hijack the arguments and the function name in
preprocessor-time using:
#define EO_FUNCTION_ARGS(...) (__eo_obj, ##__VA_ARGS__) };
#define eo_call(F) { F EO_FUNCTION_ARGS
#define eo_do( OBJ, ...) \
do \
{ \
void* __eo_obj = OBJ; \
__VA_ARGS__ \
} \
while(0) \
int ecore_foo(void*, double)
{
return 5;
}
int main()
{
void* obj;
int x;
eo_do(obj
, x = eo_call(ecore_foo) (10.0)
);
}
A few problems: get the function's signature in C so the virtual
method to call can be get and be callable with the arguments
preprocessed; the function name and its arguments must be expanded in
order; it uses the GNU extension of statement expressions.
[snip]
> --
> Gustavo Sverzut Barbieri
> http://profusion.mobi embedded systems
Regards,
--
Felipe Magno de Almeida
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel