EAPI EAPI_WEAK const Efl_Event_Description _EFL_ACCESS_TEXT_EVENT_ACCESS_TEXT_CARET_MOVED =
   EFL_EVENT_DESCRIPTION("access,text,caret,moved");
EAPI EAPI_WEAK const Efl_Event_Description _EFL_ACCESS_TEXT_EVENT_ACCESS_TEXT_INSERTED =
   EFL_EVENT_DESCRIPTION("access,text,inserted");
EAPI EAPI_WEAK const Efl_Event_Description _EFL_ACCESS_TEXT_EVENT_ACCESS_TEXT_REMOVED =
   EFL_EVENT_DESCRIPTION("access,text,removed");
EAPI EAPI_WEAK const Efl_Event_Description _EFL_ACCESS_TEXT_EVENT_ACCESS_TEXT_SELECTION_CHANGED =
   EFL_EVENT_DESCRIPTION("access,text,selection,changed");
EAPI EAPI_WEAK EFL_FUNC_BODYV_CONST(efl_access_text_character_get, Eina_Unicode, 0, EFL_FUNC_CALL(offset), int offset);
EAPI EAPI_WEAK EFL_VOID_FUNC_BODYV_CONST(efl_access_text_string_get, EFL_FUNC_CALL(granularity, start_offset, end_offset, string), Efl_Access_Text_Granularity granularity, int *start_offset, int *end_offset, char **string);
EAPI EAPI_WEAK EFL_FUNC_BODYV_CONST(efl_access_text_get, char *, NULL, EFL_FUNC_CALL(start_offset, end_offset), int start_offset, int end_offset);

static Eina_Error
__eolian_efl_access_text_caret_offset_set_reflect(Eo *obj, Eina_Value val)
{
   Eina_Error r = 0;   int cval;
   if (!eina_value_int_convert(&val, &cval))
      {
         r = EINA_ERROR_VALUE_FAILED;
         goto end;
      }
   efl_access_text_caret_offset_set(obj, cval);
 end:
   eina_value_flush(&val);
   return r;
}

EAPI EAPI_WEAK EFL_FUNC_BODYV(efl_access_text_caret_offset_set, Eina_Bool, 0, EFL_FUNC_CALL(offset), int offset);

static Eina_Value
__eolian_efl_access_text_caret_offset_get_reflect(const Eo *obj)
{
   int val = efl_access_text_caret_offset_get(obj);
   return eina_value_int_init(val);
}

EAPI EAPI_WEAK EFL_FUNC_BODY_CONST(efl_access_text_caret_offset_get, int, 0);
EAPI EAPI_WEAK EFL_FUNC_BODYV_CONST(efl_access_text_attribute_get, Eina_Bool, 0, EFL_FUNC_CALL(name, start_offset, end_offset, value), const char *name, int *start_offset, int *end_offset, char **value);
EAPI EAPI_WEAK EFL_VOID_FUNC_BODYV_CONST(efl_access_text_attributes_get, EFL_FUNC_CALL(start_offset, end_offset, attributes), int *start_offset, int *end_offset, Eina_List **attributes);
EAPI EAPI_WEAK EFL_FUNC_BODY_CONST(efl_access_text_default_attributes_get, Eina_List *, NULL);
EAPI EAPI_WEAK EFL_FUNC_BODYV_CONST(efl_access_text_character_extents_get, Eina_Bool, 0, EFL_FUNC_CALL(offset, screen_coords, rect), int offset, Eina_Bool screen_coords, Eina_Rect *rect);

static Eina_Value
__eolian_efl_access_text_character_count_get_reflect(const Eo *obj)
{
   int val = efl_access_text_character_count_get(obj);
   return eina_value_int_init(val);
}

