On 29/07/13 14:49, Felipe Magno de Almeida wrote: > 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.
The problem with this, and with eo_call in general is the lack of support for editor auto-completion, which I see as a must. -- Tom. ------------------------------------------------------------------------------ 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
