#ifndef EFL_GENERATED_EVAS_TEXT_HH
#define EFL_GENERATED_EVAS_TEXT_HH

extern "C"
{
#include <Efl.h>
}
#include <Eo.hh>

#include <eo_cxx_interop.hh>

extern "C"
{
#include "evas_text.eo.h"
}

#include "evas_object.eo.hh"
#include "efl_text.eo.hh"
#include "efl_text_properties.eo.hh"
#include <eo_base.hh>
#include <string>

namespace evas {

struct text
      : evas::object,
      efl::eo::detail::extension_inheritance<efl::text>::template type< ::evas::text>,
      efl::eo::detail::extension_inheritance<efl::text_properties>::template type< ::evas::text>

{
   /// @brief Eo Constructor.
   ///
   /// Constructs the object from an Eo* pointer stealing its ownership.
   ///
   /// @param eo The Eo object pointer.
   ///
   explicit text(Eo* eo)
      : evas::object(eo)
   {}

   /// @brief nullptr_t Constructor.
   ///
   /// Constructs an empty (null) object.
   ///
   explicit text(std::nullptr_t)
      : evas::object(nullptr)
   {}

   /// @brief Call the object's constructor.
   /// Should not be used with #eo_do. Only use it with #eo_do_super.
   ///
   text(efl::eo::parent_type _p = (efl::eo::parent = nullptr))
      : text(_c0(_p))
   {}

   /// @brief Copy Constructor.
   ///
   text(text const& other)
      : evas::object(eo_ref(other._eo_ptr()))
   {}

   ~text() {}

   /// @brief Get dbg information from the object.
   ///
   /// @param root_node node of the tree
   ///
   void dbg_info_get(Eo_Dbg_Info * root_node_) const
   {
      eo_do(_eo_ptr(), ::eo_dbg_info_get(root_node_));
   }

   /// @brief Changes the size of the given Evas object.
   ///
   /// @param w in
   /// @param h in
   ///
   void size_set(Evas_Coord w_, Evas_Coord h_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_size_set(w_, h_));
   }

   /// @brief Sets the text string to be displayed by the given text object.
   ///
   /// @see evas_object_text_text_get()
   ///
   /// @param text Text string to display on it.
   ///
   void text_set(std::string text_) const
   {
      eo_do(_eo_ptr(), ::efl_text_set(efl::eolian::to_c(text_)));
   }

