eina_cxx: fix build with clang.

This commit is contained in:
Cedric Bail 2014-02-26 12:12:21 -03:00
parent 1fb3822893
commit 97ede98b5d
6 changed files with 25 additions and 19 deletions

View File

@ -46,7 +46,7 @@ struct view_clone_allocator
return const_cast<T*>(&v); return const_cast<T*>(&v);
} }
template <typename T> template <typename T>
static void deallocate_clone(T* p) static void deallocate_clone(T*)
{ {
} }
}; };

View File

@ -375,7 +375,8 @@ public:
} }
for(size_type i = 0;i != n;++i) for(size_type i = 0;i != n;++i)
new (&*first++) T(t); new (&*first++) T(t);
assert(last - first == _array->len - index - n); std::size_t diff = last - first;
assert(diff == _array->len - index - n);
while(first != last) while(first != last)
{ {
new (&*first++) T(*old_first); new (&*first++) T(*old_first);

View File

@ -233,10 +233,10 @@ public:
} }
void push_back(pointer p) void push_back(pointer p)
{ {
std::auto_ptr<value_type> p1(p); std::unique_ptr<value_type> p1(p);
push_back(p1); push_back(p1);
} }
void push_back(std::auto_ptr<T>& p) void push_back(std::unique_ptr<T>& p)
{ {
if(eina_array_push(this->_impl._array, p.get())) if(eina_array_push(this->_impl._array, p.get()))
p.release(); p.release();
@ -253,10 +253,10 @@ public:
} }
iterator insert(iterator i, pointer pv) iterator insert(iterator i, pointer pv)
{ {
std::auto_ptr<value_type> p(pv); std::unique_ptr<value_type> p(pv);
return insert(i, p); return insert(i, p);
} }
iterator insert(iterator i, std::auto_ptr<value_type>& p) iterator insert(iterator i, std::unique_ptr<value_type>& p)
{ {
std::size_t j std::size_t j
= i.native_handle() - this->_impl._array->data = i.native_handle() - this->_impl._array->data

View File

@ -225,10 +225,10 @@ public:
} }
void push_back(pointer p) void push_back(pointer p)
{ {
std::auto_ptr<value_type> p1(p); std::unique_ptr<value_type> p1(p);
push_back(p1); push_back(p1);
} }
void push_back(std::auto_ptr<T>& p) void push_back(std::unique_ptr<T>& p)
{ {
Eina_List* new_list = eina_list_append(this->_impl._list, p.get()); Eina_List* new_list = eina_list_append(this->_impl._list, p.get());
if(new_list) if(new_list)
@ -245,10 +245,10 @@ public:
} }
void push_front(pointer p) void push_front(pointer p)
{ {
std::auto_ptr<value_type> p1(p); std::unique_ptr<value_type> p1(p);
push_front(p1); push_front(p1);
} }
void push_front(std::auto_ptr<T>& p) void push_front(std::unique_ptr<T>& p)
{ {
Eina_List* new_list = eina_list_prepend(this->_impl._list, p.get()); Eina_List* new_list = eina_list_prepend(this->_impl._list, p.get());
if(new_list) if(new_list)
@ -273,10 +273,10 @@ public:
} }
iterator insert(iterator i, pointer pv) iterator insert(iterator i, pointer pv)
{ {
std::auto_ptr<value_type> p(pv); std::unique_ptr<value_type> p(pv);
return insert(i, p); return insert(i, p);
} }
iterator insert(iterator i, std::auto_ptr<value_type>& p) iterator insert(iterator i, std::unique_ptr<value_type>& p)
{ {
this->_impl._list = _eina_list_prepend_relative_list this->_impl._list = _eina_list_prepend_relative_list
(this->_impl._list, p.get(), i.native_handle()); (this->_impl._list, p.get(), i.native_handle());

View File

@ -167,6 +167,13 @@ struct thread_id
} }
private: private:
Eina_Thread _raw; Eina_Thread _raw;
template <typename charT, typename Traits>
friend std::basic_ostream<charT, Traits>&
operator<<(std::basic_ostream<charT, Traits>& out, thread_id id)
{
return out << id._raw;
}
}; };
inline bool operator<=(thread_id lhs, thread_id rhs) inline bool operator<=(thread_id lhs, thread_id rhs)
@ -182,13 +189,6 @@ inline bool operator>=(thread_id lhs, thread_id rhs)
return !(lhs < rhs); return !(lhs < rhs);
} }
template <typename charT, typename Traits>
std::basic_ostream<charT, Traits>&
operator<<(std::basic_ostream<charT, Traits>& out, thread_id id)
{
return out << id._raw;
}
namespace _detail { namespace _detail {
struct arguments struct arguments

View File

@ -232,6 +232,11 @@ struct _eina_value_traits<T[], typename eina::enable_if<eina::is_pod<T>::value>:
} }
}; };
class eina_value;
template <typename T>
T get(eina_value const& v);
class eina_value class eina_value
{ {
template <typename T> template <typename T>