Adjust the bindings to work with Eo2

This commit is contained in:
Davide Andreoli 2014-04-14 21:41:38 +02:00
parent 6408f8d318
commit cc02387266
3 changed files with 41 additions and 53 deletions

View File

@ -22,13 +22,12 @@ from efl.eina cimport Eina_Bool, \
Eina_Hash, eina_hash_string_superfast_new, eina_hash_add, eina_hash_del, \
eina_hash_find, EINA_LOG_DOM_DBG, EINA_LOG_DOM_INFO
from efl.c_eo cimport Eo as cEo, eo_init, eo_shutdown, eo_del, eo_do, \
eo_class_name_get, eo_class_get, eo_base_data_set, eo_base_data_get, \
eo_base_data_del, eo_event_callback_add, eo_event_callback_del, \
Eo_Event_Description, \
eo_parent_get, EO_EV_DEL, EO_BASE_BASE_ID, eo_base_class_get, \
eo_class_name_get, eo_class_get, eo_base_class_get,\
eo_key_data_set, eo_key_data_get, eo_key_data_del, \
eo_event_callback_add, eo_event_callback_del, EO_EV_DEL, \
eo_parent_get, eo_parent_set, Eo_Event_Description, \
eo_event_freeze, eo_event_thaw, eo_event_freeze_get, \
eo_event_global_freeze, eo_event_global_thaw, eo_event_global_freeze_get, \
eo_parent_set
eo_event_global_freeze, eo_event_global_thaw, eo_event_global_freeze_get
cimport efl.eo.enums as enums
@ -55,23 +54,17 @@ init()
def event_global_freeze_get():
cdef int fcount
eo_do(
<const cEo *>eo_base_class_get(),
eo_event_global_freeze_get(&fcount),
)
fcount = <int>eo_do(<const cEo *>eo_base_class_get(),
eo_event_global_freeze_get())
return fcount
def event_global_freeze():
eo_do(
<const cEo *>eo_base_class_get(),
eo_event_global_freeze(),
)
eo_do(<const cEo *>eo_base_class_get(),
eo_event_global_freeze())
def event_global_thaw():
eo_do(
<const cEo *>eo_base_class_get(),
eo_event_global_thaw()
)
eo_do(<const cEo *>eo_base_class_get(),
eo_event_global_thaw())
######################################################################
@ -114,7 +107,7 @@ cdef object object_from_instance(cEo *obj):
if obj == NULL:
return None
eo_do(obj, eo_base_data_get("python-eo", &data))
data = eo_do(obj, eo_key_data_get("python-eo"))
if data != NULL:
EINA_LOG_DOM_DBG(PY_EFL_EO_LOG_DOMAIN,
"Returning a Python object instance for Eo of type %s.", cls_name)
@ -180,7 +173,8 @@ EO_CALLBACK_CONTINUE = enums.EO_CALLBACK_CONTINUE
cdef Eina_Bool _eo_event_del_cb(void *data, cEo *obj,
const Eo_Event_Description *desc, void *event_info) with gil:
const Eo_Event_Description *desc,
void *event_info) with gil:
cdef:
Eo self = <Eo>data
const char *cls_name = eo_class_name_get(eo_class_get(obj))
@ -189,7 +183,7 @@ cdef Eina_Bool _eo_event_del_cb(void *data, cEo *obj,
eo_do(self.obj,
eo_event_callback_del(EO_EV_DEL, _eo_event_del_cb, <const void *>self))
eo_do(self.obj, eo_base_data_del("python-eo"))
eo_do(self.obj, eo_key_data_del("python-eo"))
self.obj = NULL
Py_DECREF(self)
@ -215,7 +209,7 @@ cdef class Eo(object):
def __repr__(self):
cdef cEo *parent = NULL
if self.obj != NULL:
eo_do(self.obj, eo_parent_get(&parent))
parent = <cEo *>eo_do(self.obj, eo_parent_get())
return ("<%s object (Eo) at %#x (obj=%#x, parent=%#x, refcount=%d)>") % (
type(self).__name__,
<uintptr_t><void *>self,
@ -231,7 +225,7 @@ cdef class Eo(object):
assert obj != NULL, "Cannot set a NULL object"
self.obj = obj
eo_do(self.obj, eo_base_data_set("python-eo", <void *>self, NULL))
eo_do(self.obj, eo_key_data_set("python-eo", <void *>self, NULL))
eo_do(self.obj,
eo_event_callback_add(EO_EV_DEL, _eo_event_del_cb, <const void *>self))
Py_INCREF(self)
@ -282,8 +276,7 @@ cdef class Eo(object):
:rtype: :class:`Eo`
"""
cdef cEo *parent = NULL
eo_do(self.obj, eo_parent_get(&parent))
cdef cEo *parent = <cEo *>eo_do(self.obj, eo_parent_get())
return object_from_instance(parent)
def event_freeze(self):
@ -301,6 +294,5 @@ cdef class Eo(object):
:rtype: int
"""
cdef int fcount
eo_do(self.obj, eo_event_freeze_get(&fcount))
cdef int fcount = <int>eo_do(self.obj, eo_event_freeze_get())
return fcount

View File

@ -28,22 +28,21 @@ cdef extern from "Eo.h":
ctypedef struct Eo_Event_Description:
const char *name
const char *doc
Eina_Bool unfreezable
ctypedef unsigned int Eo_Op
ctypedef Eo_Op EO_BASE_BASE_ID
####################################################################
# Eo Events
#
cdef const Eo_Event_Description *EO_EV_DEL
####################################################################
# Other typedefs
#
ctypedef Eina_Bool (*Eo_Event_Cb)(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info)
ctypedef void (*eo_base_data_free_func)(void *)
ctypedef void (*eo_key_data_free_func)(void *)
####################################################################
@ -58,32 +57,31 @@ cdef extern from "Eo.h":
int eo_ref_get(const Eo *obj)
void eo_del(const Eo *obj)
Eo_Op eo_wref_add(Eo *obj)
void eo_wref_add(Eo **wref)
Eina_Bool eo_do(Eo *obj, ...)
Eina_Bool eo_class_do(Eo_Class *cls, ...)
void *eo_do(Eo *obj, ...)
const Eo_Class *eo_base_class_get()
Eo_Op eo_base_data_set(const char *key, const void *data, eo_base_data_free_func free_func)
Eo_Op eo_base_data_get(const char *key, void **data)
Eo_Op eo_base_data_del(const char *key)
void eo_key_data_set(const char *key, const void *data, eo_key_data_free_func free_func)
void *eo_key_data_get(const char *key)
void eo_key_data_del(const char *key)
const Eo_Class *eo_class_get(const Eo *obj)
const char *eo_class_name_get(const Eo_Class *klass)
Eo_Op eo_parent_set(Eo *parent)
Eo_Op eo_parent_get(Eo **parent)
void eo_parent_set(Eo *parent)
Eo *eo_parent_get()
Eo_Op eo_event_callback_forwarder_add(const Eo_Event_Description *desc, Eo *new_obj)
Eo_Op eo_event_callback_forwarder_del(const Eo_Event_Description *desc, Eo *new_obj)
void eo_event_callback_forwarder_add(const Eo_Event_Description *desc, Eo *new_obj)
void eo_event_callback_forwarder_del(const Eo_Event_Description *desc, Eo *new_obj)
Eo_Op eo_event_freeze()
Eo_Op eo_event_thaw()
Eo_Op eo_event_freeze_get(int *fcount)
void eo_event_freeze()
void eo_event_thaw()
int eo_event_freeze_get()
Eo_Op eo_event_global_freeze()
Eo_Op eo_event_global_thaw()
Eo_Op eo_event_global_freeze_get(int *fcount)
void eo_event_global_freeze()
void eo_event_global_thaw()
int eo_event_global_freeze_get()
Eo_Op eo_event_callback_add(const Eo_Event_Description *desc, Eo_Event_Cb cb, const void *data)
Eo_Op eo_event_callback_del(const Eo_Event_Description *desc, Eo_Event_Cb cb, const void *data)
void eo_event_callback_add(const Eo_Event_Description *desc, Eo_Event_Cb cb, const void *data)
void eo_event_callback_del(const Eo_Event_Description *desc, Eo_Event_Cb cb, const void *data)

View File

@ -1,16 +1,14 @@
#!/usr/bin/env python
from efl import eo
from efl.eo import Eo
eo.init()
import unittest
import os, unittest
class TestBasics(unittest.TestCase):
def setUp(self):
self.o = eo.Eo.__new__(eo.Eo)
self.o = Eo.__new__(Eo)
def tearDown(self):
self.o.delete()