   /// @brief Retrieves the text string currently being displayed by the given
   /// text object.
   ///
   /// @return The text string currently being displayed on it.
   ///
   /// @note Do not free() the return value.
   ///
   /// @see evas_object_text_text_set()
   ///
   /// @param text Text string to display on it.
   ///
   std::string text_get() const
   {
      const char * _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::efl_text_get());
      return efl::eolian::to_cxx<std::string>(_tmp_ret, std::tuple<std::false_type>());
   }

   /// @brief Retrieve the font family and size in use on a given text object.
   ///
   /// This function allows the font name and size of a text object to be
   /// queried. Be aware that the font name string is still owned by Evas
   /// and should @b not have free() called on it by the caller of the
   /// function.
   ///
   /// @see evas_object_text_font_set()
   ///
   /// @param font The font family name or filename.
   /// @param size The font size, in points.
   ///
   void font_get(const char ** font_, Efl_Font_Size* size_) const
   {
      eo_do(_eo_ptr(), ::efl_text_properties_font_get(font_, size_));
   }

   /// @brief Set the font family or filename, and size on a given text object.
   ///
   /// This function allows the font name and size of a text object to be
   /// set. The @p font string has to follow fontconfig's convention on
   /// naming fonts, as it's the underlying library used to query system
   /// fonts by Evas (see the @c fc-list command's output, on your system,
   /// to get an idea). Alternatively, one can use a full path to a font file.
   ///
   /// @see evas_object_text_font_get()
   /// @see evas_object_text_font_source_set()
   ///
   /// @param font The font family name or filename.
   /// @param size The font size, in points.
   ///
   void font_set(std::string font_, Efl_Font_Size size_) const
   {
      eo_do(_eo_ptr(), ::efl_text_properties_font_set(efl::eolian::to_c(font_), size_));
   }

   /// @brief Get the font file's path which is being used on a given text
   /// object.
   ///
   /// @return The font file's path.
   ///
   /// @see evas_object_text_font_get() for more details
   ///
   /// @param font_source The font file's path.
   ///
   std::string font_source_get() const
   {
      const char * _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::efl_text_properties_font_source_get());
      return efl::eolian::to_cxx<std::string>(_tmp_ret, std::tuple<std::false_type>());
   }

   /// @brief Set the font (source) file to be used on a given text object.
   ///
   /// This function allows the font file to be explicitly set for a given
   /// text object, overriding system lookup, which will first occur in
   /// the given file's contents.
   ///
   /// @see evas_object_text_font_get()
   ///
   /// @param font_source The font file's path.
   ///
   void font_source_set(std::string font_source_) const
   {
      eo_do(_eo_ptr(), ::efl_text_properties_font_source_set(efl::eolian::to_c(font_source_)));
   }

   /// @brief Retrieves the shadow color for the given text object.
   ///
   /// @note Use @c NULL pointers on the color components you're not
   /// interested in: they'll be ignored by the function.
   ///
   /// @see evas_object_text_shadow_color_set() for more details.
   ///
   /// @param r The red component of the given color.
   /// @param g The green component of the given color.
   /// @param b The blue component of the given color.
   /// @param a The alpha component of the given color.
   ///
   void shadow_color_get(int* r_, int* g_, int* b_, int* a_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_shadow_color_get(r_, g_, b_, a_));
   }

   /// @brief Sets the shadow color for the given text object.
   ///
   /// Shadow effects, which are fading colors decorating the text
   /// underneath it, will just be shown if the object is set to one of
   /// the following styles:
   ///
   /// - #EVAS_TEXT_STYLE_SHADOW
   /// - #EVAS_TEXT_STYLE_OUTLINE_SHADOW
   /// - #EVAS_TEXT_STYLE_FAR_SHADOW
   /// - #EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW
   /// - #EVAS_TEXT_STYLE_SOFT_SHADOW
   /// - #EVAS_TEXT_STYLE_FAR_SOFT_SHADOW
   ///
   /// One can also change the direction where the shadow grows to, with
   /// evas_object_text_style_set().
   ///
   /// @see evas_object_text_shadow_color_get()
   ///
   /// @param r The red component of the given color.
   /// @param g The green component of the given color.
   /// @param b The blue component of the given color.
   /// @param a The alpha component of the given color.
   ///
   void shadow_color_set(int r_, int g_, int b_, int a_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_shadow_color_set(r_, g_, b_, a_));
   }

   /// @brief @brief Gets the ellipsis currently set on the text object.
   ///
   /// @return The ellipsis set on the text object.
   /// @see evas_object_text_ellipsis_set.
   /// @since 1.8
   ///
   /// @param ellipsis the ellipsis.
   ///
   double ellipsis_get() const
   {
      double _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_ellipsis_get());
      return _tmp_ret;
   }

   /// @brief @brief Sets the ellipsis that should be used for the text object.
   ///
   /// This is a value between 0.0 and 1.0 indicating the position of the text
   /// to be shown. 0.0 means the start will be shown and the end trimmed, 1.0
   /// means the beginning will be trimmed and the end will be shown, and any value
   /// in between will cause ellipsis to be added in both end of the text and the
   /// requested part to be shown.
   /// -1.0 means ellipsis is turned off.
   ///
   /// @since 1.8
   ///
   /// @param ellipsis the ellipsis.
   ///
   void ellipsis_set(double ellipsis_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_ellipsis_set(ellipsis_));
   }

   /// @brief @brief Gets the BiDi delimiters used in the textblock.
   ///
   /// BiDi delimiters are use for in-paragraph separation of bidi segments. This
   /// is useful for example in recipients fields of e-mail clients where bidi
   /// oddities can occur when mixing RTL and LTR.
   ///
   /// @return A null terminated string of delimiters, e.g ",|". If empty, returns NULL.
   /// @since 1.1
   ///
   /// @param delim A null terminated string of delimiters, e.g ",|".
   ///
   std::string bidi_delimiters_get() const
   {
      const char * _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_bidi_delimiters_get());
      return efl::eolian::to_cxx<std::string>(_tmp_ret, std::tuple<std::false_type>());
   }

   /// @brief @brief Sets the BiDi delimiters used in the textblock.
   ///
   /// BiDi delimiters are use for in-paragraph separation of bidi segments. This
   /// is useful for example in recipients fields of e-mail clients where bidi
   /// oddities can occur when mixing RTL and LTR.
   ///
   /// @since 1.1
   ///
   /// @param delim A null terminated string of delimiters, e.g ",|".
   ///
   void bidi_delimiters_set(std::string delim_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_bidi_delimiters_set(efl::eolian::to_c(delim_)));
   }

   /// @brief Retrieves the outline color for the given text object.
   ///
   /// @note Use @c NULL pointers on the color components you're not
   /// interested in: they'll be ignored by the function.
   ///
   /// @see evas_object_text_outline_color_set() for more details.
   ///
   /// @param r The red component of the given color.
   /// @param g The green component of the given color.
   /// @param b The blue component of the given color.
   /// @param a The alpha component of the given color.
   ///
   void outline_color_get(int* r_, int* g_, int* b_, int* a_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_outline_color_get(r_, g_, b_, a_));
   }

   /// @brief Sets the outline color for the given text object.
   ///
   /// Outline effects (colored lines around text glyphs) will just be
   /// shown if the object is set to one of the following styles:
   /// - #EVAS_TEXT_STYLE_OUTLINE
   /// - #EVAS_TEXT_STYLE_SOFT_OUTLINE
   /// - #EVAS_TEXT_STYLE_OUTLINE_SHADOW
   /// - #EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW
   ///
   /// @see evas_object_text_outline_color_get()
   ///
   /// @param r The red component of the given color.
   /// @param g The green component of the given color.
   /// @param b The blue component of the given color.
   /// @param a The alpha component of the given color.
   ///
   void outline_color_set(int r_, int g_, int b_, int a_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_outline_color_set(r_, g_, b_, a_));
   }

   /// @brief Retrieves the 'glow 2' color for the given text object.
   ///
   /// @note Use @c NULL pointers on the color components you're not
   /// interested in: they'll be ignored by the function.
   ///
   /// @see evas_object_text_glow2_color_set() for more details.
   ///
   /// @param r The red component of the given color.
   /// @param g The green component of the given color.
   /// @param b The blue component of the given color.
   /// @param a The alpha component of the given color.
   ///
   void glow2_color_get(int* r_, int* g_, int* b_, int* a_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_glow2_color_get(r_, g_, b_, a_));
   }

   /// @brief Sets the 'glow 2' color for the given text object.
   ///
   /// 'Glow 2' effects, which are glowing colors decorating the text's
   /// (immediate) surroundings, will just be shown if the object is set
   /// to the #EVAS_TEXT_STYLE_GLOW style. See also
   /// evas_object_text_glow_color_set().
   ///
   /// @see evas_object_text_glow2_color_get()
   ///
   /// @param r The red component of the given color.
   /// @param g The green component of the given color.
   /// @param b The blue component of the given color.
   /// @param a The alpha component of the given color.
   ///
   void glow2_color_set(int r_, int g_, int b_, int a_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_glow2_color_set(r_, g_, b_, a_));
   }

   /// @brief Retrieves the style on use on the given text object.
   ///
   /// @return the style type in use.
   ///
   /// @see evas_object_text_style_set() for more details.
   ///
   /// @param style a style type.
   ///
   Evas_Text_Style_Type style_get() const
   {
      Evas_Text_Style_Type _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_style_get());
      return _tmp_ret;
   }

   /// @brief Sets the style to apply on the given text object.
   ///
   /// Text object styles are one of the values in
   /// #Evas_Text_Style_Type. Some of those values are combinations of
   /// more than one style, and some account for the direction of the
   /// rendering of shadow effects.
   ///
   /// @note One may use the helper macros #EVAS_TEXT_STYLE_BASIC_SET and
   /// #EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET to assemble a style value.
   ///
   /// The following figure illustrates the text styles:
   ///
   /// @image html text-styles.png
   /// @image rtf text-styles.png
   /// @image latex text-styles.eps
   ///
   /// @see evas_object_text_style_get()
   /// @see evas_object_text_shadow_color_set()
   /// @see evas_object_text_outline_color_set()
   /// @see evas_object_text_glow_color_set()
   /// @see evas_object_text_glow2_color_set()
   ///
   /// @param style a style type.
   ///
   void style_set(Evas_Text_Style_Type style_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_style_set(style_));
   }

   /// @brief Retrieves the glow color for the given text object.
   ///
   /// @note Use @c NULL pointers on the color components you're not
   /// interested in: they'll be ignored by the function.
   ///
   /// @see evas_object_text_glow_color_set() for more details.
   ///
   /// @param r The red component of the given color.
   /// @param g The green component of the given color.
   /// @param b The blue component of the given color.
   /// @param a The alpha component of the given color.
   ///
   void glow_color_get(int* r_, int* g_, int* b_, int* a_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_glow_color_get(r_, g_, b_, a_));
   }

   /// @brief Sets the glow color for the given text object.
   ///
   /// Glow effects, which are glowing colors decorating the text's
   /// surroundings, will just be shown if the object is set to the
   /// #EVAS_TEXT_STYLE_GLOW style.
   ///
   /// @note Glow effects are placed from a short distance of the text
   /// itself, but no touching it. For glowing effects right on the
   /// borders of the glyphs, see 'glow 2' effects
   /// (evas_object_text_glow2_color_set()).
   ///
   /// @see evas_object_text_glow_color_get()
   ///
   /// @param r The red component of the given color.
   /// @param g The green component of the given color.
   /// @param b The blue component of the given color.
   /// @param a The alpha component of the given color.
   ///
   void glow_color_set(int r_, int g_, int b_, int a_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_glow_color_set(r_, g_, b_, a_));
   }

   /// @brief Set an Evas filter program on this Text Object.
   ///
   /// If the program fails to compile (syntax error, invalid
   /// buffer name, etc...), the standard text effects will be
   /// applied instead (SHADOW, etc...). switch back to the
   /// standard text effects.
   ///
   /// @since 1.9
   /// @note EXPERIMENTAL FEATURE. This is an unstable API,
   /// please use only for testing purposes.
   /// @see @ref evasfiltersref "Evas filters reference"
   ///
   /// @param program The program code, as defined
   /// by the @ref evasfiltersref "Evas filters script language".
   /// Pass NULL to remove the former program and switch back
   /// to the standard text effect
   ///
   void filter_program_set(std::string program_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_filter_program_set(efl::eolian::to_c(program_)));
   }

   /// @brief Bind an object to use as a mask or texture with Evas Filters.
   ///
   /// This will create automatically a new RGBA buffer containing
   /// the source object's pixels (as it is rendered).
   ///
   /// @since 1.9
   /// @note EXPERIMENTAL FEATURE. This is an unstable API,
   /// please use only for testing purposes.
   /// @see @ref evasfiltersref "Evas filters reference"
   ///
   /// @param name Object name as used in the program code
   /// @param eobj Eo object to use through proxy rendering
   ///
   void filter_source_set(std::string name_, efl::eo::base eobj_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_filter_source_set(efl::eolian::to_c(name_), efl::eolian::to_c(eobj_)));
   }

   Evas_Coord max_descent_get() const
   {
      Evas_Coord _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_max_descent_get());
      return _tmp_ret;
   }

   /// @brief Gets the text style pad of a text object.
   ///
   /// @param l The left pad (or @c NULL).
   /// @param r The right pad (or @c NULL).
   /// @param t The top pad (or @c NULL).
   /// @param b The bottom pad (or @c NULL).
   ///
   void style_pad_get(int* l_, int* r_, int* t_, int* b_) const
   {
      eo_do(_eo_ptr(), ::evas_obj_text_style_pad_get(l_, r_, t_, b_));
   }

   /// @brief Retrieves the direction of the text currently being displayed in the
   /// text object.
   /// @return the direction of the text
   ///
   Evas_BiDi_Direction direction_get() const
   {
      Evas_BiDi_Direction _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_direction_get());
      return _tmp_ret;
   }

   Evas_Coord ascent_get() const
   {
      Evas_Coord _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_ascent_get());
      return _tmp_ret;
   }

   Evas_Coord horiz_advance_get() const
   {
      Evas_Coord _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_horiz_advance_get());
      return _tmp_ret;
   }

   Evas_Coord inset_get() const
   {
      Evas_Coord _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_inset_get());
      return _tmp_ret;
   }

   Evas_Coord max_ascent_get() const
   {
      Evas_Coord _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_max_ascent_get());
      return _tmp_ret;
   }

   Evas_Coord vert_advance_get() const
   {
      Evas_Coord _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_vert_advance_get());
      return _tmp_ret;
   }

   Evas_Coord descent_get() const
   {
      Evas_Coord _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_descent_get());
      return _tmp_ret;
   }

   /// @brief Returns the logical position of the last char in the text up to the pos given. this is NOT the position of the last char because of the possibility of RTL in the text.
   ///
   /// @param x in
   /// @param y in
   ///
   int last_up_to_pos(Evas_Coord x_, Evas_Coord y_) const
   {
      int _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_last_up_to_pos(x_, y_));
      return _tmp_ret;
   }

   /// @param x in
   /// @param y in
   /// @param[out] cx out
   /// @param[out] cy out
   /// @param[out] cw out
   /// @param[out] ch out
   ///
   int char_coords_get(Evas_Coord x_, Evas_Coord y_, Evas_Coord* cx_, Evas_Coord* cy_, Evas_Coord* cw_, Evas_Coord* ch_) const
   {
      int _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_char_coords_get(x_, y_, cx_, cy_, cw_, ch_));
      return _tmp_ret;
   }

   /// @brief Retrieve position and dimension information of a character within a text @c Evas_Object.
   ///
   /// This function is used to obtain the X, Y, width and height of the character
   /// located at @p pos within the @c Evas_Object @p obj. @p obj must be a text object
   /// as created with evas_object_text_add(). Any of the @c Evas_Coord parameters (@p cx,
   /// @p cy, @p cw, @p ch) may be @c NULL in which case no value will be assigned to that
   /// parameter.
   ///
   /// @return @c EINA_FALSE on success, @c EINA_TRUE on error.
   ///
   /// @param pos The character position to request co-ordinates for.
   /// @param[out] cx A pointer to an @c Evas_Coord to store the X value in (can be NULL).
   /// @param[out] cy A pointer to an @c Evas_Coord to store the Y value in (can be NULL).
   /// @param[out] cw A pointer to an @c Evas_Coord to store the Width value in (can be NULL).
   /// @param[out] ch A pointer to an @c Evas_Coord to store the Height value in (can be NULL).
   ///
   bool char_pos_get(int pos_, Evas_Coord* cx_, Evas_Coord* cy_, Evas_Coord* cw_, Evas_Coord* ch_) const
   {
      Eina_Bool _tmp_ret;
      eo_do(_eo_ptr(), _tmp_ret = ::evas_obj_text_char_pos_get(pos_, cx_, cy_, cw_, ch_));
      return efl::eolian::to_cxx<bool>(_tmp_ret, std::tuple<std::false_type>());
   }

   static Eo_Class const* _eo_class()
   {
      return(EVAS_TEXT_CLASS);
   }

