forked from enlightenment/efl
eolian: change composite syntax from block to inheritance section
This makes more sense as these are related to inheritance tree. Therefore, change while we still can. Fixes T8183
This commit is contained in:
parent
690dd5d33a
commit
eb25e92770
|
@ -6,6 +6,10 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements
|
|||
Efl.Ui.Multi_Selectable,
|
||||
Efl.Ui.Focus.Manager_Sub,
|
||||
Efl.Ui.Widget_Focus_Manager
|
||||
composite
|
||||
Efl.Ui.Scrollable_Interactive,
|
||||
Efl.Ui.Scrollbar,
|
||||
Efl.Ui.Focus.Manager
|
||||
{
|
||||
[[This widget displays a list of items in an arrangement controlled by an external @.position_manager
|
||||
object. By using different @.position_manager objects this widget can show unidimensional lists or
|
||||
|
@ -95,10 +99,5 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements
|
|||
item,clicked : Efl.Ui.Item; [[A $clicked event occurred over an item.]]
|
||||
item,clicked,any : Efl.Ui.Item; [[A $clicked,any event occurred over an item.]]
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
Efl.Ui.Scrollbar;
|
||||
Efl.Ui.Focus.Manager;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ struct @extern Elm.Photocam.Progress; [[Photocam progress information.]]
|
|||
class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom,
|
||||
Efl.Ui.Scrollable_Interactive,
|
||||
Efl.Ui.Scrollbar
|
||||
composite Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar
|
||||
{
|
||||
[[Elementary Image Zoomable class]]
|
||||
methods {
|
||||
|
@ -84,8 +85,4 @@ class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom,
|
|||
download,done: void; [[Called when photocam download finished]]
|
||||
download,error: Elm.Photocam.Error; [[Called when photocam download failed]]
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
Efl.Ui.Scrollbar;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,8 @@ struct @beta Efl.Ui.List_View_Item_Event
|
|||
class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar,
|
||||
Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub,
|
||||
Efl.Ui.Container_Selectable, Efl.Ui.List_View_Model, Efl.Ui.Widget_Focus_Manager
|
||||
composite
|
||||
Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar
|
||||
{
|
||||
methods {
|
||||
@property homogeneous {
|
||||
|
@ -90,8 +92,4 @@ class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scroll
|
|||
Efl.Access.Selection.all_children_select;
|
||||
Efl.Access.Selection.access_selection_clear;
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
Efl.Ui.Scrollbar;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ struct @beta Efl.Ui.Panel_Scroll_Info
|
|||
class @beta Efl.Ui.Panel extends Efl.Ui.Layout_Base
|
||||
implements Efl.Ui.Focus.Layer, Efl.Ui.Scrollable_Interactive, Efl.Content,
|
||||
Efl.Access.Widget.Action
|
||||
composite Efl.Ui.Scrollable_Interactive
|
||||
{
|
||||
[[Elementary panel class]]
|
||||
methods {
|
||||
|
@ -93,7 +94,4 @@ class @beta Efl.Ui.Panel extends Efl.Ui.Layout_Base
|
|||
events {
|
||||
toggled: void; [[Called when the hidden state was toggled]]
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class @beta Efl.Ui.Radio_Box extends Efl.Ui.Box implements Efl.Ui.Radio_Group
|
||||
composite Efl.Ui.Radio_Group
|
||||
{
|
||||
[[A standard @Efl.Ui.Box container which automatically handles grouping of any @Efl.Ui.Radio
|
||||
widget added to it.
|
||||
|
@ -19,7 +20,4 @@ class @beta Efl.Ui.Radio_Box extends Efl.Ui.Box implements Efl.Ui.Radio_Group
|
|||
Efl.Pack_Linear.pack_unpack_at;
|
||||
Efl.Object.constructor;
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Radio_Group;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,9 @@ class @beta Efl.Ui.Scroller extends Efl.Ui.Layout_Base implements
|
|||
Efl.Ui.Focus.Manager_Sub,
|
||||
Efl.Ui.Widget_Focus_Manager,
|
||||
Efl.Content
|
||||
composite
|
||||
Efl.Ui.Scrollable_Interactive,
|
||||
Efl.Ui.Scrollbar
|
||||
{
|
||||
[[Efl ui scroller class]]
|
||||
implements {
|
||||
|
@ -19,8 +22,4 @@ class @beta Efl.Ui.Scroller extends Efl.Ui.Layout_Base implements
|
|||
Efl.Ui.Widget_Focus_Manager.focus_manager_create;
|
||||
Efl.Ui.Scrollable_Interactive.match_content { set; }
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Scrollable_Interactive;
|
||||
Efl.Ui.Scrollbar;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base implements Efl.Ui.Single_Selectable, Efl.Pack_Linear
|
||||
class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base
|
||||
implements Efl.Ui.Single_Selectable, Efl.Pack_Linear
|
||||
composite Efl.Pack_Linear, Efl.Pack
|
||||
{
|
||||
[[Tab Bar class]]
|
||||
methods {
|
||||
|
@ -23,9 +25,4 @@ class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base implements Efl.Ui.Single_S
|
|||
Efl.Container.content_count;
|
||||
Efl.Container.content_iterate;
|
||||
}
|
||||
composite {
|
||||
Efl.Pack_Linear;
|
||||
Efl.Pack;
|
||||
Efl.Pack_Linear;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class @beta Efl.Ui.Tags extends Efl.Ui.Layout_Base implements Efl.Text, Efl.Ui.Format
|
||||
class @beta Efl.Ui.Tags extends Efl.Ui.Layout_Base
|
||||
implements Efl.Text, Efl.Ui.Format
|
||||
composite Efl.Text
|
||||
{
|
||||
[[A widget displaying a list of tags. The user can remove tags by clicking
|
||||
on each tag "close" button and add new tags by typing text in the text
|
||||
|
@ -61,7 +63,4 @@ class @beta Efl.Ui.Tags extends Efl.Ui.Layout_Base implements Efl.Text, Efl.Ui.F
|
|||
/* FIXME: Not future-proof */
|
||||
expand,state,changed: int; [[Called when expanded state changed]]
|
||||
}
|
||||
composite {
|
||||
Efl.Text;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@ import elm_general;
|
|||
class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Input.Clickable,
|
||||
Efl.Access.Text, Efl.Access.Editable.Text, Efl.File,
|
||||
Efl.Ui.Text_Selectable, Efl.Text_Interactive, Efl.Text_Markup
|
||||
composite
|
||||
Efl.Text_Interactive, Efl.Text_Markup
|
||||
{
|
||||
[[A flexible text widget which can be static (as a label) or editable by
|
||||
the user (as a text entry). It provides all sorts of editing facilities
|
||||
|
@ -374,8 +376,4 @@ class @beta Efl.Ui.Text extends Efl.Ui.Layout_Base implements Efl.Input.Clickabl
|
|||
anchor,up: Elm.Entry_Anchor_Info; [[called on anchor up]]
|
||||
cursor,changed,manual: void; [[Called on manual cursor change]]
|
||||
}
|
||||
composite {
|
||||
Efl.Text_Interactive;
|
||||
Efl.Text_Markup;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base implements Efl.File, Efl.Player, Efl.Access.Widget.Action
|
||||
class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base
|
||||
implements Efl.File, Efl.Player, Efl.Access.Widget.Action
|
||||
composite Efl.Player
|
||||
{
|
||||
[[Efl UI video class]]
|
||||
methods {
|
||||
|
@ -50,7 +52,4 @@ class @beta Efl.Ui.Video extends Efl.Ui.Layout_Base implements Efl.File, Efl.Pla
|
|||
Efl.Player.stop;
|
||||
Efl.Player.play { get; set; }
|
||||
}
|
||||
composite {
|
||||
Efl.Player;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
mixin Efl.Ui.Widget_Focus_Manager requires Efl.Ui.Widget extends Efl.Ui.Focus.Manager
|
||||
mixin Efl.Ui.Widget_Focus_Manager
|
||||
requires Efl.Ui.Widget
|
||||
extends Efl.Ui.Focus.Manager
|
||||
composite Efl.Ui.Focus.Manager
|
||||
{
|
||||
[[Helper mixin for widgets which also can act as focus managers.
|
||||
|
||||
|
@ -23,7 +26,4 @@ mixin Efl.Ui.Widget_Focus_Manager requires Efl.Ui.Widget extends Efl.Ui.Focus.Ma
|
|||
Efl.Object.destructor;
|
||||
Efl.Ui.Widget.focus_state_apply;
|
||||
}
|
||||
composite {
|
||||
Efl.Ui.Focus.Manager;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -139,6 +139,7 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
|
|||
Efl.Content, Efl.Input.State, Efl.Input.Interface, Efl.Screen,
|
||||
Efl.Text, Efl.Config,
|
||||
Efl.Ui.Widget_Focus_Manager, Efl.Ui.Focus.Manager_Window_Root
|
||||
composite Efl.Config
|
||||
{
|
||||
[[Efl UI window class.
|
||||
|
||||
|
@ -895,7 +896,4 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W
|
|||
pause: void; [[Called when the window is not going be displayed for some time]]
|
||||
resume: void; [[Called before a window is rendered after a pause event]]
|
||||
}
|
||||
composite {
|
||||
Efl.Config;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1958,43 +1958,6 @@ parse_parts(Eo_Lexer *ls)
|
|||
check_match(ls, '}', '{', line, col);
|
||||
}
|
||||
|
||||
static void
|
||||
parse_composite(Eo_Lexer *ls)
|
||||
{
|
||||
int line, col;
|
||||
if (ls->klass->type == EOLIAN_CLASS_INTERFACE)
|
||||
eo_lexer_syntax_error(ls, "composite section not allowed in interfaces");
|
||||
eo_lexer_get(ls);
|
||||
line = ls->line_number, col = ls->column;
|
||||
check_next(ls, '{');
|
||||
while (ls->t.token != '}')
|
||||
{
|
||||
Eina_Strbuf *buf = eina_strbuf_new();
|
||||
eo_lexer_dtor_push(ls, EINA_FREE_CB(eina_strbuf_free), buf);
|
||||
eo_lexer_context_push(ls);
|
||||
parse_name(ls, buf);
|
||||
const char *nm = eina_strbuf_string_get(buf);
|
||||
char *fnm = database_class_to_filename(nm);
|
||||
if (!eina_hash_find(ls->state->filenames_eo, fnm))
|
||||
{
|
||||
free(fnm);
|
||||
char ebuf[PATH_MAX];
|
||||
eo_lexer_context_restore(ls);
|
||||
snprintf(ebuf, sizeof(ebuf), "unknown interface '%s'", nm);
|
||||
eo_lexer_syntax_error(ls, ebuf);
|
||||
return;
|
||||
}
|
||||
/* do not introduce a dependency */
|
||||
database_defer(ls->state, fnm, EINA_FALSE);
|
||||
free(fnm);
|
||||
ls->klass->composite = eina_list_append(ls->klass->composite,
|
||||
eina_stringshare_add(nm));
|
||||
eo_lexer_dtor_pop(ls);
|
||||
check_next(ls, ';');
|
||||
}
|
||||
check_match(ls, '}', '{', line, col);
|
||||
}
|
||||
|
||||
static void
|
||||
parse_implements(Eo_Lexer *ls, Eina_Bool iface)
|
||||
{
|
||||
|
@ -2065,7 +2028,6 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
|
|||
has_data = EINA_FALSE,
|
||||
has_methods = EINA_FALSE,
|
||||
has_parts = EINA_FALSE,
|
||||
has_composite = EINA_FALSE,
|
||||
has_implements = EINA_FALSE,
|
||||
has_constructors = EINA_FALSE,
|
||||
has_events = EINA_FALSE;
|
||||
|
@ -2112,10 +2074,6 @@ parse_class_body(Eo_Lexer *ls, Eolian_Class_Type type)
|
|||
CASE_LOCK(ls, parts, "parts definition")
|
||||
parse_parts(ls);
|
||||
break;
|
||||
case KW_composite:
|
||||
CASE_LOCK(ls, composite, "composite definition")
|
||||
parse_composite(ls);
|
||||
break;
|
||||
case KW_implements:
|
||||
CASE_LOCK(ls, implements, "implements definition")
|
||||
parse_implements(ls, type == EOLIAN_CLASS_INTERFACE);
|
||||
|
@ -2200,6 +2158,7 @@ _requires_add(Eo_Lexer *ls, Eina_Strbuf *buf)
|
|||
const char *required;
|
||||
char *fnm;
|
||||
|
||||
eina_strbuf_reset(buf);
|
||||
eo_lexer_context_push(ls);
|
||||
parse_name(ls, buf);
|
||||
required = eina_strbuf_string_get(buf);
|
||||
|
@ -2212,6 +2171,31 @@ _requires_add(Eo_Lexer *ls, Eina_Strbuf *buf)
|
|||
free(fnm);
|
||||
}
|
||||
|
||||
static void
|
||||
_composite_add(Eo_Lexer *ls, Eina_Strbuf *buf)
|
||||
{
|
||||
eina_strbuf_reset(buf);
|
||||
eo_lexer_context_push(ls);
|
||||
parse_name(ls, buf);
|
||||
const char *nm = eina_strbuf_string_get(buf);
|
||||
char *fnm = database_class_to_filename(nm);
|
||||
if (!eina_hash_find(ls->state->filenames_eo, fnm))
|
||||
{
|
||||
free(fnm);
|
||||
char ebuf[PATH_MAX];
|
||||
eo_lexer_context_restore(ls);
|
||||
snprintf(ebuf, sizeof(ebuf), "unknown interface '%s'", nm);
|
||||
eo_lexer_syntax_error(ls, ebuf);
|
||||
return;
|
||||
}
|
||||
/* do not introduce a dependency */
|
||||
database_defer(ls->state, fnm, EINA_FALSE);
|
||||
free(fnm);
|
||||
ls->klass->composite = eina_list_append(ls->klass->composite,
|
||||
eina_stringshare_add(nm));
|
||||
eo_lexer_context_pop(ls);
|
||||
}
|
||||
|
||||
static void
|
||||
parse_class(Eo_Lexer *ls, Eolian_Class_Type type)
|
||||
{
|
||||
|
@ -2312,6 +2296,17 @@ tags_done:
|
|||
_inherit_dep(ls, ibuf, EINA_FALSE);
|
||||
while (test_next(ls, ','));
|
||||
}
|
||||
|
||||
if (ls->t.kw == KW_composite)
|
||||
{
|
||||
if (type == EOLIAN_CLASS_INTERFACE)
|
||||
eo_lexer_syntax_error(ls, "composite not allowed in interfaces");
|
||||
eo_lexer_get(ls);
|
||||
do
|
||||
_composite_add(ls, ibuf);
|
||||
while (test_next(ls, ','));
|
||||
}
|
||||
|
||||
eo_lexer_dtor_pop(ls);
|
||||
}
|
||||
inherit_done:
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
class Unimpl implements Iface {
|
||||
composite {
|
||||
Iface;
|
||||
}
|
||||
class Unimpl implements Iface composite Iface {
|
||||
implements {
|
||||
Iface.foo;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue