#ifndef EFL_UI_DND_IMPL_HH
#define EFL_UI_DND_IMPL_HH

#include "efl_ui_dnd.eo.hh"

namespace efl { namespace ui { 
#ifdef EFL_BETA_API_SUPPORT
template <typename F>
inline ::efl::eolian::return_traits<void>::type Dnd::drag_start( ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type format,  ::efl::eolian::in_traits<Eina_Slice>::type data,  ::efl::eolian::in_traits<Efl_Ui_Selection_Action>::type action, F icon_func,  ::efl::eolian::in_traits< unsigned int>::type seat) const
{
    auto fw_icon_func = new ::efl::eolian::function_wrapper<Efl_Dnd_Drag_Icon_Create, F>(icon_func);
     ::efl_ui_dnd_drag_start(_eo_ptr(),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Format,  ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type>(format),
         ::efl::eolian::convert_to_c<Eina_Slice,  ::efl::eolian::in_traits<Eina_Slice>::type>(data),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Action,  ::efl::eolian::in_traits<Efl_Ui_Selection_Action>::type>(action),
        fw_icon_func->data_to_c(), fw_icon_func->func_to_c(), fw_icon_func->free_to_c(),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Dnd::drag_action_set( ::efl::eolian::in_traits<Efl_Ui_Selection_Action>::type action,  ::efl::eolian::in_traits< unsigned int>::type seat) const
{
     ::efl_ui_dnd_drag_action_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Action,  ::efl::eolian::in_traits<Efl_Ui_Selection_Action>::type>(action),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Dnd::drag_cancel( ::efl::eolian::in_traits< unsigned int>::type seat) const
{
     ::efl_ui_dnd_drag_cancel(_eo_ptr(),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Dnd::drop_target_add( ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type format,  ::efl::eolian::in_traits< unsigned int>::type seat) const
{
     ::efl_ui_dnd_drop_target_add(_eo_ptr(),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Format,  ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type>(format),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Dnd::drop_target_del( ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type format,  ::efl::eolian::in_traits< unsigned int>::type seat) const
{
     ::efl_ui_dnd_drop_target_del(_eo_ptr(),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Format,  ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type>(format),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
} } 
namespace eo_cxx {
namespace efl { namespace ui { 
#ifdef EFL_BETA_API_SUPPORT
template <typename F>
inline ::efl::eolian::return_traits<void>::type Dnd::drag_start( ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type format,  ::efl::eolian::in_traits<Eina_Slice>::type data,  ::efl::eolian::in_traits<Efl_Ui_Selection_Action>::type action, F icon_func,  ::efl::eolian::in_traits< unsigned int>::type seat) const
{
    auto fw_icon_func = new ::efl::eolian::function_wrapper<Efl_Dnd_Drag_Icon_Create, F>(icon_func);
     ::efl_ui_dnd_drag_start(_eo_ptr(),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Format,  ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type>(format),
         ::efl::eolian::convert_to_c<Eina_Slice,  ::efl::eolian::in_traits<Eina_Slice>::type>(data),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Action,  ::efl::eolian::in_traits<Efl_Ui_Selection_Action>::type>(action),
        fw_icon_func->data_to_c(), fw_icon_func->func_to_c(), fw_icon_func->free_to_c(),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Dnd::drag_action_set( ::efl::eolian::in_traits<Efl_Ui_Selection_Action>::type action,  ::efl::eolian::in_traits< unsigned int>::type seat) const
{
     ::efl_ui_dnd_drag_action_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Action,  ::efl::eolian::in_traits<Efl_Ui_Selection_Action>::type>(action),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Dnd::drag_cancel( ::efl::eolian::in_traits< unsigned int>::type seat) const
{
     ::efl_ui_dnd_drag_cancel(_eo_ptr(),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Dnd::drop_target_add( ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type format,  ::efl::eolian::in_traits< unsigned int>::type seat) const
{
     ::efl_ui_dnd_drop_target_add(_eo_ptr(),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Format,  ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type>(format),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Dnd::drop_target_del( ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type format,  ::efl::eolian::in_traits< unsigned int>::type seat) const
{
     ::efl_ui_dnd_drop_target_del(_eo_ptr(),
         ::efl::eolian::convert_to_c<Efl_Ui_Selection_Format,  ::efl::eolian::in_traits<Efl_Ui_Selection_Format>::type>(format),
         ::efl::eolian::convert_to_c<unsigned int,  ::efl::eolian::in_traits< unsigned int>::type>(seat));
}
#endif
inline efl::ui::Dnd::operator ::efl::ui::Dnd() const { return *static_cast< ::efl::ui::Dnd const*>(static_cast<void const*>(this)); }
inline efl::ui::Dnd::operator ::efl::ui::Dnd&() { return *static_cast< ::efl::ui::Dnd*>(static_cast<void*>(this)); }
inline efl::ui::Dnd::operator ::efl::ui::Dnd const&() const { return *static_cast< ::efl::ui::Dnd const*>(static_cast<void const*>(this)); }
} } }
#endif
