docs: Update evas canvas eo files for grammar and readability

Author: Nate Drake
This commit is contained in:
Andy Williams 2017-12-22 13:45:48 +00:00
parent 9a4eedb078
commit 6ecad5b873
14 changed files with 100 additions and 100 deletions

View File

@ -93,11 +93,11 @@ mixin Efl.Canvas.Filter.Internal (Efl.Gfx.Filter, Efl.Object)
b: int; [[Bottom]]
x: int; [[X offset]]
y: int; [[Y offset]]
do_async: bool; [[$true when the operation should be done asynchronous, $false otherwise]]
do_async: bool; [[$true when the operation should be done asynchronously, $false otherwise]]
}
}
filter_dirty @protected @pure_virtual {
[[Called when the filter changes must trigger a redraw of the object.
[[Called when filter changes must trigger a redraw of the object.
Virtual, to be implemented in the parent class.
]]

View File

@ -1,28 +1,28 @@
class Efl.Canvas.Group (Efl.Canvas.Object)
{
[[A group object is a container of other canvas objects. Its children
move along their parent, are often clipped with a common clipper.
[[A group object is a container for other canvas objects. Its children
move along their parent and are often clipped with a common clipper.
This is part of the legacy smart object concept.
A group is not necessarily a container (see @Efl.Container), in the
sense that a standard widget may not have any empty slots for content,
but is still a group of low-level canvas objects (clipper, raw objects,
etc...).
A group is not necessarily a container (see @Efl.Container) in the
sense that a standard widget may not have any empty slots for content.
However it's still a group of low-level canvas objects (clipper, raw objects,
etc.).
]]
legacy_prefix: evas_object_smart;
data: Evas_Smart_Data;
methods {
@property group_need_recalculate {
[[Indicates that the group's layout need to be recalculated.
[[Indicates that the group's layout needs to be recalculated.
If this flag is set, then the @.group_calculate function will
be called, during rendering phase of the canvas. After that,
this flag will be automatically unset.
Note: just setting this flag will not make the canvas' whole scene
dirty, by itself, and evas_render() will have no effect. To
force that, use @.group_change, that will also call this function
automatically, with $true as parameter.
Note: setting this flag alone will not make the canvas' whole scene
dirty. Using evas_render() will have no effect. To
force this, use @.group_change, which will also call this function
automatically, with the parameter set to $true.
See also @.group_calculate.
]]
@ -53,7 +53,7 @@ class Efl.Canvas.Group (Efl.Canvas.Object)
legacy: evas_object_smart_calculate;
}
group_members_iterate @const {
[[Returns an iterator over the children of this object, that are
[[Returns an iterator over the children of this object, which are
canvas objects.
This returns the list of "smart" children. This might be different

View File

@ -68,7 +68,7 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, E
Please do not assume that @Efl.Gfx.Render_Op.copy mode can be
used to "poke" holes in a window (to see through it), as only the
compositor can ensure that. Copy mode should only be used with
otherwise opaque widgets, or inside non-window surfaces (eg. a
otherwise opaque widgets or inside non-window surfaces (eg. a
transparent background inside a buffer canvas).
]]
set {
@ -85,17 +85,17 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, E
set {
[[Set whether an Evas object is to freeze (discard) events.
If $freeze is $true, it will make events on $obj to be
If $freeze is $true, it will force events on $obj to be
discarded. Unlike @.pass_events.set, events will not be
passed to next lower object. This API can be used for
blocking events while $obj is on transiting.
blocking events while $obj is in transition.
If $freeze is $false, events will be processed on that
object as normal.
Warning: If you block only key/mouse up events with this API,
we won't guarantee the state of the object, that only had
key/mouse down events, will be.
you can't be sure of the state of any objects that have only
key/mouse down events.
@since 1.1
]]
@ -239,8 +239,8 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, E
seat_focus_add {
[[ Add a seat to the focus list.
Evas supports that an Efl.Canvas.Object may be focused by multiple seats
at the same time. This function adds a new seat to the focus list, in other words,
Evas allows the Efl.Canvas.Object to be focused by multiple seats
at the same time. This function adds a new seat to the focus list. In other words,
after the seat is added to the list this object will now be also focused by this new seat.
This function generates an \@ref EFL_CANVAS_OBJECT_EVENT_FOCUS_DEVICE_IN event.
@ -319,7 +319,7 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, E
}
@property propagate_events {
set {
[[Set whether events on a smart object's member should get
[[Set whether events on a smart object's member should be
propagated up to its parent.
This function has no effect if $obj is not a member of a
@ -355,7 +355,7 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, E
They will be triggered on the next lower object (that is not
set to pass events), instead (see \@ref evas_object_below_get).
If $pass is $false, events will be processed on that object
If $pass is $false events will be processed on that object
as normal.
See also @.repeat_events.set, @.propagate_events.set,
@ -402,7 +402,7 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, E
get {
[[Return a list of objects currently clipped by $obj.
This returns the internal list handle that contains all
This returns the internal list handle containing all
objects clipped by the object $obj. If none are clipped by
it, the call returns $null. This list is only valid until
the clip list is changed and should be fetched again with
@ -531,7 +531,7 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, E
This flag will be used to indicate to Evas that this object
should never be rendered on the canvas under any
circurmstances. In particular, this is useful to avoid
circumstances. In particular, this is useful to avoid
drawing clipper objects (or masks) even when they don't
clip any object. This can also be used to replace the old
source_visible flag with proxy objects.

View File

@ -12,9 +12,9 @@ class Efl.Canvas.Object.Event.Grabber (Efl.Canvas.Group)
Child objects are not modified in any way, unlike other types of smart objects.
It is a user error for any child objects to be stacked above the event
grabber parent while the event grabber is visible.
A critical error will be raised if this is detected at any point.
No child objects should be stacked above the event
grabber parent while the grabber is visible.
A critical error will be raised if this is detected.
@since 1.20
]]

View File

@ -25,8 +25,8 @@ class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties,
visible_range_get {
[[Returns the currently visible range.
The given $start and $end cursor act like an out-variables here,
as these are set to the positions of the start and the end of the
The given $start and $end cursor act like out-variables here,
as they are set to the positions of the start and the end of the
visible range in the text, respectively.
@since 1.18
@ -54,7 +54,7 @@ class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties,
}
@property bidi_delimiters {
[[BiDi delimiters are used for in-paragraph separation of bidi
segments. This is useful for example in recipients fields of
segments. This is useful, for example, in the recipient fields of
e-mail clients where bidi oddities can occur when mixing RTL
and LTR.

View File

@ -80,7 +80,7 @@ mixin Efl.Gfx.Map (Efl.Interface, Efl.Object)
This sets alpha flag for map rendering. If the object is a type that
has its own alpha settings, then this will take precedence. Only
image objects support this currently (@Efl.Canvas.Image and its
friends). Setting this off stops alpha blending of the map area,
friends). Setting this to off stops alpha blending of the map area,
and is useful if you know the object and/or all sub-objects is 100%
solid.
@ -96,8 +96,8 @@ mixin Efl.Gfx.Map (Efl.Interface, Efl.Object)
This sets/gets the fixed point's coordinate in the map. Note that points
describe the outline of a quadrangle and are ordered either clockwise
or counter-clockwise. It is suggested to keep your quadrangles concave and
non-complex, though these polygon modes may work, they may not render
or counter-clockwise. Try to keep your quadrangles concave and
non-complex. Though these polygon modes may work, they may not render
a desired set of output. The quadrangle will use points 0 and 1 , 1 and 2,
2 and 3, and 3 and 0 to describe the edges of the quadrangle.
@ -106,7 +106,7 @@ mixin Efl.Gfx.Map (Efl.Interface, Efl.Object)
X and Y rendered coordinates. It may be used for calculating fills with
perspective correct rendering.
Remember all coordinates are canvas global ones like with move and resize
Remember all coordinates are canvas global ones as with move and resize
in the canvas.
This property can be read to get the 4 points positions on the
@ -206,8 +206,8 @@ mixin Efl.Gfx.Map (Efl.Interface, Efl.Object)
rotate_3d {
[[Rotate the object around 3 axes in 3D.
This will rotate in 3D and not just around the "Z" axis as the case
with @.rotate. This will rotate around the X, Y and Z axes. The
This will rotate in 3D, not just around the "Z" axis as is the case
with @.rotate. You can rotate around the X, Y and Z axes. The
Z axis points "into" the screen with low values at the screen and
higher values further away. The X axis runs from left to right on
the screen and the Y axis from top to bottom.
@ -271,7 +271,7 @@ mixin Efl.Gfx.Map (Efl.Interface, Efl.Object)
}
}
lightning_3d {
[[Apply a lightning effect on the object.
[[Apply a lighting effect on the object.
This is used to apply lighting calculations (from a single light
source) to a given mapped object. The R, G and B values of each
@ -310,7 +310,7 @@ mixin Efl.Gfx.Map (Efl.Interface, Efl.Object)
mapping between spatial coordinates and screen coordinates. Any points
on this z value will not have their X and Y values modified in the transform.
Those further away (Z value higher) will shrink into the distance, and
those less than this value will expand and become bigger. The $foc value
those under this value will expand and become bigger. The $foc value
determines the "focal length" of the camera. This is in reality the distance
between the camera lens plane itself (at or closer than this rendering
results are undefined) and the "z0" z value. This allows for some "depth"
@ -411,12 +411,12 @@ mixin Efl.Gfx.Map (Efl.Interface, Efl.Object)
}
}
lightning_3d_absolute {
[[Apply a lightning effect on the object.
[[Apply a lighting effect to the object.
This is used to apply lighting calculations (from a single light
source) to a given mapped object. The R, G and B values of each
source) to a given mapped object. The RGB values of each
vertex will be modified to reflect the lighting based on the light
point coordinates, the light color and the ambient color, and at
point coordinates, the light color, the ambient color and at
what angle the map is facing the light source. A surface should have
its points be declared in a clockwise fashion if the face is
"facing" towards you (as opposed to away from you) as faces have a

View File

@ -8,17 +8,17 @@ abstract Efl.VG (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, Efl.Duplicat
methods {
@property name {
set {
[[Set an unique name from the parent point of view. $null means
[[Set an unique name from the parent's point of view. $null means
no name.
@since 1.16
]]
}
get {
[[Get an unique name from the parent point of view.
[[Get an unique name from the parent's point of view.
$null means no name. When set a parent after the name what
defined, it might be forced back to $null if the parent
$null means no name. When setting a parent after a name has
already been defined, it might be forced back to $null if the parent
already has a node of that name.
@since 1.16
@ -47,14 +47,14 @@ abstract Efl.VG (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, Efl.Duplicat
}
@property origin {
set {
[[Sets the origin position of this node object.
[[Sets the origin position of the node object.
This origin position affects to node transformation.
This origin position affects node transformation.
@since 1.14]]
}
get {
[[Gets the origin position of this node object.
[[Gets the origin position of the node object.
@since 1.14]]
}
@ -83,9 +83,9 @@ abstract Efl.VG (Efl.Object, Efl.Gfx, Efl.Gfx.Color, Efl.Gfx.Stack, Efl.Duplicat
}
} */
bounds_get @pure_virtual {
[[Give the bounding box in screen coordinate as being drawn.
[[Give the bounding box in screen coordinates as being drawn.
It will start as the control box until it is refined once the shape
It will start as the control box until it is refined, once the shape
is computed.
@since 1.14]]

View File

@ -615,7 +615,7 @@ class Evas.Box (Efl.Canvas.Group)
box.
In a flow horizontal box, the box's child elements are placed in
rows (think of text as an analogy). A row has as much elements as
rows (think of text as an analogy). A row has as many elements as
can fit into the box's width. The box's overall behavior is
controlled by its properties, which are set by the
evas_object_box_{h,v}_{align,padding}_set family of
@ -631,7 +631,7 @@ class Evas.Box (Efl.Canvas.Group)
justified horizontally. $align_v controls the vertical alignment
of the entire set of rows ($0.0 to top, $1.0 to bottom). A
value of $-1.0 to $align_v makes the box to justify the rows
vertically. The padding between them, in this case, is corrected so
vertically. The padding between them in this case is corrected so
that the first row touches the top border and the last one touches
the bottom border (even if they must overlap). $padding_v has no
influence on the layout.

View File

@ -29,8 +29,8 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
[[Set the default set of flags an event begins with
Events in evas can have an event_flags member. This starts
out with and initial value (no flags). This lets you set
the default flags that an event begins with to be $flags.
out with an initial value (no flags). This lets you set
the default flags that an event begins with to $flags.
@since 1.2
]]
@ -102,7 +102,7 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
@skip called when our rectangle gets focus
@until }
In this example the $event_info is exactly a pointer to that
In this example the $event_info is a pointer to that
focused rectangle. See the full @ref Example_Evas_Events "example".
*/
return: Efl.Canvas.Object @warn_unused; [[The object that has focus
@ -193,9 +193,9 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
smart calculations.
Whenever evas performs smart object calculations on the whole
canvas it increments a counter by 1. This is the smart object
calculate counter that this function returns the value of.
It starts at the value of 0 and will increase (and eventually
canvas it increments a counter by 1. This function returns
the value of the smart object calculate counter.
It starts with a value of 0 and will increase (and eventually
wrap around to negative values and so on) by 1 every time
objects are calculated. You can use this counter to ensure
you don't re-do calculations withint the same calculation
@ -327,7 +327,7 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
set to 1.
Calling this function will return a 32-bit integer with the
appropriate bits set to 1 that correspond to a mouse button
appropriate bits set to 1, which correspond to a mouse button
being depressed. This limits Evas to a mouse devices with a
maximum of 32 buttons, but that is generally in excess of
any host system's pointing device abilities.
@ -425,9 +425,9 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
key_modifier_add {
[[Adds the $keyname key to the current list of modifier keys.
Modifiers are keys like shift, alt and ctrl, i.e., keys which
Modifiers are keys like shift, alt and ctrl, i.e. keys which
are meant to be pressed together with others, altering the
behavior of the secondly pressed keys somehow. Evas is so that
behavior of the second keys pressed. Evas is so that
these keys can be user defined.
This call allows custom modifiers to be added to the Evas system
@ -537,7 +537,7 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
]]
}
focus_out {
[[Inform to the evas that it lost the focus from the default seat.]]
[[Inform the evas that it lost the focus from the default seat.]]
}
norender {
[[Update the canvas internal objects but not triggering immediate
@ -808,13 +808,13 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
the given canvas $e.
Note: This is a very low level function, which most of Evas'
users wouldn't care about. One would use it, for example, to
users wouldn't care about. You might use it, for instance, to
grab an Evas' canvas update regions and paint them back, using
the canvas' pixmap, on a displaying system working below Evas.
Note: Evas is a stateful canvas. If no operations changing its
state took place since the last rendering action, you won't see
no changes and this call will be a no-op.
any changes and this call will be a no-op.
]]
/* FIXME-doc
Example code follows.
@ -945,7 +945,7 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
[[Make the canvas discard as much data as possible used by the
engine at runtime.
This function will unload images, delete textures and much more,
This function will unload images, delete textures and much more
where possible. You may also want to call @.render_idle_flush
immediately prior to this to perhaps discard a little more,
though this function should implicitly delete most of what

View File

@ -22,7 +22,7 @@ class Evas.Canvas3D.Node (Evas.Canvas3D.Object)
[[Add a member node to the given node.
Nodes can be constructed into N-ary tree structure like other ordinary scene
graph. Basically a node inherit transforms from its parent.
graphs. A node inherit transforms from its parent.
See also @Evas.Canvas3D.Node.parent_get.]]
@ -238,7 +238,7 @@ class Evas.Canvas3D.Node (Evas.Canvas3D.Object)
[[Set the position inheritance flag of the given node.
When inheritance is enabled, a node's world space position is determined by
adding the parent node's world position and the node's position, otherwise,
adding the parent node's world position and the node's position. Otherwise
the node's position will be the world space position.]]
}
get {
@ -257,7 +257,7 @@ class Evas.Canvas3D.Node (Evas.Canvas3D.Object)
When inheritance is enabled, a node's world space orientation is determined
by multiplying the parent node's world orientation and the node's
orientation, otherwise, the node's orientation will be the world space
orientation. Otherwise the node's orientation will be the world space
orientation.]]
}
get {
@ -275,7 +275,7 @@ class Evas.Canvas3D.Node (Evas.Canvas3D.Object)
[[Set the scale inheritance flag of the given node.
When inheritance is enabled, a node's world space scale is determined by
multiplying the parent node's world scale and the node's scale, otherwise,
multiplying the parent node's world scale and the node's scale. Otherwise
the node's scale will be the world space scale.]]
}
get {

View File

@ -33,11 +33,11 @@ class Evas.Canvas3D.Primitive (Evas.Canvas3D.Object)
Mode defines which function will be chosen to set data to mesh
on call of evas_canvas3d_mesh_primitive_set. It helps to choose
alternative algorithm for primitive with given form
(like cone without base or sphere textured in alternative way).
an alternative algorithm for primitives with a given form,
such as a cone without a base or sphere textured in alternative way.
Now available next mods of primitives are
witout base (bases) (supported for cylinder and cone) and
Mods of primitives are now available
without base (bases) (supported for cylinder and cone) and
with alternative UV (supported by sphere).
Default form is EVAS_CANVAS3D_PRIMITIVE_MODE_DEFAULT.]]
@ -55,11 +55,11 @@ class Evas.Canvas3D.Primitive (Evas.Canvas3D.Object)
set {
[[Set the ratio of the given primitive.
Now ratio uses only in torus as the ratio of the
Ratio is used only in torus as the ratio of the
major radius and minor radius. For this usage
Available values is from 1.0 to infinity.
If ratio for torus has a bad value,
will be used 3.0 as ratio. Like ratio of usual doughnut.
3.0 will be used as the ratio.
Default ratio is 3.0.]]
}
@ -76,11 +76,11 @@ class Evas.Canvas3D.Primitive (Evas.Canvas3D.Object)
set {
[[Set the precision of the given primitive.
Precision uses in all non tabulated primitives and defines
precision of created primitives.
Available values is from 3 to infinity.
But if value will be more than 100, should be a warning
about possibility of incorrect or slow work.
Precision is used in all non tabulated primitives and defines
the precision of created primitives.
Available values range from 3 to infinity.
If the value is more than 100, you may see a warning
about possibility of incorrect values or slow processing.
Default ratio is 10.]]
}
@ -97,14 +97,14 @@ class Evas.Canvas3D.Primitive (Evas.Canvas3D.Object)
set {
[[Set the surface of the given primitive.
Surface uses only in surface primitive and defines
equation of filling mesh data on call of
Surface is used only in surface primitives and defines
the equation of filling mesh data on call of
evas_canvas3d_mesh_primitive_set.
It gives possibility to create customers primitives like
This allows you to create customers primitives like
shell, heart, hyperbolic paraboloid etc. See _shell_func in
examples/evas/evas-3d-visual-test.c or _perlin_terrain in
modules/evas/primitives/surfaces/terrain.c as an example of usage.
modules/evas/primitives/surfaces/terrain.c for usage examples.
Default surface is $null]]
}

View File

@ -8,8 +8,8 @@ class Evas.Canvas3D.Scene (Evas.Canvas3D.Object)
size_set {
[[Set the resolution of a scene.
A scene should be rendered to be displayed through an image
objects. The resolution defines size of the internal surface
A scene should be rendered to be displayed through image
objects. The resolution defines the size of the internal surface
holding the rendered result.
]]
params {
@ -29,9 +29,9 @@ class Evas.Canvas3D.Scene (Evas.Canvas3D.Object)
background_color_set {
[[Set the background color of a scene.
Background color defines initial color of pixels before a scene
Background color defines the initial color of pixels before a scene
is rendered. If you want to display a scene with background evas
objects are still remaining as if it was the background, set
objects as if they're part of the background, set
the alpha term to 0.0.
Default background color is (0.0, 0.0, 0.0, 0.0).

View File

@ -10,10 +10,10 @@ class Evas.Canvas3D.Texture (Evas.Canvas3D.Object, Efl.File)
[[Set the visibility flag of the source evas object of the given
texture.
Recommend to call \@ref evas_object_show on the source object
Call \@ref evas_object_show on the source object
and control the visibility using this function.
By default, source object is visible.
By default the source object is visible.
See also @.source_set.
]]
@ -31,9 +31,9 @@ class Evas.Canvas3D.Texture (Evas.Canvas3D.Object, Efl.File)
set {
[[Set enable flag to generation texture unit with support atlas.
Use this flag only in case not normalize texture coordinates.
Use this flag only when you cannot normalize texture coordinates.
By default, is enabled.
By default it is enabled.
]]
}
get {
@ -61,7 +61,7 @@ class Evas.Canvas3D.Texture (Evas.Canvas3D.Object, Efl.File)
[[Set the data of the given texture from an evas object.
Evas 3D support using existing evas object as a texture source.
This feature make it possible using any exisiting evas object
This feature make it possible using any existing evas object
inside 3D scene.
See also @.source_visible.set.
@ -88,8 +88,8 @@ class Evas.Canvas3D.Texture (Evas.Canvas3D.Object, Efl.File)
size_get @const {
[[Get the size of the given texture.
If the texture has source object, the size of the source object
will be returned. Otherwise, the size of the data (or image file)
If the texture has a source object, the size of the source object
will be returned. Otherwise the size of the data (or image file)
will be returned.
See also @.data_set, @Efl.File.file.set, @.source_set.

View File

@ -174,8 +174,8 @@ class Evas.Table (Efl.Canvas.Group)
@in child: Efl.Canvas.Object; [[The child object to add.]]
@out col: ushort; [[Pointer to store relative-horizontal position to place child.]]
@out row: ushort; [[Pointer to store relative-vertical position to place child.]]
@out colspan: ushort; [[Pointer to store how many relative-horizontal position to use for this child.]]
@out rowspan: ushort; [[Pointer to store how many relative-vertical position to use for this child.]]
@out colspan: ushort; [[Pointer to store how many relative-horizontal positions to use for this child.]]
@out rowspan: ushort; [[Pointer to store how many relative-vertical positions to use for this child.]]
}
}
pack {
@ -192,8 +192,8 @@ class Evas.Table (Efl.Canvas.Group)
@in child: Efl.Canvas.Object @nonull; [[The child object to add.]]
@in col: ushort; [[Relative-horizontal position to place child.]]
@in row: ushort; [[Relative-vertical position to place child.]]
@in colspan: ushort; [[How many relative-horizontal position to use for this child.]]
@in rowspan: ushort; [[How many relative-vertical position to use for this child.]]
@in colspan: ushort; [[How many relative-horizontal positions to use for this child.]]
@in rowspan: ushort; [[How many relative-vertical positions to use for this child.]]
}
}
unpack {