/// @cond EO_CXX_EO_IMPL

inline void elm::sys_notify_interface::send(unsigned int replaces_id_, ::efl::eina::string_view icon_, ::efl::eina::string_view summary_, ::efl::eina::optional< ::efl::eina::string_view > body_, Elm_Sys_Notify_Urgency urgency_, int timeout_, Elm_Sys_Notify_Send_Cb cb_, const void * cb_data_) const
{
   eo_do(_concrete_eo_ptr(), ::elm_obj_sys_notify_interface_send(replaces_id_, ::efl::eolian::to_c(icon_), ::efl::eolian::to_c(summary_), ::efl::eolian::to_c(body_), urgency_, timeout_, cb_, cb_data_));
}

inline void elm::sys_notify_interface::simple_send(::efl::eina::string_view icon_, ::efl::eina::string_view summary_, ::efl::eina::string_view body_) const
{
   eo_do(_concrete_eo_ptr(), ::elm_obj_sys_notify_interface_simple_send(::efl::eolian::to_c(icon_), ::efl::eolian::to_c(summary_), ::efl::eolian::to_c(body_)));
}

inline void elm::sys_notify_interface::close(unsigned int id_) const
{
   eo_do(_concrete_eo_ptr(), ::elm_obj_sys_notify_interface_close(id_));
}

inline void eo_cxx::elm::sys_notify_interface::send(unsigned int replaces_id_, ::efl::eina::string_view icon_, ::efl::eina::string_view summary_, ::efl::eina::optional< ::efl::eina::string_view > body_, Elm_Sys_Notify_Urgency urgency_, int timeout_, Elm_Sys_Notify_Send_Cb cb_, const void * cb_data_) const
{
   eo_do(_concrete_eo_ptr(), ::elm_obj_sys_notify_interface_send(replaces_id_, ::efl::eolian::to_c(icon_), ::efl::eolian::to_c(summary_), ::efl::eolian::to_c(body_), urgency_, timeout_, cb_, cb_data_));
}

inline void eo_cxx::elm::sys_notify_interface::simple_send(::efl::eina::string_view icon_, ::efl::eina::string_view summary_, ::efl::eina::string_view body_) const
{
   eo_do(_concrete_eo_ptr(), ::elm_obj_sys_notify_interface_simple_send(::efl::eolian::to_c(icon_), ::efl::eolian::to_c(summary_), ::efl::eolian::to_c(body_)));
}

inline void eo_cxx::elm::sys_notify_interface::close(unsigned int id_) const
{
   eo_do(_concrete_eo_ptr(), ::elm_obj_sys_notify_interface_close(id_));
}

inline ::eo_cxx::elm::sys_notify_interface::operator ::elm::sys_notify_interface() const
{
   return *static_cast<::elm::sys_notify_interface const*>(static_cast<void const*>(this));
}

inline ::eo_cxx::elm::sys_notify_interface::operator ::elm::sys_notify_interface&()
{
   return *static_cast<::elm::sys_notify_interface*>(static_cast<void*>(this));
}

inline ::eo_cxx::elm::sys_notify_interface::operator ::elm::sys_notify_interface const&() const
{
   return *static_cast<::elm::sys_notify_interface const*>(static_cast<void const*>(this));
}

template <typename T>
void elm_sys_notify_interface_send_wrapper(Eo* objid EINA_UNUSED, ::efl::eo::detail::Inherit_Private_Data* self, unsigned int replaces_id_, const char * icon_, const char * summary_, const char * body_, Elm_Sys_Notify_Urgency urgency_, int timeout_, Elm_Sys_Notify_Send_Cb cb_, const void * cb_data_)
{
   try
      {
         static_cast<T*>(self->this_)->send(replaces_id_, ::efl::eolian::to_cxx<::efl::eina::string_view>(icon_, std::tuple<std::false_type>()), ::efl::eolian::to_cxx<::efl::eina::string_view>(summary_, std::tuple<std::false_type>()), ::efl::eolian::to_cxx<::efl::eina::optional< ::efl::eina::string_view >>(body_, std::tuple<std::false_type>()), urgency_, timeout_, cb_, cb_data_);
      }
   catch (...)
      {
         eina_error_set( ::efl::eina::unknown_error() );
      }
}

