Tom Hacohen
d77a7ce468
Eo: eo_do now returns called func's value + default ret fix.
...
It's now completely valid to do:
a = eo_do(obj, a_get());
or:
b = eo_do(obj, a_set(1), b_get());
Also, the default return value for eo2 functions is now also returned
when the object is invalid, not just when the object does not match
class.
It's a small refactor that fixed both issues at once.
@feature
@fix
2014-04-14 10:54:08 +01:00
Tom Hacohen
92cc33c46f
Eo: EO_BASE_CLASS->EO_CLASS.
2014-04-10 04:20:21 +01:00
Tom Hacohen
374af9b9ca
Eo: eo_base's data_*->key_data_*.
2014-04-10 04:20:21 +01:00
Tom Hacohen
c32bb4fe95
Eo2: Updated naming Eo2->Eo.
2014-04-10 04:20:21 +01:00
Tom Hacohen
80faa56ed3
Eo2: Removed more Eo1 code.
2014-04-10 04:20:21 +01:00
Tom Hacohen
3c46e7dab8
Eo2: Removed a lot of Eo1 code.
2014-04-10 04:20:21 +01:00
Jérémy Zurcher
e41f2804b4
eo2: improve err msg in _eo2_api_op_id_get() and _eo2_call_resolve()
2014-04-10 04:20:20 +01:00
Tom Hacohen
055dd3c521
eo2: change the order of EO2_OP_FUNC* to put EAPI first.
...
This looks cleaner and more aligned. Also, it makes more sense as the
internal function is bound to the EAPI and not the other way around.
2014-04-10 04:20:20 +01:00
Tom Hacohen
08aca96bc3
eo2: get rid of eo2_stack_depth_get.
...
This is super internal, no reason why it should be exposed.
We should just implement automatic stack growth.
2014-04-10 04:20:20 +01:00
Tom Hacohen
76dc0d99a6
eo2: formatting.
2014-04-10 04:20:19 +01:00
Tom Hacohen
2fe10219c0
eo2: prefixed internal functions with _.
...
This is done to prevent code completion from picking them up.
2014-04-10 04:20:19 +01:00
Tom Hacohen
ebae305a9e
eo2: fixed validity checks for eo2_do_super.
...
The class should be checked to be valid and non-null.
This fixes the issues with eo_suite.
2014-04-10 04:20:19 +01:00
Tom Hacohen
7c3f7e9b5b
eo2: eo2_do_super should only have one func.
...
This is a limitation that must be respected as eo2_do_super, unlike
eo2_do can end up with having different next class because of mixins.
2014-04-10 04:20:19 +01:00
Tom Hacohen
a62d150c96
eo2: share code between eo2_do and eo2_do_super.
2014-04-10 04:20:19 +01:00
Tom Hacohen
b8ae43b464
eo2: prefix all the eo2_*internal* functions with an underscore.
...
This prevents them from being auto-completed by IDEs which makes
development nicer.
2014-04-10 04:20:19 +01:00
Tom Hacohen
123ebca6d0
eo2: don't create types starting with __, that's reserved.
...
__ is a reserved compiler domain, prefix with _Eo2_ instead.
2014-04-10 04:20:19 +01:00
Tom Hacohen
d0f71a6e8b
eo2: fix eo2_base_class function signatures.
...
"void func(void)" != "void func()" !
The former is a func that accepts 0 parameters.
The latter is a func that accepts variable number of parameters.
Watch out.
2014-04-10 04:20:19 +01:00
Jérémy Zurcher
36c5127822
eo2: add EO2_CLASS_DESCRIPTION_NOOPS() macros
2014-04-10 04:20:18 +01:00
Jérémy Zurcher
23e2c29298
eo2: remove EO2_CLASS_FUNC_* macros
...
there is no more difference in class or regular functions prototypes and definitions
- eo2_api_op_id_get() uses _eo_is_a_class() at runtime
- add 'void *class_data EINA_UNUSED' parameter to eo2_base class functions
- Eo2_Op_Call_Data.klass is kept only for eo2_hook_call_pre end eo2_hook_call_post,
but could be removed easily
2014-04-10 04:20:18 +01:00
Tom Hacohen
f481e8dc64
eo2: fixed EO2_VOID_CLASS_FUNC_BODY function.
2014-04-10 04:20:18 +01:00
Tom Hacohen
5e92ffb121
eo2: improved error messages on failed resolves.
2014-04-10 04:20:18 +01:00
Jérémy Zurcher
eb01d1c3e8
eo2: add EO2_CLASS_CLASS
2014-04-10 04:20:18 +01:00
Jérémy Zurcher
2e9ae2a571
eo2: optimize eo2_call_resolve and call stack
2014-04-10 04:20:18 +01:00
Jérémy Zurcher
e51e397b89
eo2: fix eo_base_data_get(), eo_composite_attach(), eo_composite_detach()
2014-04-10 04:20:18 +01:00
Jérémy Zurcher
782092f7af
eo2: eo2_do() and eo2_do_super() supports objects and classes
2014-04-10 04:20:18 +01:00
Jérémy Zurcher
93f85f095e
eo2: rewrite eo2_do_start(...)
...
we need Eo_Class *cur_klass for eo2_do_super
be sure not to update stack pointer before we can't fail anymore
2014-04-10 04:20:18 +01:00
Jérémy Zurcher
2be91e465a
eo2: change a few variable names
...
in the EPAI, don't show that Eo* could be IDs.
in the implementation, use klass_id and obj_id
if you know or want it to be a class or an object,
use eo_id in general cases.
2014-04-10 04:20:18 +01:00
Jérémy Zurcher
c9ccc700fd
eo2: add eo2_parent_set(), eo2_parent_get(), eo2_children_iterator_new()
...
imported from eo_base_class.c as is in
a7f417e
2013-12-24 23:45:30 +0900 <Carsten Haitzler (Rasterman)>
2014-04-10 04:20:17 +01:00
Jérémy Zurcher
796b151c27
eo2: minor fixes after huge rebase
...
indentation
use _Eo_Object * instead of _Eo *
use EO_CLASS_POINTER_RETURN_VAL(), _eo_id_get(), and _eo_class_id_get().
2014-04-10 04:20:17 +01:00
Cedric Bail
0b279b600e
eo2: we can rely on LD_PRELOAD for those hook, so removing them.
2014-04-10 04:20:17 +01:00
Jérémy Zurcher
7477a51432
eo2: add EO2_HOOK_DO_PREPARE
2014-04-10 04:20:17 +01:00
Cedric Bail
4b97591634
eo2: add hook for beinning and start of all function execution and for all _do.
...
NOTE: I don't know what the _CLASS_FUNC are, so I may have broken stuff there.
2014-04-10 04:20:17 +01:00
Jérémy Zurcher
bbab74320a
eo2: fix eo2 custom constructors
2014-04-10 04:20:17 +01:00
Jérémy Zurcher
ebc90200a6
eo2: sprinkle with 'const'
2014-04-10 04:20:17 +01:00
Jérémy Zurcher
8959832be4
eo2: fixed EO2_CLASS_FUNC_BODY and etc. functions.
2014-04-10 04:20:17 +01:00
Tom Hacohen
2bd03348e3
eo2: revert "fixed EO2_CLASS_FUNC_BODY and etc. functions."
...
Still need to change it to get call earlier. Oversight because
of incomplete make files.
This reverts commit 1ea966c3bef7384a91e386477dc07015ed18d33f.
2014-04-10 04:20:17 +01:00
Tom Hacohen
1db137fa8c
eo2: fixed EO2_CLASS_FUNC_BODY and etc. functions.
2014-04-10 04:20:17 +01:00
Jérémy Zurcher
4f73887b47
eo2: remove EO2_OP_FUNC_VIRTUAL
...
a pure virtual function is an EO2_OP_FUNC
with NULL as private function implementation pointer
2014-04-10 04:20:17 +01:00
Tom Hacohen
feb5a5dc9e
eo2: fix backslash alignment.
...
This is one of the reasons why I hate backslash alignments, you end up
fixing style when you should be working on code.
2014-04-10 04:20:17 +01:00
Tom Hacohen
5f45e57b89
eo2: revert "eo2_add accepts non-defauld constructors"
...
We want to have normal functions as non-default constructors, not va_arg
ones. What we should do is split the object creation to two parts again.
The creation, the constructing (changes using the macro) and the
verification/end part that checks the constructor has been called.
This reverts commit 2ff2ce1894f173b306a896bda595e1a7768c074d.
2014-04-10 04:20:17 +01:00
Jérémy Zurcher
7be0748b34
eo2: implement class function support
2014-04-10 04:20:17 +01:00
Jérémy Zurcher
42ad23c5c8
eo2: eo2_add accepts non-defauld constructors
2014-04-10 04:20:17 +01:00
Jérémy Zurcher
2d5baec80c
eo2: call _eo2_class_funcs_set from _eo_class_constructor
2014-04-10 04:20:16 +01:00
Tom Hacohen
8307ed5aa8
eo2: cleaned up EO2_CLASS_DESCRIPTION_OPS and OP_DESC_SIZE (renamed).
2014-04-10 04:20:16 +01:00
Tom Hacohen
56f48ac817
eo2: fixed dbg_info_get function to accept the correct number of params.
2014-04-10 04:20:16 +01:00
Tom Hacohen
3ae5b846f7
eo2: cleaned up eo2_do macros.
...
cleaned up the cleanup attribute usage.
don't use objid more than once (it's a macro).
2014-04-10 04:20:16 +01:00
Jérémy Zurcher
329d752c59
eo2: do not call eo2_do_end() if eo2_do_start() fail
2014-04-10 04:20:16 +01:00
Jérémy Zurcher
b6991985ed
eo2: eo2_do() uses __attribute__ cleanup
...
to protect us against bad use of break, goto, return ... in eo2_do,
we use __attribute__((cleanup(eo2_do_end))) to ensure that eo2_do_end()
is called whatever.
2014-04-10 04:20:16 +01:00
Jérémy Zurcher
adc1ac0c23
eo2: add eo2_call_stack_depth
2014-04-10 04:20:16 +01:00
Jérémy Zurcher
1aa3b1536f
eo2: add virtual func support
2014-04-10 04:20:16 +01:00