private:
   static Eo* _c0(efl::eo::parent_type _p)
   {
      return eo_add_ref(EVAS_TEXT_CLASS, _p._eo_raw, eo_constructor());
   }

};
} 

template <typename T>
void evas_text_dbg_info_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, Eo_Dbg_Info * root_node_)
{
   static_cast<T*>(self->this_)->dbg_info_get(root_node_);
}

template <typename T>
void evas_text_size_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, Evas_Coord w_, Evas_Coord h_)
{
   static_cast<T*>(self->this_)->size_set(w_, h_);
}

template <typename T>
void evas_text_text_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, const char * text_)
{
   static_cast<T*>(self->this_)->text_set(efl::eolian::to_cxx<std::string>(text_, std::tuple<std::false_type>()));
}

template <typename T>
std::string evas_text_text_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->text_get();
}

template <typename T>
void evas_text_font_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, const char ** font_, Efl_Font_Size* size_)
{
   static_cast<T*>(self->this_)->font_get(font_, size_);
}

template <typename T>
void evas_text_font_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, const char * font_, Efl_Font_Size size_)
{
   static_cast<T*>(self->this_)->font_set(efl::eolian::to_cxx<std::string>(font_, std::tuple<std::false_type>()), size_);
}

template <typename T>
std::string evas_text_font_source_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->font_source_get();
}

