#ifndef EVAS_CANVAS3D_MATERIAL_IMPL_HH
#define EVAS_CANVAS3D_MATERIAL_IMPL_HH

#include "evas_canvas3d_material.eo.hh"

namespace evas { namespace canvas3d { 
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<bool>::type Material::enable_get( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib) const
{
    Eina_Bool __return_value =  ::evas_canvas3d_material_enable_get(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib));
    return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::enable_set( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib,  ::efl::eolian::in_traits<bool>::type enable) const
{
     ::evas_canvas3d_material_enable_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib),
         ::efl::eolian::convert_to_c<Eina_Bool,  ::efl::eolian::in_traits<bool>::type>(enable));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<Evas_Real>::type Material::shininess_get() const
{
    Evas_Real __return_value =  ::evas_canvas3d_material_shininess_get(_eo_ptr());
    return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<Evas_Real>::type>(__return_value);
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::shininess_set( ::efl::eolian::in_traits<Evas_Real>::type shininess) const
{
     ::evas_canvas3d_material_shininess_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(shininess));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits< ::evas::canvas3d::Texture>::type Material::texture_get( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib) const
{
     ::Evas_Canvas3D_Texture* __return_value =  ::evas_canvas3d_material_texture_get(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib));
    return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::evas::canvas3d::Texture>::type>(__return_value);
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::texture_set( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib,  ::efl::eolian::in_traits< ::evas::canvas3d::Texture>::type texture) const
{
     ::evas_canvas3d_material_texture_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib),
         ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Texture*,  ::efl::eolian::in_traits< ::evas::canvas3d::Texture>::type>(texture));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::color_set( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib,  ::efl::eolian::in_traits<Evas_Real>::type r,  ::efl::eolian::in_traits<Evas_Real>::type g,  ::efl::eolian::in_traits<Evas_Real>::type b,  ::efl::eolian::in_traits<Evas_Real>::type a) const
{
     ::evas_canvas3d_material_color_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(r),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(g),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(b),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(a));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::color_get( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib,  ::efl::eolian::out_traits<Evas_Real>::type r,  ::efl::eolian::out_traits<Evas_Real>::type g,  ::efl::eolian::out_traits<Evas_Real>::type b,  ::efl::eolian::out_traits<Evas_Real>::type a) const
{
    Evas_Real __out_param_r = {};
    Evas_Real __out_param_g = {};
    Evas_Real __out_param_b = {};
    Evas_Real __out_param_a = {};
     ::evas_canvas3d_material_color_get(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib),
        & __out_param_r,
        & __out_param_g,
        & __out_param_b,
        & __out_param_a);
    ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(r, __out_param_r);
    ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(g, __out_param_g);
    ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(b, __out_param_b);
    ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(a, __out_param_a);
}
#endif
} } 
namespace eo_cxx {
namespace evas { namespace canvas3d { 
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<bool>::type Material::enable_get( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib) const
{
    Eina_Bool __return_value =  ::evas_canvas3d_material_enable_get(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib));
    return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<bool>::type>(__return_value);
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::enable_set( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib,  ::efl::eolian::in_traits<bool>::type enable) const
{
     ::evas_canvas3d_material_enable_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib),
         ::efl::eolian::convert_to_c<Eina_Bool,  ::efl::eolian::in_traits<bool>::type>(enable));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<Evas_Real>::type Material::shininess_get() const
{
    Evas_Real __return_value =  ::evas_canvas3d_material_shininess_get(_eo_ptr());
    return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits<Evas_Real>::type>(__return_value);
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::shininess_set( ::efl::eolian::in_traits<Evas_Real>::type shininess) const
{
     ::evas_canvas3d_material_shininess_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(shininess));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits< ::evas::canvas3d::Texture>::type Material::texture_get( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib) const
{
     ::Evas_Canvas3D_Texture* __return_value =  ::evas_canvas3d_material_texture_get(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib));
    return ::efl::eolian::convert_to_return< ::efl::eolian::return_traits< ::evas::canvas3d::Texture>::type>(__return_value);
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::texture_set( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib,  ::efl::eolian::in_traits< ::evas::canvas3d::Texture>::type texture) const
{
     ::evas_canvas3d_material_texture_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib),
         ::efl::eolian::convert_to_c< ::Evas_Canvas3D_Texture*,  ::efl::eolian::in_traits< ::evas::canvas3d::Texture>::type>(texture));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::color_set( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib,  ::efl::eolian::in_traits<Evas_Real>::type r,  ::efl::eolian::in_traits<Evas_Real>::type g,  ::efl::eolian::in_traits<Evas_Real>::type b,  ::efl::eolian::in_traits<Evas_Real>::type a) const
{
     ::evas_canvas3d_material_color_set(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(r),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(g),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(b),
         ::efl::eolian::convert_to_c<Evas_Real,  ::efl::eolian::in_traits<Evas_Real>::type>(a));
}
#endif
#ifdef EFL_BETA_API_SUPPORT
inline ::efl::eolian::return_traits<void>::type Material::color_get( ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type attrib,  ::efl::eolian::out_traits<Evas_Real>::type r,  ::efl::eolian::out_traits<Evas_Real>::type g,  ::efl::eolian::out_traits<Evas_Real>::type b,  ::efl::eolian::out_traits<Evas_Real>::type a) const
{
    Evas_Real __out_param_r = {};
    Evas_Real __out_param_g = {};
    Evas_Real __out_param_b = {};
    Evas_Real __out_param_a = {};
     ::evas_canvas3d_material_color_get(_eo_ptr(),
         ::efl::eolian::convert_to_c<Evas_Canvas3D_Material_Attrib,  ::efl::eolian::in_traits<Evas_Canvas3D_Material_Attrib>::type>(attrib),
        & __out_param_r,
        & __out_param_g,
        & __out_param_b,
        & __out_param_a);
    ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(r, __out_param_r);
    ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(g, __out_param_g);
    ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(b, __out_param_b);
    ::efl::eolian::assign_out< ::efl::eolian::out_traits<Evas_Real>::type, Evas_Real>(a, __out_param_a);
}
#endif
inline evas::canvas3d::Material::operator ::evas::canvas3d::Material() const { return *static_cast< ::evas::canvas3d::Material const*>(static_cast<void const*>(this)); }
inline evas::canvas3d::Material::operator ::evas::canvas3d::Material&() { return *static_cast< ::evas::canvas3d::Material*>(static_cast<void*>(this)); }
inline evas::canvas3d::Material::operator ::evas::canvas3d::Material const&() const { return *static_cast< ::evas::canvas3d::Material const*>(static_cast<void const*>(this)); }
} } }
#endif
