summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/evas_object_text.c
diff options
context:
space:
mode:
authorTom Hacohen <tom@stosb.com>2016-08-15 14:44:41 +0100
committerTom Hacohen <tom@stosb.com>2016-08-15 15:07:42 +0100
commite65aae994e72c1d3f8ac6b5360d3772f177b77ef (patch)
tree7ecaf136e45470635889191aded2b47057720a98 /src/lib/evas/canvas/evas_object_text.c
parent35abb3c34d10a4826c98055fb85ecf93915e5ea8 (diff)
downloadefl-e65aae994e72c1d3f8ac6b5360d3772f177b77ef.tar.gz
Eo: Finish the renaming of Eo to the EFL.
This renames all the rest of the API to the EFL namespace except for Eo_Event that will follow soon. Obviously breaks both API and ABI.
Diffstat (limited to 'src/lib/evas/canvas/evas_object_text.c')
-rw-r--r--src/lib/evas/canvas/evas_object_text.c92
1 files changed, 46 insertions, 46 deletions
diff --git a/src/lib/evas/canvas/evas_object_text.c b/src/lib/evas/canvas/evas_object_text.c
index 1bbbb62029..2e4a418adf 100644
--- a/src/lib/evas/canvas/evas_object_text.c
+++ b/src/lib/evas/canvas/evas_object_text.c
@@ -151,7 +151,7 @@ _evas_object_text_char_coords_get(const Evas_Object *eo_obj,
const Evas_Text_Data *o,
size_t pos, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Evas_Object_Text_Item *it;
EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it)
@@ -272,7 +272,7 @@ static int
_evas_object_text_last_up_to_pos(const Evas_Object *eo_obj,
const Evas_Text_Data *o, Evas_Coord cx, Evas_Coord cy)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Evas_Object_Text_Item *it;
int pos = -1;
@@ -328,7 +328,7 @@ _evas_object_text_char_at_coords(const Evas_Object *eo_obj,
const Evas_Text_Data *o, Evas_Coord cx, Evas_Coord cy,
Evas_Coord *rx, Evas_Coord *ry, Evas_Coord *rw, Evas_Coord *rh)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Evas_Object_Text_Item *it;
EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it)
@@ -372,14 +372,14 @@ evas_object_text_add(Evas *e)
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
- Evas_Object *eo_obj = eo_add(EVAS_TEXT_CLASS, e);
+ Evas_Object *eo_obj = efl_add(EVAS_TEXT_CLASS, e);
return eo_obj;
}
EOLIAN static Eo *
_evas_text_efl_object_constructor(Eo *eo_obj, Evas_Text_Data *o EINA_UNUSED)
{
- eo_obj = efl_constructor(eo_super(eo_obj, MY_CLASS));
+ eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
evas_object_text_init(eo_obj);
return eo_obj;
@@ -388,7 +388,7 @@ _evas_text_efl_object_constructor(Eo *eo_obj, Evas_Text_Data *o EINA_UNUSED)
EOLIAN static void
_evas_text_efl_text_properties_font_source_set(Eo *eo_obj, Evas_Text_Data *o, const char *font_source)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if ((o->cur.source) && (font_source) &&
(!strcmp(o->cur.source, font_source)))
return;
@@ -410,7 +410,7 @@ _evas_text_efl_text_properties_font_source_get(Eo *eo_obj EINA_UNUSED, Evas_Text
EOLIAN static void
_evas_text_efl_text_properties_font_set(Eo *eo_obj, Evas_Text_Data *o, const char *font, Evas_Font_Size size)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Eina_Bool is, was = EINA_FALSE;
Eina_Bool pass = EINA_FALSE, freeze = EINA_FALSE;
Eina_Bool source_invisible = EINA_FALSE;
@@ -687,7 +687,7 @@ _evas_object_text_pad_get(const Eo *eo_obj, Evas_Text_Data *o, int *l, int *r, i
static void
_evas_object_text_layout(Evas_Object *eo_obj, Evas_Text_Data *o, Eina_Unicode *text)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
EvasBiDiStrIndex *v_to_l = NULL;
Evas_Coord advance = 0, width = 0;
size_t pos, visual_pos;
@@ -994,7 +994,7 @@ _evas_object_text_layout(Evas_Object *eo_obj, Evas_Text_Data *o, Eina_Unicode *t
EOLIAN static void
_evas_text_efl_gfx_size_set(Eo *eo_obj, Evas_Text_Data *o, int w, int h)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
evas_object_async_block(obj);
EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur)
@@ -1010,7 +1010,7 @@ _evas_text_efl_gfx_size_set(Eo *eo_obj, Evas_Text_Data *o, int w, int h)
EOLIAN static void
_evas_text_ellipsis_set(Eo *eo_obj, Evas_Text_Data *o, double ellipsis)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if (o->cur.ellipsis == ellipsis) return;
@@ -1033,26 +1033,26 @@ _evas_text_ellipsis_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o)
EOLIAN static void
_evas_text_efl_object_dbg_info_get(Eo *eo_obj, Evas_Text_Data *o EINA_UNUSED, Efl_Dbg_Info *root)
{
- efl_dbg_info_get(eo_super(eo_obj, MY_CLASS), root);
- Efl_Dbg_Info *group = EO_DBG_INFO_LIST_APPEND(root, MY_CLASS_NAME);
+ efl_dbg_info_get(efl_super(eo_obj, MY_CLASS), root);
+ Efl_Dbg_Info *group = EFL_DBG_INFO_LIST_APPEND(root, MY_CLASS_NAME);
const char *text;
int size;
efl_text_properties_font_get(eo_obj, &text, &size);
- EO_DBG_INFO_APPEND(group, "Font", EINA_VALUE_TYPE_STRING, text);
- EO_DBG_INFO_APPEND(group, "Text size", EINA_VALUE_TYPE_INT, size);
+ EFL_DBG_INFO_APPEND(group, "Font", EINA_VALUE_TYPE_STRING, text);
+ EFL_DBG_INFO_APPEND(group, "Text size", EINA_VALUE_TYPE_INT, size);
text = efl_text_properties_font_source_get(eo_obj);
- EO_DBG_INFO_APPEND(group, "Font source", EINA_VALUE_TYPE_STRING, text);
+ EFL_DBG_INFO_APPEND(group, "Font source", EINA_VALUE_TYPE_STRING, text);
text = efl_text_get(eo_obj);
- EO_DBG_INFO_APPEND(group, "Text", EINA_VALUE_TYPE_STRING, text);
+ EFL_DBG_INFO_APPEND(group, "Text", EINA_VALUE_TYPE_STRING, text);
}
EOLIAN static void
_evas_text_efl_text_text_set(Eo *eo_obj, Evas_Text_Data *o, const char *_text)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
int is, was, len;
Eina_Unicode *text;
@@ -1097,7 +1097,7 @@ _evas_text_efl_text_text_set(Eo *eo_obj, Evas_Text_Data *o, const char *_text)
EOLIAN static void
_evas_text_bidi_delimiters_set(Eo *eo_obj, Evas_Text_Data *o, const char *delim)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
evas_object_async_block(obj);
eina_stringshare_replace(&o->bidi_delimiters, delim);
}
@@ -1118,7 +1118,7 @@ EOLIAN static Evas_BiDi_Direction
_evas_text_direction_get(Eo *eo_obj, Evas_Text_Data *o)
{
#ifdef BIDI_SUPPORT
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if (o->inherit_paragraph_direction)
{
@@ -1172,7 +1172,7 @@ _evas_text_max_descent_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o)
EOLIAN static Evas_Coord
_evas_text_inset_get(Eo *eo_obj, Evas_Text_Data *o)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Evas_Coord inset = 0;
if (!o->font) return inset;
if (!o->items) return inset;
@@ -1220,7 +1220,7 @@ _evas_text_char_pos_get(const Eo *eo_obj, Evas_Text_Data *o, int pos, Evas_Coord
if (!o->font) return ret;
if (!o->items || (pos < 0)) return ret;
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Eina_Bool int_ret = _evas_object_text_char_coords_get(eo_obj, o, (size_t) pos,
&x, &y, &w, &h);
@@ -1287,7 +1287,7 @@ _evas_text_char_coords_get(const Eo *eo_obj, Evas_Text_Data *o, Evas_Coord x, Ev
rw += rx;
rx = 0;
}
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if ((rx + rw) > obj->cur->geometry.w) rw = obj->cur->geometry.w - rx;
if (rw < 0) rw = 0;
if (ry < 0)
@@ -1309,7 +1309,7 @@ _evas_text_char_coords_get(const Eo *eo_obj, Evas_Text_Data *o, Evas_Coord x, Ev
EOLIAN static void
_evas_text_style_set(Eo *eo_obj, Evas_Text_Data *o, Evas_Text_Style_Type style)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
int pl = 0, pr = 0, pt = 0, pb = 0, l = 0, r = 0, t = 0, b = 0;
int w = 0, h = 0;
@@ -1325,7 +1325,7 @@ _evas_text_style_set(Eo *eo_obj, Evas_Text_Data *o, Evas_Text_Style_Type style)
if (o->items) w = obj->cur->geometry.w + (l - pl) + (r - pr);
h = obj->cur->geometry.h + (t - pt) + (b - pb);
- efl_gfx_size_set(eo_super(eo_obj, MY_CLASS), w, h);
+ efl_gfx_size_set(efl_super(eo_obj, MY_CLASS), w, h);
evas_object_change(eo_obj, obj);
}
@@ -1338,7 +1338,7 @@ _evas_text_style_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o)
EOLIAN static void
_evas_text_shadow_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if ((o->cur.shadow.r == r) && (o->cur.shadow.g == g) &&
(o->cur.shadow.b == b) && (o->cur.shadow.a == a))
return;
@@ -1363,7 +1363,7 @@ _evas_text_shadow_color_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o, int *r, i
EOLIAN static void
_evas_text_glow_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if ((o->cur.glow.r == r) && (o->cur.glow.g == g) &&
(o->cur.glow.b == b) && (o->cur.glow.a == a))
return;
@@ -1388,7 +1388,7 @@ _evas_text_glow_color_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o, int *r, int
EOLIAN static void
_evas_text_glow2_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if ((o->cur.glow2.r == r) && (o->cur.glow2.g == g) &&
(o->cur.glow2.b == b) && (o->cur.glow2.a == a))
return;
@@ -1413,7 +1413,7 @@ _evas_text_glow2_color_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o, int *r, in
EOLIAN static void
_evas_text_outline_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if ((o->cur.outline.r == r) && (o->cur.outline.g == g) &&
(o->cur.outline.b == b) && (o->cur.outline.a == a))
return;
@@ -1608,10 +1608,10 @@ evas_text_style_pad_get(Evas_Text_Style_Type style, int *l, int *r, int *t, int
static void
evas_object_text_init(Evas_Object *eo_obj)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
/* set up methods (compulsory) */
obj->func = &object_func;
- obj->private_data = eo_data_ref(eo_obj, MY_CLASS);
+ obj->private_data = efl_data_ref(eo_obj, MY_CLASS);
obj->type = o_type;
Evas_Text_Data *o = obj->private_data;
@@ -1627,15 +1627,15 @@ evas_object_text_init(Evas_Object *eo_obj)
EOLIAN static void
_evas_text_efl_object_destructor(Eo *eo_obj, Evas_Text_Data *o EINA_UNUSED)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
evas_object_text_free(eo_obj, obj);
- efl_destructor(eo_super(eo_obj, MY_CLASS));
+ efl_destructor(efl_super(eo_obj, MY_CLASS));
}
static void
evas_object_text_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
- Evas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
+ Evas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
/* free obj */
_evas_object_text_items_clear(o);
@@ -1685,7 +1685,7 @@ evas_font_draw_async_check(Evas_Object_Protected_Data *obj,
EOLIAN static void
_evas_text_efl_canvas_filter_internal_filter_dirty(Eo *eo_obj, Evas_Text_Data *o)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
_evas_object_text_items_clear(o);
o->changed = 1;
@@ -2134,7 +2134,7 @@ evas_object_text_render_post(Evas_Object *eo_obj,
static unsigned int
evas_object_text_id_get(Evas_Object *eo_obj)
{
- Evas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
+ Evas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
if (!o) return 0;
return MAGIC_OBJ_TEXT;
}
@@ -2142,7 +2142,7 @@ evas_object_text_id_get(Evas_Object *eo_obj)
static unsigned int
evas_object_text_visual_id_get(Evas_Object *eo_obj)
{
- Evas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
+ Evas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
if (!o) return 0;
return MAGIC_OBJ_SHAPE;
}
@@ -2150,7 +2150,7 @@ evas_object_text_visual_id_get(Evas_Object *eo_obj)
static void *
evas_object_text_engine_data_get(Evas_Object *eo_obj)
{
- Evas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
+ Evas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
if (!o) return NULL;
return o->font;
}
@@ -2197,8 +2197,8 @@ evas_object_text_scale_update(Evas_Object *eo_obj,
void
_evas_object_text_rehint(Evas_Object *eo_obj)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
- Evas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
int is, was;
if (!o->font) return;
@@ -2230,8 +2230,8 @@ _evas_object_text_rehint(Evas_Object *eo_obj)
static void
_evas_object_text_recalc(Evas_Object *eo_obj, Eina_Unicode *text)
{
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
- Evas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
if (!text) text = eina_unicode_strdup(EINA_UNICODE_EMPTY_STRING);
@@ -2293,11 +2293,11 @@ _evas_object_text_recalc(Evas_Object *eo_obj, Eina_Unicode *text)
int min;
min = w + l + r < obj->cur->geometry.w || obj->cur->geometry.w == 0 ? w + l + r : obj->cur->geometry.w;
- efl_gfx_size_set(eo_super(eo_obj, MY_CLASS), min, h + t + b);
+ efl_gfx_size_set(efl_super(eo_obj, MY_CLASS), min, h + t + b);
}
else
{
- efl_gfx_size_set(eo_super(eo_obj, MY_CLASS), w + l + r, h + t + b);
+ efl_gfx_size_set(efl_super(eo_obj, MY_CLASS), w + l + r, h + t + b);
}
//// obj->cur->cache.geometry.validity = 0;
}
@@ -2305,7 +2305,7 @@ _evas_object_text_recalc(Evas_Object *eo_obj, Eina_Unicode *text)
{
int t = 0, b = 0, l = 0, r = 0;
_evas_object_text_pad_get(eo_obj, o, &l, &r, &t, &b);
- efl_gfx_size_set(eo_super(eo_obj, MY_CLASS), 0, o->max_ascent + o->max_descent + t + b);
+ efl_gfx_size_set(efl_super(eo_obj, MY_CLASS), 0, o->max_ascent + o->max_descent + t + b);
//// obj->cur->cache.geometry.validity = 0;
}
o->last_computed.w = obj->cur->geometry.w;
@@ -2357,7 +2357,7 @@ EOLIAN static void
_evas_text_efl_gfx_filter_filter_program_set(Eo *obj, Evas_Text_Data *pd EINA_UNUSED, const char *code, const char *name)
{
pd->has_filter = (code != NULL);
- efl_gfx_filter_program_set(eo_super(obj, MY_CLASS), code, name);
+ efl_gfx_filter_program_set(efl_super(obj, MY_CLASS), code, name);
}
/* deprecated */
@@ -2379,7 +2379,7 @@ _evas_text_efl_canvas_object_paragraph_direction_set(Eo *eo_obj, Evas_Text_Data
Evas_BiDi_Direction dir)
{
#ifdef BIDI_SUPPORT
- Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
if ((!(o->inherit_paragraph_direction) && (o->paragraph_direction == dir)) ||
(o->inherit_paragraph_direction && (dir == EVAS_BIDI_DIRECTION_INHERIT)))