Now possible to construct Einaxx::List from a Eina_List*
SVN revision: 79401
This commit is contained in:
parent
e23711d0ac
commit
ac63ca43e8
|
@ -104,8 +104,24 @@ EAPI void eina_iterator_foreach (Eina_Iterator *iterator,
|
||||||
|
|
||||||
//Eina_Accessor *eina_list_accessor_new(const Eina_List *list);
|
//Eina_Accessor *eina_list_accessor_new(const Eina_List *list);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief C object wrapper factory method.
|
||||||
|
*
|
||||||
|
* For internal usage only! This return a new allocated Object that holds
|
||||||
|
* the wrapped Eeina_List variable. With a delete on this object the wrapped
|
||||||
|
* C type won't be freed.
|
||||||
|
*
|
||||||
|
* @param o The C to to be wrapped.
|
||||||
|
* @return The wrapped C++ type.
|
||||||
|
*/
|
||||||
|
static List<T> *wrap (Eina_List *el);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
List (Eina_List *el);
|
||||||
|
|
||||||
Eina_List *mList;
|
Eina_List *mList;
|
||||||
|
|
||||||
|
bool mFree;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Implementation **/
|
/** Implementation **/
|
||||||
|
@ -143,14 +159,28 @@ bool List<T>::Iterator::next (T *data)
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
List<T>::List () :
|
List<T>::List () :
|
||||||
mList (NULL)
|
mList (NULL),
|
||||||
|
mFree (true)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
List<T>::List (Eina_List *list) :
|
||||||
|
mList (list),
|
||||||
|
mFree (false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
List<T>::~List ()
|
List<T>::~List ()
|
||||||
{
|
{
|
||||||
/*Eina_List *list = eina_list_free (mList);
|
Eina_List *list = NULL;
|
||||||
|
|
||||||
|
if (mFree)
|
||||||
|
{
|
||||||
|
list = eina_list_free (mList);
|
||||||
|
}
|
||||||
|
|
||||||
if (!list)
|
if (!list)
|
||||||
{
|
{
|
||||||
// good case: do nothing
|
// good case: do nothing
|
||||||
|
@ -158,7 +188,7 @@ List<T>::~List ()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO: error handling
|
// TODO: error handling
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
@ -280,6 +310,12 @@ typename List<T>::Iterator List<T>::createIterator ()
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
List<T> *List<T>::wrap (Eina_List *list)
|
||||||
|
{
|
||||||
|
return new List <T> (list);
|
||||||
|
}
|
||||||
|
|
||||||
} // end namespace Einaxx
|
} // end namespace Einaxx
|
||||||
|
|
||||||
#endif // EINAXX_LIST_H
|
#endif // EINAXX_LIST_H
|
||||||
|
|
Loading…
Reference in New Issue