template <typename T>
void elm_sys_notify_interface_simple_send_wrapper(Eo* objid EINA_UNUSED, ::efl::eo::detail::Inherit_Private_Data* self, const char * icon_, const char * summary_, const char * body_)
{
   try
      {
         static_cast<T*>(self->this_)->simple_send(::efl::eolian::to_cxx<::efl::eina::string_view>(icon_, std::tuple<std::false_type>()), ::efl::eolian::to_cxx<::efl::eina::string_view>(summary_, std::tuple<std::false_type>()), ::efl::eolian::to_cxx<::efl::eina::string_view>(body_, std::tuple<std::false_type>()));
      }
   catch (...)
      {
         eina_error_set( ::efl::eina::unknown_error() );
      }
}

template <typename T>
void elm_sys_notify_interface_close_wrapper(Eo* objid EINA_UNUSED, ::efl::eo::detail::Inherit_Private_Data* self, unsigned int id_)
{
   try
      {
         static_cast<T*>(self->this_)->close(id_);
      }
   catch (...)
      {
         eina_error_set( ::efl::eina::unknown_error() );
      }
}

namespace efl { namespace eo { namespace detail {

template<>
struct operations< ::elm::sys_notify_interface >
{
   template <typename T>
   struct type
   {
      virtual void send(unsigned int replaces_id_, ::efl::eina::string_view icon_, ::efl::eina::string_view summary_, ::efl::eina::optional< ::efl::eina::string_view > body_, Elm_Sys_Notify_Urgency urgency_, int timeout_, Elm_Sys_Notify_Send_Cb cb_, const void * cb_data_)
      {

         eo_do_super(dynamic_cast<T*>(this)->_eo_ptr(),
               dynamic_cast<T*>(this)->_eo_class(),
               ::elm_obj_sys_notify_interface_send(replaces_id_, ::efl::eolian::to_c(icon_), ::efl::eolian::to_c(summary_), ::efl::eolian::to_c(body_), urgency_, timeout_, cb_, cb_data_));
      }

      virtual void simple_send(::efl::eina::string_view icon_, ::efl::eina::string_view summary_, ::efl::eina::string_view body_)
      {

         eo_do_super(dynamic_cast<T*>(this)->_eo_ptr(),
               dynamic_cast<T*>(this)->_eo_class(),
               ::elm_obj_sys_notify_interface_simple_send(::efl::eolian::to_c(icon_), ::efl::eolian::to_c(summary_), ::efl::eolian::to_c(body_)));
      }

      virtual void close(unsigned int id_)
      {

         eo_do_super(dynamic_cast<T*>(this)->_eo_ptr(),
               dynamic_cast<T*>(this)->_eo_class(),
               ::elm_obj_sys_notify_interface_close(id_));
      }

   };
};


template<>
struct operation_description_class_size< ::elm::sys_notify_interface >
{
   static constexpr int value = 
#if defined(SYS_NOTIFY_INTERFACE_PROTECTED) && defined(SYS_NOTIFY_INTERFACE_BETA)
      3
#elif defined(SYS_NOTIFY_INTERFACE_PROTECTED)
      3
#elif defined(SYS_NOTIFY_INTERFACE_BETA)
      3
#else
      3
#endif
;
};

template <typename T>
int initialize_operation_description(::efl::eo::detail::tag<::elm::sys_notify_interface>
                                 , Eo_Op_Description* ops)
{
   int i = 0;
   (void)i;
   (void)ops;
   ops[i].func = reinterpret_cast<void*>(& ::elm_sys_notify_interface_send_wrapper<T>);
   ops[i].api_func = reinterpret_cast<void*>(& ::elm_obj_sys_notify_interface_send);
   ops[i].op_type = EO_OP_TYPE_REGULAR;
   ++i;

   ops[i].func = reinterpret_cast<void*>(& ::elm_sys_notify_interface_simple_send_wrapper<T>);
   ops[i].api_func = reinterpret_cast<void*>(& ::elm_obj_sys_notify_interface_simple_send);
   ops[i].op_type = EO_OP_TYPE_REGULAR;
   ++i;

   ops[i].func = reinterpret_cast<void*>(& ::elm_sys_notify_interface_close_wrapper<T>);
   ops[i].api_func = reinterpret_cast<void*>(& ::elm_obj_sys_notify_interface_close);
   ops[i].op_type = EO_OP_TYPE_REGULAR;
   ++i;

   return 0;
}
inline Eo_Class const* get_eo_class(tag<::elm::sys_notify_interface>)
{
   return (ELM_SYS_NOTIFY_INTERFACE_INTERFACE);
}

} } }

/// @endcond