template <typename T>
void evas_text_font_source_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, const char * font_source_)
{
   static_cast<T*>(self->this_)->font_source_set(efl::eolian::to_cxx<std::string>(font_source_, std::tuple<std::false_type>()));
}

template <typename T>
void evas_text_shadow_color_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int* r_, int* g_, int* b_, int* a_)
{
   static_cast<T*>(self->this_)->shadow_color_get(r_, g_, b_, a_);
}

template <typename T>
void evas_text_shadow_color_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int r_, int g_, int b_, int a_)
{
   static_cast<T*>(self->this_)->shadow_color_set(r_, g_, b_, a_);
}

template <typename T>
double evas_text_ellipsis_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->ellipsis_get();
}

template <typename T>
void evas_text_ellipsis_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, double ellipsis_)
{
   static_cast<T*>(self->this_)->ellipsis_set(ellipsis_);
}

template <typename T>
std::string evas_text_bidi_delimiters_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->bidi_delimiters_get();
}

template <typename T>
void evas_text_bidi_delimiters_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, const char * delim_)
{
   static_cast<T*>(self->this_)->bidi_delimiters_set(efl::eolian::to_cxx<std::string>(delim_, std::tuple<std::false_type>()));
}

template <typename T>
void evas_text_outline_color_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int* r_, int* g_, int* b_, int* a_)
{
   static_cast<T*>(self->this_)->outline_color_get(r_, g_, b_, a_);
}

template <typename T>
void evas_text_outline_color_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int r_, int g_, int b_, int a_)
{
   static_cast<T*>(self->this_)->outline_color_set(r_, g_, b_, a_);
}

template <typename T>
void evas_text_glow2_color_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int* r_, int* g_, int* b_, int* a_)
{
   static_cast<T*>(self->this_)->glow2_color_get(r_, g_, b_, a_);
}

template <typename T>
void evas_text_glow2_color_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int r_, int g_, int b_, int a_)
{
   static_cast<T*>(self->this_)->glow2_color_set(r_, g_, b_, a_);
}

template <typename T>
Evas_Text_Style_Type evas_text_style_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->style_get();
}

template <typename T>
void evas_text_style_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, Evas_Text_Style_Type style_)
{
   static_cast<T*>(self->this_)->style_set(style_);
}

template <typename T>
void evas_text_glow_color_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int* r_, int* g_, int* b_, int* a_)
{
   static_cast<T*>(self->this_)->glow_color_get(r_, g_, b_, a_);
}

template <typename T>
void evas_text_glow_color_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int r_, int g_, int b_, int a_)
{
   static_cast<T*>(self->this_)->glow_color_set(r_, g_, b_, a_);
}

template <typename T>
void evas_text_filter_program_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, const char * program_)
{
   static_cast<T*>(self->this_)->filter_program_set(efl::eolian::to_cxx<std::string>(program_, std::tuple<std::false_type>()));
}

template <typename T>
void evas_text_filter_source_set_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, const char * name_, Eo * eobj_)
{
   static_cast<T*>(self->this_)->filter_source_set(efl::eolian::to_cxx<std::string>(name_, std::tuple<std::false_type>()), efl::eolian::to_cxx<efl::eo::base>(eobj_, std::tuple<std::false_type>()));
}

template <typename T>
Evas_Coord evas_text_max_descent_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->max_descent_get();
}

template <typename T>
void evas_text_style_pad_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int* l_, int* r_, int* t_, int* b_)
{
   static_cast<T*>(self->this_)->style_pad_get(l_, r_, t_, b_);
}

template <typename T>
Evas_BiDi_Direction evas_text_direction_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->direction_get();
}

template <typename T>
Evas_Coord evas_text_ascent_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->ascent_get();
}

template <typename T>
Evas_Coord evas_text_horiz_advance_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->horiz_advance_get();
}

template <typename T>
Evas_Coord evas_text_inset_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->inset_get();
}

template <typename T>
Evas_Coord evas_text_max_ascent_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->max_ascent_get();
}

template <typename T>
Evas_Coord evas_text_vert_advance_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->vert_advance_get();
}

template <typename T>
Evas_Coord evas_text_descent_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self)
{
   return static_cast<T*>(self->this_)->descent_get();
}

template <typename T>
int evas_text_last_up_to_pos_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, Evas_Coord x_, Evas_Coord y_)
{
   return static_cast<T*>(self->this_)->last_up_to_pos(x_, y_);
}

template <typename T>
int evas_text_char_coords_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, Evas_Coord x_, Evas_Coord y_, Evas_Coord* cx_, Evas_Coord* cy_, Evas_Coord* cw_, Evas_Coord* ch_)
{
   return static_cast<T*>(self->this_)->char_coords_get(x_, y_, cx_, cy_, cw_, ch_);
}

