legacy_prefix: legacy;
data: Colourable_Data;
methods {
- constructor @constructor {
+ constructor {
/*@ Default constructor. */
legacy: null;
}
- rgb_composite_constructor @constructor {
+ rgb_composite_constructor {
/*@ Composite RGB Constructor. */
legacy: null;
params {
@in int b; /*@ The blue component. */
}
}
- rgb_24bits_constructor @constructor {
+ rgb_24bits_constructor {
/*@ RGB Constructor. */
legacy: null;
params {
}
}
}
+ constructors {
+ .constructor;
+ .rgb_composite_constructor;
+ .rgb_24bits_constructor;
+ }
events {
colour_changed: int;
}
legacy_prefix: legacy;
data: ColourableSquare_Data;
properties {
- size_constructor @constructor {
+ size_constructor {
legacy: null;
params {
@in int size;
methods {
size_print { /*@ Show the square. */ }
}
+ constructors {
+ .size_constructor;
+ }
}
{
eo_prefix: ecore_animator;
methods {
- timeline_constructor @constructor {
+ timeline_constructor {
/*@ Constructor. */
legacy: null;
params {
@in const(void)* data;
}
}
- constructor @constructor {
+ constructor {
/*@ Constructor. */
legacy: null;
params {
Eo.Base.event_freeze;
Eo.Base.event_thaw;
}
+ constructors {
+ .constructor;
+ .timeline_constructor;
+ }
}
{
eo_prefix: ecore_obj_exe;
properties {
- command @constructor {
+ command {
/*@ Control the command that's executed. FIXME: May need a split/rename. */
set {
legacy: null;
Eo.Base.finalize;
Efl.Control.suspend.set;
}
+ constructors {
+ .command;
+ }
events {
data,get: Ecore_Exe_Event_Data;
data,error: Ecore_Exe_Event_Data;
{
eo_prefix: ecore_idle_enterer;
methods {
- before_constructor @constructor {
+ before_constructor {
/*@ Contructor. Will insert the handler at the beginning of the list. */
legacy: null;
params {
@in const(void)* data;
}
}
- after_constructor @constructor {
+ after_constructor {
/*@ Contructor. Will insert the handler at the end of the list. */
legacy: null;
params {
Eo.Base.constructor;
Eo.Base.destructor;
}
+ constructors {
+ .before_constructor;
+ .after_constructor;
+ }
}
{
eo_prefix: ecore_idle_exiter;
methods {
- constructor @constructor {
+ constructor {
/*@ Constructor. */
legacy: null;
params {
Eo.Base.constructor;
Eo.Base.destructor;
}
+ constructors {
+ .constructor;
+ }
}
{
eo_prefix: ecore_idler;
methods {
- constructor @constructor {
+ constructor {
/*@ Constructor. */
legacy: null;
params {
Eo.Base.constructor;
Eo.Base.destructor;
}
+ constructors {
+ .constructor;
+ }
}
{
eo_prefix: ecore_job;
methods {
- constructor @constructor {
+ constructor {
/*@ Constructor. */
legacy: null;
params {
Eo.Base.constructor;
Eo.Base.destructor;
}
+ constructors {
+ .constructor;
+ }
}
class Ecore.Poller (Eo.Base)
{
methods {
- constructor @constructor {
+ constructor {
/*@ Constructor with parameters for Ecore Poller. */
legacy: null;
params {
Eo.Base.constructor;
Eo.Base.destructor;
}
+ constructors {
+ .constructor;
+ }
}
}
}
methods {
- loop_constructor @constructor {
+ loop_constructor {
/*@ Create a timer to call in a given time from now */
legacy: null;
params {
@in const(void)* data; /*@ A pointer to pass to the callback function as its data pointer */
}
}
- constructor @constructor {
+ constructor {
/*@ Create a timer to call in a given time from when the mainloop woke up from sleep */
legacy: null;
params {
*
* @see ecore_timer_freeze()
*/
- }
+ }
+ constructors {
+ .constructor;
+ .loop_constructor;
+ }
}
}
}
methods {
- constructor @constructor {
+ constructor {
/*@ Call the object's constructor.
Should not be used with #eo_do. Only use it with #eo_do_super. */
legacy: null;
class.constructor;
class.destructor;
}
+ constructors {
+ .constructor;
+ }
events {
callback,add; /*@ A callback was added. */
callback,del; /*@ A callback was deleted. */
check_next(ls, '.');
if ((ls->t.token != TOK_VALUE) || (ls->t.kw == KW_get || ls->t.kw == KW_set))
eo_lexer_syntax_error(ls, "name expected");
- impl->full_name = eina_stringshare_add(ls->t.value.s);
+ if (impl->is_virtual)
+ impl->full_name = eina_stringshare_ref(ls->t.value.s);
+ else
+ impl->full_name = eina_stringshare_printf(".%s", ls->t.value.s);
eo_lexer_get(ls);
if (ls->t.token == '.')
{
check_next(ls, '.');
if (ls->t.token != TOK_VALUE)
eo_lexer_syntax_error(ls, "name expected");
- ctor->full_name = eina_stringshare_add(ls->t.value.s);
+ ctor->full_name = eina_stringshare_printf(".%s", ls->t.value.s);
eo_lexer_get(ls);
check_next(ls, ';');
return;
legacy_prefix: null;
data: Evas_3D_Node_Data;
methods {
- constructor @constructor {
+ constructor {
/*@ Constructor. */
legacy: null;
params {
Evas_3D_Object.update_notify;
Evas_3D_Object.change_notify;
}
+ constructors {
+ .constructor;
+ }
}
class Base {
methods {
- constructor @constructor {
+ constructor {
}
destructor {
}
implements {
@virtual .constructor;
}
+ constructors {
+ .constructor;
+ }
}
class Ctor_Dtor (Base) {
methods {
- custom_constructor_1 @constructor {
+ custom_constructor_1 {
params {
@in int a;
@in char b;
}
}
- custom_constructor_2 @constructor {
+ custom_constructor_2 {
}
}
implements {
Base.constructor;
Base.destructor;
}
+ constructors {
+ .custom_constructor_1;
+ .custom_constructor_2;
+ }
}
}
}
methods {
- constructor_1 @constructor {
+ constructor_1 {
params {
@in int a;
@in char b;
}
}
- constructor_2 @constructor {
+ constructor_2 {
}
foo1 {
/*@ comment foo */
@virtual .pure_foo3;
@virtual .b.get;
}
+ constructors {
+ .constructor_1;
+ .constructor_2;
+ }
}
const Eolian_Function *impl_func = NULL;
const Eolian_Class *class, *base;
const Eolian_Implement *impl;
+ const Eolian_Constructor *ctor;
void *dummy;
eolian_init();
eina_iterator_free(iter);
/* Custom ctors/dtors */
- fail_if(!(impl_func = eolian_class_function_get_by_name(base, "constructor", EOLIAN_METHOD)));
- fail_if(!eolian_function_is_constructing(impl_func));
fail_if(!eolian_class_function_get_by_name(base, "destructor", EOLIAN_METHOD));
- fail_if(!(impl_func = eolian_class_function_get_by_name(class, "custom_constructor_1", EOLIAN_METHOD)));
- fail_if(!eolian_function_is_constructing(impl_func));
- fail_if(!(impl_func = eolian_class_function_get_by_name(class, "custom_constructor_2", EOLIAN_METHOD)));
- fail_if(!eolian_function_is_constructing(impl_func));
+ fail_if(!(iter = eolian_class_constructors_get(class)));
+ fail_if(!(eina_iterator_next(iter, (void**)&ctor)));
+ fail_if(!(impl_class = eolian_constructor_class_get(ctor)));
+ fail_if(!(impl_func = eolian_constructor_function_get(ctor)));
+ fail_if(impl_class != class);
+ fail_if(strcmp(eolian_function_name_get(impl_func), "custom_constructor_1"));
+ fail_if(!(eina_iterator_next(iter, (void**)&ctor)));
+ fail_if(!(impl_class = eolian_constructor_class_get(ctor)));
+ fail_if(!(impl_func = eolian_constructor_function_get(ctor)));
+ fail_if(impl_class != class);
+ fail_if(strcmp(eolian_function_name_get(impl_func), "custom_constructor_2"));
+ fail_if(eina_iterator_next(iter, &dummy));
+ eina_iterator_free(iter);
eolian_shutdown();
}
legacy_prefix: null;
data: Callback_Data;
methods {
- default_constructor @constructor {
+ default_constructor {
}
- constructor @constructor {
+ constructor {
params {
@in Ecore_Cb cb;
@in void* data;
}
}
- constructor2 @constructor {
+ constructor2 {
params {
@in Ecore_Cb cb;
@in void* data;
}
}
}
+ constructors {
+ .default_constructor;
+ .constructor;
+ .constructor2;
+ }
events {
call_on_add;
}