EAPI EAPI_WEAK const Efl_Event_Description _EFL_UI_DND_EVENT_DROP_ENTERED =
   EFL_EVENT_DESCRIPTION("drop,entered");
EAPI EAPI_WEAK const Efl_Event_Description _EFL_UI_DND_EVENT_DROP_LEFT =
   EFL_EVENT_DESCRIPTION("drop,left");
EAPI EAPI_WEAK const Efl_Event_Description _EFL_UI_DND_EVENT_DROP_POSITION_CHANGED =
   EFL_EVENT_DESCRIPTION("drop,position,changed");
EAPI EAPI_WEAK const Efl_Event_Description _EFL_UI_DND_EVENT_DROP_DROPPED =
   EFL_EVENT_DESCRIPTION("drop,dropped");
EAPI EAPI_WEAK const Efl_Event_Description _EFL_UI_DND_EVENT_DRAG_STARTED =
   EFL_EVENT_DESCRIPTION("drag,started");
EAPI EAPI_WEAK const Efl_Event_Description _EFL_UI_DND_EVENT_DRAG_FINISHED =
   EFL_EVENT_DESCRIPTION("drag,finished");

Efl_Content *_efl_ui_dnd_drag_start(Eo *obj, Efl_Ui_Dnd_Data *pd, Eina_Content *content, const char *action, unsigned int seat);

EAPI EAPI_WEAK EFL_FUNC_BODYV(efl_ui_dnd_drag_start, Efl_Content *, NULL, EFL_FUNC_CALL(content, action, seat), Eina_Content *content, const char *action, unsigned int seat);

void _efl_ui_dnd_drag_offset_set(Eo *obj, Efl_Ui_Dnd_Data *pd, unsigned int seat, Eina_Size2D offset);

EAPI EAPI_WEAK EFL_VOID_FUNC_BODYV(efl_ui_dnd_drag_offset_set, EFL_FUNC_CALL(seat, offset), unsigned int seat, Eina_Size2D offset);

void _efl_ui_dnd_drag_cancel(Eo *obj, Efl_Ui_Dnd_Data *pd, unsigned int seat);

EAPI EAPI_WEAK EFL_VOID_FUNC_BODYV(efl_ui_dnd_drag_cancel, EFL_FUNC_CALL(seat), unsigned int seat);

Eina_Future *_efl_ui_dnd_drop_data_get(Eo *obj, Efl_Ui_Dnd_Data *pd, unsigned int seat, Eina_Iterator *acceptable_types);

EAPI EAPI_WEAK EFL_FUNC_BODYV(efl_ui_dnd_drop_data_get, Eina_Future *, NULL, EFL_FUNC_CALL(seat, acceptable_types), unsigned int seat, Eina_Iterator *acceptable_types);

Efl_Object *_efl_ui_dnd_efl_object_constructor(Eo *obj, Efl_Ui_Dnd_Data *pd);


void _efl_ui_dnd_efl_object_invalidate(Eo *obj, Efl_Ui_Dnd_Data *pd);


Efl_Object *_efl_ui_dnd_efl_object_finalize(Eo *obj, Efl_Ui_Dnd_Data *pd);


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

   const Efl_Object_Property_Reflection_Ops *ropsp = NULL;

#ifndef EFL_UI_DND_EXTRA_OPS
#define EFL_UI_DND_EXTRA_OPS
#endif

   EFL_OPS_DEFINE(ops,
      EFL_OBJECT_OP_FUNC(efl_ui_dnd_drag_start, _efl_ui_dnd_drag_start),
      EFL_OBJECT_OP_FUNC(efl_ui_dnd_drag_offset_set, _efl_ui_dnd_drag_offset_set),
      EFL_OBJECT_OP_FUNC(efl_ui_dnd_drag_cancel, _efl_ui_dnd_drag_cancel),
      EFL_OBJECT_OP_FUNC(efl_ui_dnd_drop_data_get, _efl_ui_dnd_drop_data_get),
      EFL_OBJECT_OP_FUNC(efl_constructor, _efl_ui_dnd_efl_object_constructor),
      EFL_OBJECT_OP_FUNC(efl_invalidate, _efl_ui_dnd_efl_object_invalidate),
      EFL_OBJECT_OP_FUNC(efl_finalize, _efl_ui_dnd_efl_object_finalize),
      EFL_UI_DND_EXTRA_OPS
   );
   opsp = &ops;

   return efl_class_functions_set(klass, opsp, ropsp);
}

static const Efl_Class_Description _efl_ui_dnd_class_desc = {
   EO_VERSION,
   "Efl.Ui.Dnd",
   EFL_CLASS_TYPE_MIXIN,
   sizeof(Efl_Ui_Dnd_Data),
   _efl_ui_dnd_class_initializer,
   NULL,
   NULL
};

EFL_DEFINE_CLASS(efl_ui_dnd_mixin_get, &_efl_ui_dnd_class_desc, NULL, NULL);