template <typename T>
bool evas_text_char_pos_get_wrapper(Eo* objid EINA_UNUSED, efl::eo::detail::Inherit_Private_Data* self, int pos_, Evas_Coord* cx_, Evas_Coord* cy_, Evas_Coord* cw_, Evas_Coord* ch_)
{
   return static_cast<T*>(self->this_)->char_pos_get(pos_, cx_, cy_, cw_, ch_);
}

namespace efl { namespace eo { namespace detail {

template<>
struct operations< evas::text >
{
   template <typename T>
   struct type
   {
      virtual void dbg_info_get(Eo_Dbg_Info * root_node_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::eo_dbg_info_get(root_node_));
      }

      virtual void size_set(Evas_Coord w_, Evas_Coord h_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_size_set(w_, h_));
      }

      virtual void text_set(std::string text_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::efl_text_set(efl::eolian::to_c(text_)));
      }

      virtual std::string text_get()
      {
         const char * _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::efl_text_get());
            return efl::eolian::to_cxx<std::string>(_tmp_ret, std::tuple<std::false_type>());
      }

      virtual void font_get(const char ** font_, Efl_Font_Size* size_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::efl_text_properties_font_get(font_, size_));
      }

      virtual void font_set(std::string font_, Efl_Font_Size size_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::efl_text_properties_font_set(efl::eolian::to_c(font_), size_));
      }

      virtual std::string font_source_get()
      {
         const char * _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::efl_text_properties_font_source_get());
            return efl::eolian::to_cxx<std::string>(_tmp_ret, std::tuple<std::false_type>());
      }

      virtual void font_source_set(std::string font_source_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::efl_text_properties_font_source_set(efl::eolian::to_c(font_source_)));
      }

      virtual void shadow_color_get(int* r_, int* g_, int* b_, int* a_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_shadow_color_get(r_, g_, b_, a_));
      }

      virtual void shadow_color_set(int r_, int g_, int b_, int a_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_shadow_color_set(r_, g_, b_, a_));
      }

      virtual double ellipsis_get()
      {
         double _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_ellipsis_get());
            return _tmp_ret;
      }

      virtual void ellipsis_set(double ellipsis_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_ellipsis_set(ellipsis_));
      }

      virtual std::string bidi_delimiters_get()
      {
         const char * _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_bidi_delimiters_get());
            return efl::eolian::to_cxx<std::string>(_tmp_ret, std::tuple<std::false_type>());
      }

      virtual void bidi_delimiters_set(std::string delim_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_bidi_delimiters_set(efl::eolian::to_c(delim_)));
      }

      virtual void outline_color_get(int* r_, int* g_, int* b_, int* a_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_outline_color_get(r_, g_, b_, a_));
      }

      virtual void outline_color_set(int r_, int g_, int b_, int a_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_outline_color_set(r_, g_, b_, a_));
      }

      virtual void glow2_color_get(int* r_, int* g_, int* b_, int* a_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_glow2_color_get(r_, g_, b_, a_));
      }

      virtual void glow2_color_set(int r_, int g_, int b_, int a_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_glow2_color_set(r_, g_, b_, a_));
      }

      virtual Evas_Text_Style_Type style_get()
      {
         Evas_Text_Style_Type _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_style_get());
            return _tmp_ret;
      }

      virtual void style_set(Evas_Text_Style_Type style_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_style_set(style_));
      }

      virtual void glow_color_get(int* r_, int* g_, int* b_, int* a_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_glow_color_get(r_, g_, b_, a_));
      }

      virtual void glow_color_set(int r_, int g_, int b_, int a_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_glow_color_set(r_, g_, b_, a_));
      }

      virtual void filter_program_set(std::string program_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_filter_program_set(efl::eolian::to_c(program_)));
      }

      virtual void filter_source_set(std::string name_, efl::eo::base eobj_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_filter_source_set(efl::eolian::to_c(name_), efl::eolian::to_c(eobj_)));
      }

      virtual Evas_Coord max_descent_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_max_descent_get());
            return _tmp_ret;
      }

      virtual void style_pad_get(int* l_, int* r_, int* t_, int* b_)
      {
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               ::evas_obj_text_style_pad_get(l_, r_, t_, b_));
      }

      virtual Evas_BiDi_Direction direction_get()
      {
         Evas_BiDi_Direction _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_direction_get());
            return _tmp_ret;
      }

      virtual Evas_Coord ascent_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_ascent_get());
            return _tmp_ret;
      }

      virtual Evas_Coord horiz_advance_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_horiz_advance_get());
            return _tmp_ret;
      }

      virtual Evas_Coord inset_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_inset_get());
            return _tmp_ret;
      }

      virtual Evas_Coord max_ascent_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_max_ascent_get());
            return _tmp_ret;
      }

      virtual Evas_Coord vert_advance_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_vert_advance_get());
            return _tmp_ret;
      }

      virtual Evas_Coord descent_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_descent_get());
            return _tmp_ret;
      }

      virtual int last_up_to_pos(Evas_Coord x_, Evas_Coord y_)
      {
         int _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_last_up_to_pos(x_, y_));
            return _tmp_ret;
      }

      virtual int char_coords_get(Evas_Coord x_, Evas_Coord y_, Evas_Coord* cx_, Evas_Coord* cy_, Evas_Coord* cw_, Evas_Coord* ch_)
      {
         int _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_char_coords_get(x_, y_, cx_, cy_, cw_, ch_));
            return _tmp_ret;
      }

      virtual bool char_pos_get(int pos_, Evas_Coord* cx_, Evas_Coord* cy_, Evas_Coord* cw_, Evas_Coord* ch_)
      {
         Eina_Bool _tmp_ret = {};
         eo_do_super(static_cast<T*>(this)->_eo_ptr(),
               static_cast<T*>(this)->_eo_class(),
               _tmp_ret = ::evas_obj_text_char_pos_get(pos_, cx_, cy_, cw_, ch_));
            return efl::eolian::to_cxx<bool>(_tmp_ret, std::tuple<std::false_type>());
      }

   };
};


template<>
struct operation_description_class_size< evas::text >
{
   static const int value = 36;
};

