methods {
@property fd {
[[Defines which file descriptor to watch. If it is a file, use file_fd variant.]]
- set {
- [[Defines the fd to watch.]]
- }
- get {
- }
- values {
- fd: int; [[The file descriptor.]]
- }
+ set {
+ [[Defines the fd to watch.]]
+ }
+ get {
+ }
+ values {
+ fd: int; [[The file descriptor.]]
+ }
}
@property fd_file {
[[Defines which file descriptor to watch when watching a file.]]
- set {
- [[Defines the fd to watch on.]]
- }
- get {
- }
- values {
- fd: int; [[The file descriptor.]]
- }
+ set {
+ [[Defines the fd to watch on.]]
+ }
+ get {
+ }
+ values {
+ fd: int; [[The file descriptor.]]
+ }
}
}
events {
loop_reset {
[[This effectively resets a timer but based on the time when this iteration of the main loop started.
@since 1.18
- ]]
+ ]]
}
delay {
[[Adds a delay to the next occurrence of a timer.
The progress is not stored and when the function returns it will not be accessed
anymore. The pointer is owned by the caller and will remain so after the return
- of the function call.
- ]]
+ of the function call.
+ ]]
params {
@in p: const(void_ptr); [[Progress to be set]]
- }
+ }
}
@property future {
[[Requests a new future linked to this promise.
- Efl_Future are optional and will be automatically deleted if no callbacks have
- been set before the next iteration of the main loop.
- ]]
+ Efl_Future are optional and will be automatically deleted if no callbacks have
+ been set before the next iteration of the main loop.
+ ]]
get {
- [[The returned new future.]]
+ [[The returned new future.]]
}
values {
f: future<void_ptr, void_ptr>; [[Returns a future where the value will be set by calling value_set whilst the progress is
}
}
@property value {
- [[The value expected by all connected future.]]
+ [[The value expected by all connected future.]]
set {
- [[
+ [[
This function can be called only once. You cannot call #failed.set after doing so.
The value will be owned by the promise until it's destroyed. It will be cleaned
when the promise and all futures depending on it are destroyed.
]]
- }
- values {
- v: void_ptr; [[The pointer to the value.]]
- free_cb: __builtin_free_cb; [[The function to call to free the value.]]
- }
+ }
+ values {
+ v: void_ptr; [[The pointer to the value.]]
+ free_cb: __builtin_free_cb; [[The function to call to free the value.]]
+ }
}
@property failed {
[[Defines the failure state of this promise.]]
- set {
- [[
+ set {
+ [[
This function can be called only once and you cannot call #value.set after doing so.
- ]]
- }
+ ]]
+ }
values {
- err: Eina.Error; [[The reason for failure of this promise.]]
+ err: Eina.Error; [[The reason for failure of this promise.]]
}
}
connect {
This helper will automatically trigger #value.set or #failed.set when the future
succeeds or fails respectively, with the value provided by the future.
- ]]
- params {
- @in f: future<void_ptr, void_ptr>; [[The future to connect to this promise.]]
- }
- return: bool; [[Returns $false if unable to set up the connection.]]
+ ]]
+ params {
+ @in f: future<void_ptr, void_ptr>; [[The future to connect to this promise.]]
+ }
+ return: bool; [[Returns $false if unable to set up the connection.]]
}
}
events {
@property context {
[[Cairo context]]
set {
- }
- get {
- }
- values {
- ctx: ptr(cairo_t); [[Cairo context]]
- }
+ }
+ get {
+ }
+ values {
+ ctx: ptr(cairo_t); [[Cairo context]]
+ }
}
symbol_get {
- [[Lookup symbal name in cairo lib]]
+ [[Lookup symbal name in cairo lib]]
return: void_ptr @warn_unused; [[Pointer to cairo lib with this symbol]]
params {
@in name: string; [[Symbol name]]
[[Ector cairo renderer abstract class]]
methods {
fill @pure_virtual {
- [[Fill operation]]
+ [[Fill operation]]
return: bool; [[$true on success, $false otherwise]]
params {
@in mul_col: uint; [[Premultiplied color]]
@property surface {
[[Surface associated with this renderer]]
set {
- [[Do not use.]]
- }
- get {
- [[Gets the surface associated with this renderer. Can not be set.]]
- }
- values {
- s: Ector.Surface; [[Associated surface]]
- }
+ [[Do not use.]]
+ }
+ get {
+ [[Gets the surface associated with this renderer. Can not be set.]]
+ }
+ values {
+ s: Ector.Surface; [[Associated surface]]
+ }
}
@property transformation {
- [[Transformation property]]
+ [[Transformation property]]
set {
- }
- get {
- }
- values {
- @cref m: Eina.Matrix3; [[Transformation matrix]]
- }
+ }
+ get {
+ }
+ values {
+ @cref m: Eina.Matrix3; [[Transformation matrix]]
+ }
}
@property origin {
- [[Renderer origin]]
+ [[Renderer origin]]
set {
- }
- get {
- }
- values {
- x: double; [[X coordinate]]
- y: double; [[Y coordinate]]
- }
+ }
+ get {
+ }
+ values {
+ x: double; [[X coordinate]]
+ y: double; [[Y coordinate]]
+ }
}
@property visibility {
[[The given Ector renderer can be visible or invisible.]]
set {
- }
- get {
- }
- values {
- v: bool; [[$true to make the object visible, $false otherwise]]
- }
+ }
+ get {
+ }
+ values {
+ v: bool; [[$true to make the object visible, $false otherwise]]
+ }
}
@property color {
[[Retrieves the general/main color of the given Ector renderer.
set {
}
get {
- }
- values {
+ }
+ values {
r: int; [[The red component of the given color.]]
g: int; [[The green component of the given color.]]
b: int; [[The blue component of the given color.]]
a: int; [[The alpha component of the given color.]]
- }
+ }
}
@property mask {
- [[Rendering mask]]
+ [[Rendering mask]]
set {
- }
- get {
- }
- values {
- r: Ector.Renderer; [[Rendering mask]]
- }
+ }
+ get {
+ }
+ values {
+ r: Ector.Renderer; [[Rendering mask]]
+ }
}
@property quality {
[[Quality of the renderer]]
set {
- }
- get {
- }
- values {
- q: Ector.Quality; [[Quality of the renderer]]
- }
+ }
+ get {
+ }
+ values {
+ q: Ector.Quality; [[Quality of the renderer]]
+ }
}
@property crc {
[[Cyclic redundancy check]]
get {
return: uint; [[CRC value]]
- }
+ }
}
bounds_get @pure_virtual {
[[Retrieves the bounds of the renderer]]
- params {
- @out r: Eina.Rect; [[Bounds as @Eina.Rect]]
- }
+ params {
+ @out r: Eina.Rect; [[Bounds as @Eina.Rect]]
+ }
}
draw @pure_virtual {
- [[Actual draw operation]]
+ [[Actual draw operation]]
return: bool; [[$true on success, $false otherwise]]
- params {
- @in op: Efl.Gfx.Render_Op; [[Renderer operation]]
- @in clips: array<ptr(Eina.Rect)>; [[Array of @Eina.Rect clip]]
- @in mul_col: uint; [[Premultiplied color]]
- }
+ params {
+ @in op: Efl.Gfx.Render_Op; [[Renderer operation]]
+ @in clips: array<ptr(Eina.Rect)>; [[Array of @Eina.Rect clip]]
+ @in mul_col: uint; [[Premultiplied color]]
+ }
}
prepare {
- [[Prepare for rendering]]
+ [[Prepare for rendering]]
return: bool; [[$true on success, $false otherwise]]
}
done @pure_virtual {
- [[Done with rendering]]
+ [[Done with rendering]]
return: bool; [[$true on success, $false otherwise]]
}
}
eo_prefix: ector_renderer_shape;
methods {
@property fill {
- [[Fill property]]
+ [[Fill property]]
set {
- }
- get {
- }
- values {
- r: const(Ector.Renderer); [[Ector fill renderer]]
- }
+ }
+ get {
+ }
+ values {
+ r: const(Ector.Renderer); [[Ector fill renderer]]
+ }
}
@property stroke_fill {
- [[Stroke fill property]]
+ [[Stroke fill property]]
set {
- }
- get {
- }
- values {
- r: const(Ector.Renderer); [[Ector stroke fill renderer]]
- }
+ }
+ get {
+ }
+ values {
+ r: const(Ector.Renderer); [[Ector stroke fill renderer]]
+ }
}
@property stroke_marker {
- [[Stroke marker property]]
+ [[Stroke marker property]]
set {
- }
- get {
- }
- values {
- r: const(Ector.Renderer); [[Ector stroke marker renderer]]
- }
+ }
+ get {
+ }
+ values {
+ r: const(Ector.Renderer); [[Ector stroke marker renderer]]
+ }
}
}
}
}
}
push {
- [[Push surface to GPU]]
+ [[Push surface to GPU]]
return: bool; [[$true on success, $false otherwise]]
- params {
- @in flags: uint64; [[GL flags]]
- @in vertex: ptr(GLshort); [[GL vertex]]
- @in vertex_count: uint; [[GL vertex count]]
- @in mul_col: uint; [[Premultiplied color]]
- }
+ params {
+ @in flags: uint64; [[GL flags]]
+ @in vertex: ptr(GLshort); [[GL vertex]]
+ @in vertex_count: uint; [[GL vertex count]]
+ @in mul_col: uint; [[Premultiplied color]]
+ }
}
state_define {
- [[Define state]]
+ [[Define state]]
return: bool; [[$true on success, $false otherwise]]
- params {
+ params {
@in op: Efl.Gfx.Render_Op; [[Render operation]]
- @in clips: array<ptr(Eina.Rect)>; [[Array of @Eina.Rect clip]]
- }
+ @in clips: array<ptr(Eina.Rect)>; [[Array of @Eina.Rect clip]]
+ }
}
}
implements {
[[Ector GL renderer abstract class]]
methods {
fill @pure_virtual {
- [[Fill operation]]
+ [[Fill operation]]
return: bool; [[$true on success, $false otherwise]]
- params {
- @in flags: uint64; [[GL flags]]
- @in vertex: ptr(GLshort); [[GL vertex]]
- @in vertex_count: uint; [[GL vertex count]]
- @in mul_col: uint; [[Premultiplied color]]
- }
+ params {
+ @in flags: uint64; [[GL flags]]
+ @in vertex: ptr(GLshort); [[GL vertex]]
+ @in vertex_count: uint; [[GL vertex count]]
+ @in mul_col: uint; [[Premultiplied color]]
+ }
}
}
implements {
data: null;
methods {
fill @pure_virtual {
- [[Renderer fill operation]]
+ [[Renderer fill operation]]
return: bool; [[$true on success, $false otherwise]]
}
}
]]
methods {
@property device_type {
- [[Device type property]]
+ [[Device type property]]
values {
klass: Efl.Input.Device.Type; [[Input device class]]
}
}
@property source {
- [[Device source property]]
+ [[Device source property]]
values {
src: Efl.Input.Device; [[Input device]]
}
set @protected { }
values {
can_read: bool; [[$true if it can be read without blocking or failing, $false
- otherwise]]
+ otherwise]]
}
}
set @protected { }
values {
can_write: bool; [[$true if it can be written without blocking or failure, $false
- otherwise]]
+ otherwise]]
}
}
}
}
}
@property table_columns {
- [[Gird columns property]]
+ [[Gird columns property]]
set { [[Specifies limit for linear adds - if direction is horizontal]] }
get {}
values {
}
}
@property table_rows {
- [[Table rows property]]
+ [[Table rows property]]
set { [[Specifies limit for linear adds - if direction is vertical]] }
get {}
values {
}
@property backing_type {
- [[Enable or disable backing type]]
+ [[Enable or disable backing type]]
values
{
type: Efl.Text.Style.Backing_Type; [[Backing type]]
}
@property backing_color {
- [[Backing color]]
+ [[Backing color]]
values
{
r: ubyte; [[Red component]]
]]
params {
@in path: string; [[Path we want to list entries for]]
- paths: EflIoPath; [[Callback called for each packet of files found]]
+ paths: EflIoPath; [[Callback called for each packet of files found]]
}
return: ptr(Eina.Future) @owned; [[Amount of files found during the listing of the directory]]
}
[[Lists all extended attributes asynchronously.]]
params {
@in path: string; [[Path we want to list entries for]]
- paths: EflIoPath; [[Callback called for each packet of extended attributes found.]]
+ paths: EflIoPath; [[Callback called for each packet of extended attributes found.]]
}
return: ptr(Eina.Future) @owned; [[Amount of extended attributes found]]
}
}
}
event_emit @class @protected @beta {
- [[Emit event]]
+ [[Emit event]]
params {
@in accessible: Efl.Access; [[Accessibility object.]]
@cref event: Efl.Event.Description; [[Accessibility event type.]]
}
}
contains @protected @beta {
- [[Contains accessible widget]]
+ [[Contains accessible widget]]
params {
screen_coords: bool; [[If $true x and y values will be relative to
screen origin, otherwise relative to canvas]]
}
}
@property caret_offset @protected @beta {
- [[Caret offset property]]
+ [[Caret offset property]]
get {
[[Gets offset position of caret (cursor)]]
}
}
}
@property default_attributes @protected @beta {
- [[Default attributes]]
+ [[Default attributes]]
get {
}
values {
}
}
@property character_extents @protected @beta {
- [[Character extents]]
+ [[Character extents]]
get {
return: bool; [[$true if character extents, $false otherwise]]
}
}
}
@property character_count @protected @beta {
- [[Character count]]
+ [[Character count]]
get {
}
values {
}
}
@property offset_at_point @protected @beta {
- [[Offset at given point]]
+ [[Offset at given point]]
get {
}
keys {
}
}
@property bounded_ranges @protected @beta {
- [[Bounded ranges]]
+ [[Bounded ranges]]
get {
}
keys {
}
}
@property range_extents @protected @beta {
- [[Range extents]]
+ [[Range extents]]
get {
return: bool; [[$true if range extents, $false otherwise]]
}
[[Elementary Access value interface]]
methods {
@property value_and_text @protected @beta {
- [[Value and text property]]
+ [[Value and text property]]
get {
[[Gets value displayed by a accessible widget.]]
}
[[A custom layout engine for @Efl.Ui.Box.]]
methods {
@property box_flow_homogenous {
- [[Box flow homogenous property]]
+ [[Box flow homogenous property]]
set {}
get {}
values {
}
}
@property box_flow_max_size {
- [[Box flow maximum size property]]
+ [[Box flow maximum size property]]
set {}
get {}
values {
Efl.Orientation.flip { get; set; }
Efl.Layout.Group.group_size_min { get; }
Efl.Layout.Group.group_size_max { get; }
- Efl.Layout.Signal.signal_callback_add;
- Efl.Layout.Signal.signal_callback_del;
+ Efl.Layout.Signal.signal_callback_add;
+ Efl.Layout.Signal.signal_callback_del;
//Efl.Canvas.Layout_Group.group_data { get; }
}
events {
methods {
/* FIXME: Remove this. */
@property real_part @protected {
- [[Real part property]]
+ [[Real part property]]
set {}
values {
layout: Efl.Object; [[Real part object]]
methods {
/* FIXME: Remove this. */
@property real_part @protected {
- [[Real part property]]
+ [[Real part property]]
set {}
values {
layout: Efl.Object; [[Real part object]]
}
values {
expanded: bool; [[The value of expanded state. Set this to $true for expanded state. Set
- this to $false for single line state.]]
+ this to $false for single line state.]]
}
}
@property items {
[[Activate widget]]
}
@property count {
- [[Maximum number of states]]
+ [[Maximum number of states]]
set {
}
get {
[[Elementary pan class]]
methods {
@property pan_position {
- [[Position]]
+ [[Position]]
set {
}
get {
}
}
@property content_size {
- [[Content size]]
+ [[Content size]]
get {
}
values {
- size: Eina.Size2D;
+ size: Eina.Size2D;
}
}
@property pan_position_min {
- [[The minimal position to scroll]]
+ [[The minimal position to scroll]]
get {
}
values {
- pos: Eina.Position2D;
+ pos: Eina.Position2D;
}
}
@property pan_position_max {
- [[The maximal position to scroll]]
+ [[The maximal position to scroll]]
get {
}
values {
- pos: Eina.Position2D;
+ pos: Eina.Position2D;
}
}
}
eo_prefix: efl_ui_scroll_manager;
methods {
@property pan @protected {
- [[This is the internal canvas object managed by scroll manager.
-
- This property is protected as it is meant for scrollable object
- implementations only, to set and access the internal canvas object.
- If pan is set to NULL, scrolling does not work.
- ]]
+ [[This is the internal canvas object managed by scroll manager.
+
+ This property is protected as it is meant for scrollable object
+ implementations only, to set and access the internal canvas object.
+ If pan is set to NULL, scrolling does not work.
+ ]]
set {
}
values {
class Efl.Ui.Spin_Button (Efl.Ui.Spin, Efl.Ui.Focus.Composition,
- Efl.Access.Value, Efl.Access.Widget.Action)
+ Efl.Access.Value, Efl.Access.Widget.Action)
{
[[A Button Spin.
}
}
line_refresh {
- [[Refresh code line in widget]]
+ [[Refresh code line in widget]]
params {
line: ptr(Elm_Code_Line); [[The line to refresh.]]
}
return: bool; [[$true if the line specified is currently visible within the scroll region.]]
}
lines_visible_get {
- [[Get the number of code lines currently visible in the widget]]
+ [[Get the number of code lines currently visible in the widget]]
return: uint; [[the number of lines currently visible in the widget.]]
}
position_at_coordinates_get {
}
text_left_gutter_width_get {
- [[Get the column width of the gutter]]
+ [[Get the column width of the gutter]]
return: int; [[The current column width of the gutter for the widget.]]
}
text_between_positions_get {
- [[Get text between given positions]]
+ [[Get text between given positions]]
params {
start_line: uint; [[The line of the first character to get]]
start_col: uint; [[The widget column of the first character to get]]
}
line_text_column_width_to_position {
- [[Get text column width at given position]]
+ [[Get text column width at given position]]
params {
line: ptr(Elm_Code_Line); [[Code line]]
position: uint; [[Code position]]
return: uint; [[Text column width]]
}
line_text_column_width_get {
- [[Get text column width for code line]]
+ [[Get text column width for code line]]
params {
line: ptr(Elm_Code_Line); [[Code line]]
}
return: uint; [[Text column width]]
}
line_text_position_for_column_get {
- [[Get position from column]]
+ [[Get position from column]]
params {
line: ptr(Elm_Code_Line); [[Code line]]
column: uint; [[Column]]
return: uint; [[Position]]
}
text_tabwidth_at_column_get {
- [[Get tabwidth for column]]
+ [[Get tabwidth for column]]
params {
column: uint; [[Column]]
}
eo_prefix: elm_obj_ctxpopup_item;
methods {
init {
- [[Init context popup item]]
+ [[Init context popup item]]
params {
func: Evas_Smart_Cb @nullable; [[Smart callback function]]
data: const(void_ptr) @optional; [[Data pointer]]
}
}
@property current_name {
- [[ Current name property]]
+ [[ Current name property]]
set {
}
get {
}
}
@property momentum_animator_disabled {
- [[Momentum animator]]
+ [[Momentum animator]]
set {
}
get {
}
}
@property bounce_animator_disabled {
- [[Bounce animator]]
+ [[Bounce animator]]
set {
}
get {
}
}
@property page_scroll_limit {
- [[Page scroll limit]]
+ [[Page scroll limit]]
set {
}
get {
}
}
@property paging {
- [[Pagin property]]
+ [[Pagin property]]
set {
}
get {
}
}
@property step_size {
- [[Step size]]
+ [[Step size]]
set {
}
get {
}
}
@property freeze {
- [[Freeze property]]
+ [[Freeze property]]
set {
}
values {
}
}
@property extern_pan {
- [[Extern pan]]
+ [[Extern pan]]
set {
}
values {
}
}
@property hold {
- [[Hold property]]
+ [[Hold property]]
set {
}
values {
}
}
@property mirrored {
- [[Mirroed property]]
+ [[Mirroed property]]
set {
}
values {
}
}
@property content_min_limit_cb {
- [[set the callback to run on minimal limit content]]
+ [[set the callback to run on minimal limit content]]
set {
}
values {
}
}
@property scrollable_content {
- [[Content property]]
+ [[Content property]]
set {
}
values {
}
}
@property objects {
- [[Object property]]
+ [[Object property]]
set {
}
values {
}
}
@property content_viewport_geometry {
- [[Content viewport geometry]]
+ [[Content viewport geometry]]
get {
}
values {
}
}
content_pos_set {
- [[Set the content position]]
+ [[Set the content position]]
params {
@in x: int; [[X coordinate]]
@in y: int; [[Y coordinate]]
}
}
content_pos_get {
- [[Get content position]]
+ [[Get content position]]
params {
@out x: int; [[X coordinate]]
@out y: int; [[Y coordinate]]
data: Elm_Pan_Smart_Data;
methods {
@property pos {
- [[Position]]
+ [[Position]]
set {
}
get {
}
}
@property content_size {
- [[Content size]]
+ [[Content size]]
get {
}
values {
}
}
@property pos_min {
- [[Minimal position]]
+ [[Minimal position]]
get {
}
values {
}
}
@property pos_max {
- [[Maximal position]]
+ [[Maximal position]]
get {
}
values {
@since 1.8]]
}
disable @protected {
- [[Disable widget item]]
+ [[Disable widget item]]
legacy: null;
}
del_pre @protected {
- [[Delete pre widget item]]
+ [[Delete pre widget item]]
legacy: null;
return: bool; [[$true on success, $false otherwise]]
}
return: bool; [[Indicates success from the object render function.]]
params {
filter: void_ptr; [[Current filter context]]
- engine: void_ptr; [[Engine context]]
- output: void_ptr; [[Output context]]
+ engine: void_ptr; [[Engine context]]
+ output: void_ptr; [[Output context]]
drawctx: void_ptr; [[Draw context (for evas engine)]]
- data: void_ptr; [[Private data used by textblock]]
+ data: void_ptr; [[Private data used by textblock]]
l: int; [[Left]]
r: int; [[Right]]
t: int; [[Top]]
legacy_prefix: evas_vg_container;
methods {
child_get {
- [[Get child of container]]
+ [[Get child of container]]
params {
@in name: string; [[Child node name]]
}
return: Efl.VG; [[Child object]]
}
children_get {
- [[Get all children of container]]
+ [[Get all children of container]]
return: iterator<Efl.VG> @owned @warn_unused; [[Iterator to children]]
}
}
legacy_prefix: evas_vg_shape;
methods {
@property fill {
- [[Fill of the shape object]]
+ [[Fill of the shape object]]
set {
- }
- get {
- }
- values {
- f: Efl.VG; [[Fill object]]
- }
+ }
+ get {
+ }
+ values {
+ f: Efl.VG; [[Fill object]]
+ }
}
@property stroke_fill {
- [[Stroke fill of the shape object]]
+ [[Stroke fill of the shape object]]
set {
- }
- get {
- }
- values {
- f: Efl.VG; [[Stroke fill object]]
- }
+ }
+ get {
+ }
+ values {
+ f: Efl.VG; [[Stroke fill object]]
+ }
}
@property stroke_marker {
- [[Stroke marker of the shape object]]
+ [[Stroke marker of the shape object]]
set {
- }
- get {
- }
- values {
- m: Efl.VG; [[Stroke marker object]]
- }
+ }
+ get {
+ }
+ values {
+ m: Efl.VG; [[Stroke marker object]]
+ }
}
}
implements {
]]
}
objects_in_rectangle_get @const {
- [[Get all objects in the given rectangle]]
+ [[Get all objects in the given rectangle]]
return: list<Efl.Canvas.Object> @warn_unused; [[List of objects]]
params {
@in x: int; [[X coordinate]]
}
}
@property max_descent {
- [[Maximal descent property]]
+ [[Maximal descent property]]
get {
return: int; [[Evas coordinate]]
}
}
}
@property ascent {
- [[Ascent property]]
+ [[Ascent property]]
get {
return: int; [[Evas coordinate]]
}
}
@property horiz_advance {
- [[Horizontal advance property]]
+ [[Horizontal advance property]]
get {
return: int; [[Evas coordinate]]
}
}
@property inset {
- [[Inset property]]
+ [[Inset property]]
get {
return: int; [[Evas coordinate]]
}
}
@property max_ascent {
- [[Maximal ascent property]]
+ [[Maximal ascent property]]
get {
return: int; [[Evas coordinate]]
}
}
@property vert_advance {
- [[Vertical advance property]]
+ [[Vertical advance property]]
get {
return: int; [[Evas coordinate]]
}
}
@property descent {
- [[descent property]]
+ [[descent property]]
get {
return: int; [[Evas coordinate]]
}
}
}
char_coords_get @const {
- [[Get character coordinates]]
+ [[Get character coordinates]]
return: int; [[Logical position of char]]
params {
@in x: int; [[X coordinate]]