summaryrefslogtreecommitdiff
path: root/src/lib/eo
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2019-02-09 18:45:27 +0100
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2019-02-13 16:59:58 +0100
commit37d2d378ec2e2d1f9a3941372ef4d818996291c7 (patch)
treee100879fbdc9ce0d2ce810be81977be97125603b /src/lib/eo
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 <lauromoura@expertisesolutions.com.br> Reviewed-by: Daniel Kolesa <daniel@octaforge.org> Differential Revision: https://phab.enlightenment.org/D7901
Diffstat (limited to 'src/lib/eo')
-rw-r--r--src/lib/eo/eo_base_class.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
index 63074cce17..9e33e6e3a0 100644
--- a/src/lib/eo/eo_base_class.c
+++ b/src/lib/eo/eo_base_class.c
@@ -1850,13 +1850,13 @@ _efl_object_event_freeze_count_get(const Eo *obj EINA_UNUSED, Efl_Object_Data *p
1850} 1850}
1851 1851
1852EOLIAN static void 1852EOLIAN static void
1853_efl_object_event_global_freeze(Eo *klass EINA_UNUSED, void *pd EINA_UNUSED) 1853_efl_object_event_global_freeze(void)
1854{ 1854{
1855 event_freeze_count++; 1855 event_freeze_count++;
1856} 1856}
1857 1857
1858EOLIAN static void 1858EOLIAN static void
1859_efl_object_event_global_thaw(Eo *klass EINA_UNUSED, void *pd EINA_UNUSED) 1859_efl_object_event_global_thaw(void)
1860{ 1860{
1861 if (event_freeze_count > 0) 1861 if (event_freeze_count > 0)
1862 { 1862 {
@@ -1869,7 +1869,7 @@ _efl_object_event_global_thaw(Eo *klass EINA_UNUSED, void *pd EINA_UNUSED)
1869} 1869}
1870 1870
1871EOLIAN static int 1871EOLIAN static int
1872_efl_object_event_global_freeze_count_get(const Eo *klass EINA_UNUSED, void *pd EINA_UNUSED) 1872_efl_object_event_global_freeze_count_get(void)
1873{ 1873{
1874 return event_freeze_count; 1874 return event_freeze_count;
1875} 1875}