eina_cxx: fix build on 32bits systems.

This commit is contained in:
Cedric Bail 2014-02-26 12:09:26 -03:00
parent 2d52015823
commit 1fb3822893
1 changed files with 25 additions and 16 deletions

View File

@ -8,28 +8,15 @@
namespace efl { namespace eina {
template <typename T, typename Enable = void>
struct _eina_value_traits;
template <typename T>
struct _eina_value_traits_base;
template <typename T>
struct _eina_value_traits_aux;
// Indirection for uint64_t. uint64_t can be a typedef for unsigned
// long, so we can't specialize on the same template
template <>
struct _eina_value_traits_aux<uint64_t>
{
static ::Eina_Value_Type const* value_type()
{
return EINA_VALUE_TYPE_UINT64;
}
};
template <typename T, typename Enable = void>
struct _eina_value_traits : _eina_value_traits_aux<T>
{
};
template <typename T>
struct _eina_value_traits_base
{
@ -62,6 +49,23 @@ struct _eina_value_traits_base
}
};
// Indirection for uint64_t. uint64_t can be a typedef for unsigned
// long, so we can't specialize on the same template
template <>
struct _eina_value_traits_aux<uint64_t>
: _eina_value_traits_base<uint64_t>
{
static ::Eina_Value_Type const* value_type()
{
return EINA_VALUE_TYPE_UINT64;
}
};
template <typename T, typename Enable>
struct _eina_value_traits : _eina_value_traits_aux<T>
{
};
template <>
struct _eina_value_traits<unsigned char>
: _eina_value_traits_base<unsigned char>
@ -241,6 +245,11 @@ public:
: _raw(_eina_value_traits<char>::create())
{
}
template <typename T>
eina_value(T v)
{
primitive_init(v);
}
eina_value(char v)
{
primitive_init(v);