template <typename T>
int initialize_operation_description(efl::eo::detail::tag<evas::text>
                                 , Eo_Op_Description* ops)
{
   (void)ops;
   ops[0].func = reinterpret_cast<void*>(& ::evas_text_dbg_info_get_wrapper<T>);
   ops[0].api_func = reinterpret_cast<void*>(& ::eo_dbg_info_get);
   ops[0].op = EO_OP_OVERRIDE;
   ops[0].op_type = EO_OP_TYPE_REGULAR;
   ops[0].doc = NULL;

   ops[1].func = reinterpret_cast<void*>(& ::evas_text_size_set_wrapper<T>);
   ops[1].api_func = reinterpret_cast<void*>(& ::evas_obj_size_set);
   ops[1].op = EO_OP_OVERRIDE;
   ops[1].op_type = EO_OP_TYPE_REGULAR;
   ops[1].doc = NULL;

   ops[2].func = reinterpret_cast<void*>(& ::evas_text_text_set_wrapper<T>);
   ops[2].api_func = reinterpret_cast<void*>(& ::efl_text_set);
   ops[2].op = EO_OP_OVERRIDE;
   ops[2].op_type = EO_OP_TYPE_REGULAR;
   ops[2].doc = NULL;

   ops[3].func = reinterpret_cast<void*>(& ::evas_text_text_get_wrapper<T>);
   ops[3].api_func = reinterpret_cast<void*>(& ::efl_text_get);
   ops[3].op = EO_OP_OVERRIDE;
   ops[3].op_type = EO_OP_TYPE_REGULAR;
   ops[3].doc = NULL;

   ops[4].func = reinterpret_cast<void*>(& ::evas_text_font_get_wrapper<T>);
   ops[4].api_func = reinterpret_cast<void*>(& ::efl_text_properties_font_get);
   ops[4].op = EO_OP_OVERRIDE;
   ops[4].op_type = EO_OP_TYPE_REGULAR;
   ops[4].doc = NULL;

   ops[5].func = reinterpret_cast<void*>(& ::evas_text_font_set_wrapper<T>);
   ops[5].api_func = reinterpret_cast<void*>(& ::efl_text_properties_font_set);
   ops[5].op = EO_OP_OVERRIDE;
   ops[5].op_type = EO_OP_TYPE_REGULAR;
   ops[5].doc = NULL;

   ops[6].func = reinterpret_cast<void*>(& ::evas_text_font_source_get_wrapper<T>);
   ops[6].api_func = reinterpret_cast<void*>(& ::efl_text_properties_font_source_get);
   ops[6].op = EO_OP_OVERRIDE;
   ops[6].op_type = EO_OP_TYPE_REGULAR;
   ops[6].doc = NULL;

   ops[7].func = reinterpret_cast<void*>(& ::evas_text_font_source_set_wrapper<T>);
   ops[7].api_func = reinterpret_cast<void*>(& ::efl_text_properties_font_source_set);
   ops[7].op = EO_OP_OVERRIDE;
   ops[7].op_type = EO_OP_TYPE_REGULAR;
   ops[7].doc = NULL;

   ops[8].func = reinterpret_cast<void*>(& ::evas_text_shadow_color_get_wrapper<T>);
   ops[8].api_func = reinterpret_cast<void*>(& ::evas_obj_text_shadow_color_get);
   ops[8].op = EO_OP_OVERRIDE;
   ops[8].op_type = EO_OP_TYPE_REGULAR;
   ops[8].doc = NULL;

   ops[9].func = reinterpret_cast<void*>(& ::evas_text_shadow_color_set_wrapper<T>);
   ops[9].api_func = reinterpret_cast<void*>(& ::evas_obj_text_shadow_color_set);
   ops[9].op = EO_OP_OVERRIDE;
   ops[9].op_type = EO_OP_TYPE_REGULAR;
   ops[9].doc = NULL;

   ops[10].func = reinterpret_cast<void*>(& ::evas_text_ellipsis_get_wrapper<T>);
   ops[10].api_func = reinterpret_cast<void*>(& ::evas_obj_text_ellipsis_get);
   ops[10].op = EO_OP_OVERRIDE;
   ops[10].op_type = EO_OP_TYPE_REGULAR;
   ops[10].doc = NULL;

   ops[11].func = reinterpret_cast<void*>(& ::evas_text_ellipsis_set_wrapper<T>);
   ops[11].api_func = reinterpret_cast<void*>(& ::evas_obj_text_ellipsis_set);
   ops[11].op = EO_OP_OVERRIDE;
   ops[11].op_type = EO_OP_TYPE_REGULAR;
   ops[11].doc = NULL;

   ops[12].func = reinterpret_cast<void*>(& ::evas_text_bidi_delimiters_get_wrapper<T>);
   ops[12].api_func = reinterpret_cast<void*>(& ::evas_obj_text_bidi_delimiters_get);
   ops[12].op = EO_OP_OVERRIDE;
   ops[12].op_type = EO_OP_TYPE_REGULAR;
   ops[12].doc = NULL;

   ops[13].func = reinterpret_cast<void*>(& ::evas_text_bidi_delimiters_set_wrapper<T>);
   ops[13].api_func = reinterpret_cast<void*>(& ::evas_obj_text_bidi_delimiters_set);
   ops[13].op = EO_OP_OVERRIDE;
   ops[13].op_type = EO_OP_TYPE_REGULAR;
   ops[13].doc = NULL;

   ops[14].func = reinterpret_cast<void*>(& ::evas_text_outline_color_get_wrapper<T>);
   ops[14].api_func = reinterpret_cast<void*>(& ::evas_obj_text_outline_color_get);
   ops[14].op = EO_OP_OVERRIDE;
   ops[14].op_type = EO_OP_TYPE_REGULAR;
   ops[14].doc = NULL;

   ops[15].func = reinterpret_cast<void*>(& ::evas_text_outline_color_set_wrapper<T>);
   ops[15].api_func = reinterpret_cast<void*>(& ::evas_obj_text_outline_color_set);
   ops[15].op = EO_OP_OVERRIDE;
   ops[15].op_type = EO_OP_TYPE_REGULAR;
   ops[15].doc = NULL;

   ops[16].func = reinterpret_cast<void*>(& ::evas_text_glow2_color_get_wrapper<T>);
   ops[16].api_func = reinterpret_cast<void*>(& ::evas_obj_text_glow2_color_get);
   ops[16].op = EO_OP_OVERRIDE;
   ops[16].op_type = EO_OP_TYPE_REGULAR;
   ops[16].doc = NULL;

   ops[17].func = reinterpret_cast<void*>(& ::evas_text_glow2_color_set_wrapper<T>);
   ops[17].api_func = reinterpret_cast<void*>(& ::evas_obj_text_glow2_color_set);
   ops[17].op = EO_OP_OVERRIDE;
   ops[17].op_type = EO_OP_TYPE_REGULAR;
   ops[17].doc = NULL;

   ops[18].func = reinterpret_cast<void*>(& ::evas_text_style_get_wrapper<T>);
   ops[18].api_func = reinterpret_cast<void*>(& ::evas_obj_text_style_get);
   ops[18].op = EO_OP_OVERRIDE;
   ops[18].op_type = EO_OP_TYPE_REGULAR;
   ops[18].doc = NULL;

   ops[19].func = reinterpret_cast<void*>(& ::evas_text_style_set_wrapper<T>);
   ops[19].api_func = reinterpret_cast<void*>(& ::evas_obj_text_style_set);
   ops[19].op = EO_OP_OVERRIDE;
   ops[19].op_type = EO_OP_TYPE_REGULAR;
   ops[19].doc = NULL;

   ops[20].func = reinterpret_cast<void*>(& ::evas_text_glow_color_get_wrapper<T>);
   ops[20].api_func = reinterpret_cast<void*>(& ::evas_obj_text_glow_color_get);
   ops[20].op = EO_OP_OVERRIDE;
   ops[20].op_type = EO_OP_TYPE_REGULAR;
   ops[20].doc = NULL;

   ops[21].func = reinterpret_cast<void*>(& ::evas_text_glow_color_set_wrapper<T>);
   ops[21].api_func = reinterpret_cast<void*>(& ::evas_obj_text_glow_color_set);
   ops[21].op = EO_OP_OVERRIDE;
   ops[21].op_type = EO_OP_TYPE_REGULAR;
   ops[21].doc = NULL;

   ops[22].func = reinterpret_cast<void*>(& ::evas_text_filter_program_set_wrapper<T>);
   ops[22].api_func = reinterpret_cast<void*>(& ::evas_obj_text_filter_program_set);
   ops[22].op = EO_OP_OVERRIDE;
   ops[22].op_type = EO_OP_TYPE_REGULAR;
   ops[22].doc = NULL;

   ops[23].func = reinterpret_cast<void*>(& ::evas_text_filter_source_set_wrapper<T>);
   ops[23].api_func = reinterpret_cast<void*>(& ::evas_obj_text_filter_source_set);
   ops[23].op = EO_OP_OVERRIDE;
   ops[23].op_type = EO_OP_TYPE_REGULAR;
   ops[23].doc = NULL;

   ops[24].func = reinterpret_cast<void*>(& ::evas_text_max_descent_get_wrapper<T>);
   ops[24].api_func = reinterpret_cast<void*>(& ::evas_obj_text_max_descent_get);
   ops[24].op = EO_OP_OVERRIDE;
   ops[24].op_type = EO_OP_TYPE_REGULAR;
   ops[24].doc = NULL;

   ops[25].func = reinterpret_cast<void*>(& ::evas_text_style_pad_get_wrapper<T>);
   ops[25].api_func = reinterpret_cast<void*>(& ::evas_obj_text_style_pad_get);
   ops[25].op = EO_OP_OVERRIDE;
   ops[25].op_type = EO_OP_TYPE_REGULAR;
   ops[25].doc = NULL;

   ops[26].func = reinterpret_cast<void*>(& ::evas_text_direction_get_wrapper<T>);
   ops[26].api_func = reinterpret_cast<void*>(& ::evas_obj_text_direction_get);
   ops[26].op = EO_OP_OVERRIDE;
   ops[26].op_type = EO_OP_TYPE_REGULAR;
   ops[26].doc = NULL;

   ops[27].func = reinterpret_cast<void*>(& ::evas_text_ascent_get_wrapper<T>);
   ops[27].api_func = reinterpret_cast<void*>(& ::evas_obj_text_ascent_get);
   ops[27].op = EO_OP_OVERRIDE;
   ops[27].op_type = EO_OP_TYPE_REGULAR;
   ops[27].doc = NULL;

   ops[28].func = reinterpret_cast<void*>(& ::evas_text_horiz_advance_get_wrapper<T>);
   ops[28].api_func = reinterpret_cast<void*>(& ::evas_obj_text_horiz_advance_get);
   ops[28].op = EO_OP_OVERRIDE;
   ops[28].op_type = EO_OP_TYPE_REGULAR;
   ops[28].doc = NULL;

   ops[29].func = reinterpret_cast<void*>(& ::evas_text_inset_get_wrapper<T>);
   ops[29].api_func = reinterpret_cast<void*>(& ::evas_obj_text_inset_get);
   ops[29].op = EO_OP_OVERRIDE;
   ops[29].op_type = EO_OP_TYPE_REGULAR;
   ops[29].doc = NULL;

   ops[30].func = reinterpret_cast<void*>(& ::evas_text_max_ascent_get_wrapper<T>);
   ops[30].api_func = reinterpret_cast<void*>(& ::evas_obj_text_max_ascent_get);
   ops[30].op = EO_OP_OVERRIDE;
   ops[30].op_type = EO_OP_TYPE_REGULAR;
   ops[30].doc = NULL;

   ops[31].func = reinterpret_cast<void*>(& ::evas_text_vert_advance_get_wrapper<T>);
   ops[31].api_func = reinterpret_cast<void*>(& ::evas_obj_text_vert_advance_get);
   ops[31].op = EO_OP_OVERRIDE;
   ops[31].op_type = EO_OP_TYPE_REGULAR;
   ops[31].doc = NULL;

   ops[32].func = reinterpret_cast<void*>(& ::evas_text_descent_get_wrapper<T>);
   ops[32].api_func = reinterpret_cast<void*>(& ::evas_obj_text_descent_get);
   ops[32].op = EO_OP_OVERRIDE;
   ops[32].op_type = EO_OP_TYPE_REGULAR;
   ops[32].doc = NULL;

   ops[33].func = reinterpret_cast<void*>(& ::evas_text_last_up_to_pos_wrapper<T>);
   ops[33].api_func = reinterpret_cast<void*>(& ::evas_obj_text_last_up_to_pos);
   ops[33].op = EO_OP_OVERRIDE;
   ops[33].op_type = EO_OP_TYPE_REGULAR;
   ops[33].doc = NULL;

   ops[34].func = reinterpret_cast<void*>(& ::evas_text_char_coords_get_wrapper<T>);
   ops[34].api_func = reinterpret_cast<void*>(& ::evas_obj_text_char_coords_get);
   ops[34].op = EO_OP_OVERRIDE;
   ops[34].op_type = EO_OP_TYPE_REGULAR;
   ops[34].doc = NULL;

   ops[35].func = reinterpret_cast<void*>(& ::evas_text_char_pos_get_wrapper<T>);
   ops[35].api_func = reinterpret_cast<void*>(& ::evas_obj_text_char_pos_get);
   ops[35].op = EO_OP_OVERRIDE;
   ops[35].op_type = EO_OP_TYPE_REGULAR;
   ops[35].doc = NULL;

   return 0;
}
inline void
call_constructor(tag< evas::text >
               , Eo* eo, Eo_Class const* cls EINA_UNUSED,
               args_class<evas::text, ::std::tuple<> > const& args)
{
   (void)args;
   eo_do_super(eo, cls, ::eo_constructor());
}

