forked from enlightenment/efl
ecore: we can actually inherit from Efl.Object, just not in the first position.
This commit is contained in:
parent
9b416d2360
commit
37d6bc03fd
|
@ -8,7 +8,7 @@
|
|||
#include <fcntl.h>
|
||||
#include "ecore_private.h"
|
||||
|
||||
#define MY_CLASS EFL_IO_CLOSER_FD_CLASS
|
||||
#define MY_CLASS EFL_IO_CLOSER_FD_MIXIN
|
||||
|
||||
typedef struct _Efl_Io_Closer_Fd_Data
|
||||
{
|
||||
|
@ -16,28 +16,25 @@ typedef struct _Efl_Io_Closer_Fd_Data
|
|||
|
||||
Eina_Bool close_on_exec;
|
||||
Eina_Bool close_on_destructor;
|
||||
Eina_Bool initialized;
|
||||
} Efl_Io_Closer_Fd_Data;
|
||||
|
||||
static void
|
||||
_efl_io_closer_initialize(Efl_Io_Closer_Fd_Data *pd)
|
||||
static Efl_Object *
|
||||
_efl_io_closer_fd_efl_object_constructor(Eo *obj, Efl_Io_Closer_Fd_Data *pd)
|
||||
{
|
||||
if (pd->initialized) return ;
|
||||
pd->fd = -1;
|
||||
pd->initialized = EINA_TRUE;
|
||||
|
||||
return efl_constructor(efl_super(obj, MY_CLASS));
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_io_closer_fd_closer_fd_set(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd, int fd)
|
||||
{
|
||||
_efl_io_closer_initialize(pd);
|
||||
pd->fd = fd;
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
_efl_io_closer_fd_closer_fd_get(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd)
|
||||
{
|
||||
_efl_io_closer_initialize(pd);
|
||||
return pd->fd;
|
||||
}
|
||||
|
||||
|
@ -47,7 +44,6 @@ _efl_io_closer_fd_efl_io_closer_close(Eo *o, Efl_Io_Closer_Fd_Data *pd EINA_UNUS
|
|||
int fd;
|
||||
Eina_Error err = 0;
|
||||
|
||||
_efl_io_closer_initialize(pd);
|
||||
fd = efl_io_closer_fd_get(o);
|
||||
|
||||
EINA_SAFETY_ON_TRUE_RETURN_VAL(fd < 0, EBADF);
|
||||
|
@ -61,15 +57,12 @@ _efl_io_closer_fd_efl_io_closer_close(Eo *o, Efl_Io_Closer_Fd_Data *pd EINA_UNUS
|
|||
EOLIAN static Eina_Bool
|
||||
_efl_io_closer_fd_efl_io_closer_closed_get(Eo *o, Efl_Io_Closer_Fd_Data *pd EINA_UNUSED)
|
||||
{
|
||||
_efl_io_closer_initialize(pd);
|
||||
return efl_io_closer_fd_get(o) < 0;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_io_closer_fd_efl_io_closer_close_on_exec_set(Eo *o, Efl_Io_Closer_Fd_Data *pd, Eina_Bool close_on_exec)
|
||||
{
|
||||
_efl_io_closer_initialize(pd);
|
||||
|
||||
#ifdef _WIN32
|
||||
DBG("close on exec is not supported on windows");
|
||||
pd->close_on_exec = close_on_exec;
|
||||
|
@ -101,8 +94,6 @@ _efl_io_closer_fd_efl_io_closer_close_on_exec_set(Eo *o, Efl_Io_Closer_Fd_Data *
|
|||
EOLIAN static Eina_Bool
|
||||
_efl_io_closer_fd_efl_io_closer_close_on_exec_get(Eo *o, Efl_Io_Closer_Fd_Data *pd)
|
||||
{
|
||||
_efl_io_closer_initialize(pd);
|
||||
|
||||
#ifdef _WIN32
|
||||
return pd->close_on_exec;
|
||||
(void)o;
|
||||
|
@ -130,14 +121,12 @@ _efl_io_closer_fd_efl_io_closer_close_on_exec_get(Eo *o, Efl_Io_Closer_Fd_Data *
|
|||
EOLIAN static void
|
||||
_efl_io_closer_fd_efl_io_closer_close_on_destructor_set(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd, Eina_Bool close_on_destructor)
|
||||
{
|
||||
_efl_io_closer_initialize(pd);
|
||||
pd->close_on_destructor = close_on_destructor;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_io_closer_fd_efl_io_closer_close_on_destructor_get(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd)
|
||||
{
|
||||
_efl_io_closer_initialize(pd);
|
||||
return pd->close_on_destructor;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
mixin Efl.Io.Closer.Fd (Efl.Io.Closer) {
|
||||
mixin Efl.Io.Closer.Fd (Efl.Io.Closer, Efl.Object) {
|
||||
[[Close fd using close(2).
|
||||
|
||||
@since 1.19
|
||||
|
@ -16,6 +16,7 @@ mixin Efl.Io.Closer.Fd (Efl.Io.Closer) {
|
|||
}
|
||||
|
||||
implements {
|
||||
Efl.Object.constructor;
|
||||
Efl.Io.Closer.close;
|
||||
Efl.Io.Closer.closed { get; }
|
||||
Efl.Io.Closer.close_on_exec { get; set; }
|
||||
|
|
Loading…
Reference in New Issue