EAPI EAPI_WEAK EFL_FUNC_BODY_CONST(efl_access_text_character_count_get, int, 0);
EAPI EAPI_WEAK EFL_FUNC_BODYV_CONST(efl_access_text_offset_at_point_get, int, 0, EFL_FUNC_CALL(screen_coords, x, y), Eina_Bool screen_coords, int x, int y);
EAPI EAPI_WEAK EFL_FUNC_BODYV_CONST(efl_access_text_bounded_ranges_get, Eina_List *, NULL, EFL_FUNC_CALL(screen_coords, rect, xclip, yclip), Eina_Bool screen_coords, Eina_Rect rect, Efl_Access_Text_Clip_Type xclip, Efl_Access_Text_Clip_Type yclip);
EAPI EAPI_WEAK EFL_FUNC_BODYV_CONST(efl_access_text_range_extents_get, Eina_Bool, 0, EFL_FUNC_CALL(screen_coords, start_offset, end_offset, rect), Eina_Bool screen_coords, int start_offset, int end_offset, Eina_Rect *rect);

static Eina_Value
__eolian_efl_access_text_selections_count_get_reflect(const Eo *obj)
{
   int val = efl_access_text_selections_count_get(obj);
   return eina_value_int_init(val);
}

EAPI EAPI_WEAK EFL_FUNC_BODY_CONST(efl_access_text_selections_count_get, int, 0);
EAPI EAPI_WEAK EFL_FUNC_BODYV(efl_access_text_access_selection_set, Eina_Bool, 0, EFL_FUNC_CALL(selection_number, start_offset, end_offset), int selection_number, int start_offset, int end_offset);
EAPI EAPI_WEAK EFL_VOID_FUNC_BODYV_CONST(efl_access_text_access_selection_get, EFL_FUNC_CALL(selection_number, start_offset, end_offset), int selection_number, int *start_offset, int *end_offset);
EAPI EAPI_WEAK EFL_FUNC_BODYV(efl_access_text_selection_add, Eina_Bool, 0, EFL_FUNC_CALL(start_offset, end_offset), int start_offset, int end_offset);
EAPI EAPI_WEAK EFL_FUNC_BODYV(efl_access_text_selection_remove, Eina_Bool, 0, EFL_FUNC_CALL(selection_number), int selection_number);

static Eina_Bool
_efl_access_text_class_initializer(Efl_Class *klass)
{
   const Efl_Object_Ops *opsp = NULL;

   const Efl_Object_Property_Reflection_Ops *ropsp = NULL;

#ifndef EFL_ACCESS_TEXT_EXTRA_OPS
#define EFL_ACCESS_TEXT_EXTRA_OPS
#endif

   EFL_OPS_DEFINE(ops,
      EFL_OBJECT_OP_FUNC(efl_access_text_character_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_string_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_caret_offset_set, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_caret_offset_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_attribute_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_attributes_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_default_attributes_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_character_extents_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_character_count_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_offset_at_point_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_bounded_ranges_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_range_extents_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_selections_count_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_access_selection_set, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_access_selection_get, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_selection_add, NULL),
      EFL_OBJECT_OP_FUNC(efl_access_text_selection_remove, NULL),
      EFL_ACCESS_TEXT_EXTRA_OPS
   );
   opsp = &ops;

   static const Efl_Object_Property_Reflection refl_table[] = {
      {"caret_offset", __eolian_efl_access_text_caret_offset_set_reflect, __eolian_efl_access_text_caret_offset_get_reflect},
      {"character_count", NULL, __eolian_efl_access_text_character_count_get_reflect},
      {"selections_count", NULL, __eolian_efl_access_text_selections_count_get_reflect},
   };
   static const Efl_Object_Property_Reflection_Ops rops = {
      refl_table, EINA_C_ARRAY_LENGTH(refl_table)
   };
   ropsp = &rops;

   return efl_class_functions_set(klass, opsp, ropsp);
}

static const Efl_Class_Description _efl_access_text_class_desc = {
   EO_VERSION,
   "Efl.Access.Text",
   EFL_CLASS_TYPE_INTERFACE,
   0,
   _efl_access_text_class_initializer,
   NULL,
   NULL
};

EFL_DEFINE_CLASS(efl_access_text_interface_get, &_efl_access_text_class_desc, NULL, NULL);
