path: root/src/bin/eolian/headers.c
diff options
authorMarcel Hollerbach <>2019-02-09 18:45:27 +0100
committerMarcel Hollerbach <>2019-02-13 16:59:58 +0100
commit37d2d378ec2e2d1f9a3941372ef4d818996291c7 (patch)
treee100879fbdc9ce0d2ce810be81977be97125603b /src/bin/eolian/headers.c
parent3b2a5a429be16e5b8e5d322b7a077a2c849586b8 (diff)
eolian: drop class function overriding
Until this commit eo did class functions as part of the vtable, which enabled those functions to be overwritten in classes inheriting another class. However in task T7675 we decided that this is not really good for bindings, as most OOP languages do not support this sort of feature. After this commit eolian realizes class function completly outside of the vtable, the c-symbol that is the class funciton is now just directly redirecting to a implementation, without the involvement of the vtable. This also means a change to the syntax created by eo: Calling before: class_function(CLASS_A); Calling after: class_function(); Implementation before: class_function(const Eo *obj, void *pd) { ... } Implementation after: class_function(void) { ... } This fixes T7675. Co-authored-by: lauromauro <> Reviewed-by: Daniel Kolesa <> Differential Revision:
Diffstat (limited to 'src/bin/eolian/headers.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/src/bin/eolian/headers.c b/src/bin/eolian/headers.c
index 4ebf9a7..70520fc 100644
--- a/src/bin/eolian/headers.c
+++ b/src/bin/eolian/headers.c
@@ -125,7 +125,7 @@ _gen_func(const Eolian_State *state, const Eolian_Function *fid,
125 eina_stringshare_del(fcn); 125 eina_stringshare_del(fcn);
126 126
127 Eina_Strbuf *flagbuf = NULL; 127 Eina_Strbuf *flagbuf = NULL;
128 int nidx = !legacy || !eolian_function_is_class(fid); 128 int nidx = !eolian_function_is_class(fid);
129 129
130 eina_strbuf_append_char(buf, '('); 130 eina_strbuf_append_char(buf, '(');
131 if (nidx) 131 if (nidx)