#ifndef EFL_TEXT_ANNOTATE_IMPL_HH
#define EFL_TEXT_ANNOTATE_IMPL_HH

#include "efl_text_annotate.eo.hh"

namespace efl { 
inline ::efl::eolian::return_traits< ::efl::eina::string_view>::type Text_Annotate::annotation_get( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation) const
{
   const char * __return_value =  ::efl_text_annotation_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::efl::eina::string_view>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Text_Annotate::annotation_set( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type format) const
{
   Eina_Bool __return_value =  ::efl_text_annotation_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation)
      ,  ::efl::eolian::convert_to_c<const char *,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type>(format));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type Text_Annotate::cursor_item_annotation_get( ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type cur) const
{
   Efl_Text_Annotate_Annotation * __return_value =  ::efl_text_cursor_item_annotation_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(cur));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type>(__return_value);
}
inline ::efl::eolian::return_traits< ::efl::eina::iterator<Efl_Text_Annotate_Annotation const*>>::type Text_Annotate::range_annotations_get( ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type start,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type end) const
{
   Eina_Iterator * __return_value =  ::efl_text_range_annotations_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<const Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(start)
      ,  ::efl::eolian::convert_to_c<const Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(end));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::efl::eina::iterator<Efl_Text_Annotate_Annotation const*>>::type>(__return_value);
}
inline ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type Text_Annotate::annotation_insert( ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type start,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type end,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type format) const
{
   Efl_Text_Annotate_Annotation * __return_value =  ::efl_text_annotation_insert(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(start)
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(end)
      ,  ::efl::eolian::convert_to_c<const char *,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type>(format));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Text_Annotate::annotation_del( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation) const
{
   Eina_Bool __return_value =  ::efl_text_annotation_del(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<void>::type Text_Annotate::annotation_positions_get( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type start,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type end) const
{
    ::efl_text_annotation_positions_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<const Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation)
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(start)
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(end));
}
inline ::efl::eolian::return_traits<bool>::type Text_Annotate::annotation_is_item( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation) const
{
   Eina_Bool __return_value =  ::efl_text_annotation_is_item(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Text_Annotate::item_geometry_get( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type an,  ::efl::eolian::out_traits<int>::type x,  ::efl::eolian::out_traits<int>::type y,  ::efl::eolian::out_traits<int>::type w,  ::efl::eolian::out_traits<int>::type h) const
{
   int __out_param_x = {};
   int __out_param_y = {};
   int __out_param_w = {};
   int __out_param_h = {};
   Eina_Bool __return_value =  ::efl_text_item_geometry_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<const Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(an)
      , & __out_param_x
      , & __out_param_y
      , & __out_param_w
      , & __out_param_h);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(x, __out_param_x);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(y, __out_param_y);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(w, __out_param_w);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(h, __out_param_h);
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type Text_Annotate::cursor_item_insert( ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type cur,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type item,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type format) const
{
   Efl_Text_Annotate_Annotation * __return_value =  ::efl_text_cursor_item_insert(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(cur)
      ,  ::efl::eolian::convert_to_c<const char *,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type>(item)
      ,  ::efl::eolian::convert_to_c<const char *,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type>(format));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type>(__return_value);
}
} 
namespace eo_cxx {
namespace efl { 
inline ::efl::eolian::return_traits< ::efl::eina::string_view>::type Text_Annotate::annotation_get( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation) const
{
   const char * __return_value =  ::efl_text_annotation_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::efl::eina::string_view>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Text_Annotate::annotation_set( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type format) const
{
   Eina_Bool __return_value =  ::efl_text_annotation_set(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation)
      ,  ::efl::eolian::convert_to_c<const char *,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type>(format));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type Text_Annotate::cursor_item_annotation_get( ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type cur) const
{
   Efl_Text_Annotate_Annotation * __return_value =  ::efl_text_cursor_item_annotation_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(cur));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type>(__return_value);
}
inline ::efl::eolian::return_traits< ::efl::eina::iterator<Efl_Text_Annotate_Annotation const*>>::type Text_Annotate::range_annotations_get( ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type start,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type end) const
{
   Eina_Iterator * __return_value =  ::efl_text_range_annotations_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<const Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(start)
      ,  ::efl::eolian::convert_to_c<const Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(end));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::efl::eina::iterator<Efl_Text_Annotate_Annotation const*>>::type>(__return_value);
}
inline ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type Text_Annotate::annotation_insert( ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type start,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type end,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type format) const
{
   Efl_Text_Annotate_Annotation * __return_value =  ::efl_text_annotation_insert(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(start)
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(end)
      ,  ::efl::eolian::convert_to_c<const char *,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type>(format));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Text_Annotate::annotation_del( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation) const
{
   Eina_Bool __return_value =  ::efl_text_annotation_del(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<void>::type Text_Annotate::annotation_positions_get( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type start,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type end) const
{
    ::efl_text_annotation_positions_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<const Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation)
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(start)
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(end));
}
inline ::efl::eolian::return_traits<bool>::type Text_Annotate::annotation_is_item( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type annotation) const
{
   Eina_Bool __return_value =  ::efl_text_annotation_is_item(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(annotation));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<bool>::type Text_Annotate::item_geometry_get( ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type an,  ::efl::eolian::out_traits<int>::type x,  ::efl::eolian::out_traits<int>::type y,  ::efl::eolian::out_traits<int>::type w,  ::efl::eolian::out_traits<int>::type h) const
{
   int __out_param_x = {};
   int __out_param_y = {};
   int __out_param_w = {};
   int __out_param_h = {};
   Eina_Bool __return_value =  ::efl_text_item_geometry_get(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<const Efl_Text_Annotate_Annotation *,  ::efl::eolian::in_traits<Efl_Text_Annotate_Annotation const*>::type>(an)
      , & __out_param_x
      , & __out_param_y
      , & __out_param_w
      , & __out_param_h);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(x, __out_param_x);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(y, __out_param_y);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(w, __out_param_w);
   ::efl::eolian::assign_out< ::efl::eolian::out_traits<int>::type, int>(h, __out_param_h);
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
inline ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type Text_Annotate::cursor_item_insert( ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type cur,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type item,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type format) const
{
   Efl_Text_Annotate_Annotation * __return_value =  ::efl_text_cursor_item_insert(_eo_ptr()
      ,  ::efl::eolian::convert_to_c<Efl_Text_Cursor_Cursor *,  ::efl::eolian::in_traits<Efl_Text_Cursor_Cursor const*>::type>(cur)
      ,  ::efl::eolian::convert_to_c<const char *,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type>(item)
      ,  ::efl::eolian::convert_to_c<const char *,  ::efl::eolian::in_traits< ::efl::eina::string_view>::type>(format));
   return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<Efl_Text_Annotate_Annotation*>::type>(__return_value);
}
inline efl::Text_Annotate::operator ::efl::Text_Annotate() const { return *static_cast< ::efl::Text_Annotate const*>(static_cast<void const*>(this)); }
inline efl::Text_Annotate::operator ::efl::Text_Annotate&() { return *static_cast< ::efl::Text_Annotate*>(static_cast<void*>(this)); }
inline efl::Text_Annotate::operator ::efl::Text_Annotate const&() const { return *static_cast< ::efl::Text_Annotate const*>(static_cast<void const*>(this)); }
} }
#endif