inline void
call_constructor(tag< evas::text >
               , Eo* eo, Eo_Class const* cls EINA_UNUSED,
               args_class<evas::text, ::std::tuple<efl::eo::parent_type> > const& args)
{
   eo_do_super(eo, cls, ::eo_constructor());
   eo_do(eo, ::eo_parent_set(args.get<0>()._eo_raw));
}

template<>
struct extension_inheritance< evas::text>
{
   template <typename U>
   struct type
   {
      operator evas::text() const
      {
         return evas::text(eo_ref(static_cast<U const*>(this)->_eo_ptr()));
      }

      void dbg_info_get(Eo_Dbg_Info * root_node_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::eo_dbg_info_get(root_node_));
      }

      void size_set(Evas_Coord w_, Evas_Coord h_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_size_set(w_, h_));
      }

      void text_set(std::string text_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::efl_text_set(efl::eolian::to_c(text_)));
      }

      std::string text_get()
      {
         const char * _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::efl_text_get());
            return efl::eolian::to_cxx<std::string>(_tmp_ret, std::tuple<std::false_type>());
      }

      void font_get(const char ** font_, Efl_Font_Size* size_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::efl_text_properties_font_get(font_, size_));
      }

      void font_set(std::string font_, Efl_Font_Size size_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::efl_text_properties_font_set(efl::eolian::to_c(font_), size_));
      }

      std::string font_source_get()
      {
         const char * _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::efl_text_properties_font_source_get());
            return efl::eolian::to_cxx<std::string>(_tmp_ret, std::tuple<std::false_type>());
      }

      void font_source_set(std::string font_source_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::efl_text_properties_font_source_set(efl::eolian::to_c(font_source_)));
      }

      void shadow_color_get(int* r_, int* g_, int* b_, int* a_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_shadow_color_get(r_, g_, b_, a_));
      }

      void shadow_color_set(int r_, int g_, int b_, int a_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_shadow_color_set(r_, g_, b_, a_));
      }

      double ellipsis_get()
      {
         double _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_ellipsis_get());
            return _tmp_ret;
      }

      void ellipsis_set(double ellipsis_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_ellipsis_set(ellipsis_));
      }

      std::string bidi_delimiters_get()
      {
         const char * _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_bidi_delimiters_get());
            return efl::eolian::to_cxx<std::string>(_tmp_ret, std::tuple<std::false_type>());
      }

      void bidi_delimiters_set(std::string delim_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_bidi_delimiters_set(efl::eolian::to_c(delim_)));
      }

      void outline_color_get(int* r_, int* g_, int* b_, int* a_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_outline_color_get(r_, g_, b_, a_));
      }

      void outline_color_set(int r_, int g_, int b_, int a_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_outline_color_set(r_, g_, b_, a_));
      }

      void glow2_color_get(int* r_, int* g_, int* b_, int* a_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_glow2_color_get(r_, g_, b_, a_));
      }

      void glow2_color_set(int r_, int g_, int b_, int a_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_glow2_color_set(r_, g_, b_, a_));
      }

      Evas_Text_Style_Type style_get()
      {
         Evas_Text_Style_Type _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_style_get());
            return _tmp_ret;
      }

      void style_set(Evas_Text_Style_Type style_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_style_set(style_));
      }

      void glow_color_get(int* r_, int* g_, int* b_, int* a_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_glow_color_get(r_, g_, b_, a_));
      }

      void glow_color_set(int r_, int g_, int b_, int a_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_glow_color_set(r_, g_, b_, a_));
      }

      void filter_program_set(std::string program_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_filter_program_set(efl::eolian::to_c(program_)));
      }

      void filter_source_set(std::string name_, efl::eo::base eobj_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_filter_source_set(efl::eolian::to_c(name_), efl::eolian::to_c(eobj_)));
      }

      Evas_Coord max_descent_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_max_descent_get());
            return _tmp_ret;
      }

      void style_pad_get(int* l_, int* r_, int* t_, int* b_)
      {
         eo_do(static_cast<U*>(this)->_eo_ptr(), ::evas_obj_text_style_pad_get(l_, r_, t_, b_));
      }

      Evas_BiDi_Direction direction_get()
      {
         Evas_BiDi_Direction _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_direction_get());
            return _tmp_ret;
      }

      Evas_Coord ascent_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_ascent_get());
            return _tmp_ret;
      }

      Evas_Coord horiz_advance_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_horiz_advance_get());
            return _tmp_ret;
      }

      Evas_Coord inset_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_inset_get());
            return _tmp_ret;
      }

      Evas_Coord max_ascent_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_max_ascent_get());
            return _tmp_ret;
      }

      Evas_Coord vert_advance_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_vert_advance_get());
            return _tmp_ret;
      }

      Evas_Coord descent_get()
      {
         Evas_Coord _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_descent_get());
            return _tmp_ret;
      }

      int last_up_to_pos(Evas_Coord x_, Evas_Coord y_)
      {
         int _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_last_up_to_pos(x_, y_));
            return _tmp_ret;
      }

      int char_coords_get(Evas_Coord x_, Evas_Coord y_, Evas_Coord* cx_, Evas_Coord* cy_, Evas_Coord* cw_, Evas_Coord* ch_)
      {
         int _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_char_coords_get(x_, y_, cx_, cy_, cw_, ch_));
            return _tmp_ret;
      }

      bool char_pos_get(int pos_, Evas_Coord* cx_, Evas_Coord* cy_, Evas_Coord* cw_, Evas_Coord* ch_)
      {
         Eina_Bool _tmp_ret = {};
         eo_do(static_cast<U*>(this)->_eo_ptr(), _tmp_ret = ::evas_obj_text_char_pos_get(pos_, cx_, cy_, cw_, ch_));
            return efl::eolian::to_cxx<bool>(_tmp_ret, std::tuple<std::false_type>());
      }

   };
};

inline Eo_Class const* get_eo_class(tag<evas::text>)
{
   return (EVAS_TEXT_CLASS);
}

} } }
#endif // EFL_GENERATED_EVAS_TEXT_HH

