From: Enlightenment C. <no...@cv...> - 2007-09-21 22:39:38
|
Enlightenment CVS committal Author : andreas Project : e17 Module : proto/eflpp Dir : e17/proto/eflpp/src/ecore Modified Files: eflpp_ecore_data.cpp eflpp_ecore_data.h Log Message: - fixed EcoreList - added EcoreList example =================================================================== RCS file: /cvs/e/e17/proto/eflpp/src/ecore/eflpp_ecore_data.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- eflpp_ecore_data.cpp 6 Sep 2007 20:40:50 -0000 1.3 +++ eflpp_ecore_data.cpp 21 Sep 2007 22:39:16 -0000 1.4 @@ -2,299 +2,5 @@ namespace efl { -/*************/ -/* EcoreList */ -/*************/ - -template <typename T> -EcoreList<T>::EcoreList() -{ - m_list = ecore_list_new(); - // todo: how to handle error return? -> Exception? -} - -template <typename T> -EcoreList<T>::~EcoreList() -{ - ecore_list_destroy( m_list ); -} - -template <typename T> -Ecore_List *EcoreList<T>::obj() -{ - return m_list; -} - -template <typename T> -bool EcoreList<T>::append( T &data ) -{ - return ecore_list_append( m_list, static_cast <void*> (data) ); -} - -template <typename T> -bool EcoreList<T>::prepend( T &data ) -{ - return ecore_list_prepend( m_list, static_cast <void*> (data) ); -} - -template <typename T> -bool EcoreList<T>::insert( T &data ) -{ - return ecore_list_insert( m_list, static_cast <void*> (data) ); -} - -template <typename T> -bool EcoreList<T>::appendList( EcoreList <T> &append) -{ - return ecore_list_append_list( m_list, append.m_list); -} - -template <typename T> -bool EcoreList<T>::prependList( EcoreList <T> &prepend) -{ - return ecore_list_prepend_list( m_list, &prepend.m_list); -} - -template <typename T> -T *EcoreList<T>::remove() -{ - return static_cast <T*> (ecore_list_remove( m_list ) ); -} - -template <typename T> -T *EcoreList<T>::removeFirst() -{ - return static_cast <T*> ( ecore_list_first_remove( m_list ) ); -} - -template <typename T> -T *EcoreList<T>::removeLast() -{ - return static_cast <T*> ( ecore_list_last_remove( m_list ) ); -} - -template <typename T> -T *EcoreList<T>::current() -{ - return static_cast <T*> ( ecore_list_current( m_list ) ); -} - -template <typename T> -T *EcoreList<T>::first() -{ - return static_cast <T*> ( ecore_list_first( m_list ) ); -} - -template <typename T> -T *EcoreList<T>::last() -{ - return static_cast <T*> ( ecore_list_last( m_list) ); -} - -template <typename T> -int EcoreList<T>::index() -{ - return ecore_list_index( m_list ); -} - -template <typename T> -int EcoreList<T>::count() -{ - return ecore_list_count( m_list ); -} - -template <typename T> -T *EcoreList<T>::gotoFirst() -{ - return static_cast <T*> ( ecore_list_first_goto( m_list ) ); -} - -template <typename T> -T *EcoreList<T>::gotoLast() -{ - return static_cast <T*> ( ecore_list_last_goto( m_list ) ); -} - -template <typename T> -T *EcoreList<T>::gotoIndex(int index) -{ - return static_cast <T*> ( ecore_list_index_goto( m_list, index ) ); -} - -template <typename T> -T *EcoreList<T>::gotoElement(const T &data) -{ - return static_cast <T*> ( ecore_list_goto( m_list, - static_cast <const void*> ( data ) )); -} - -template <typename T> -T *EcoreList<T>::next() -{ - return static_cast <T*> ( ecore_list_next( m_list )); -} - -template <typename T> -bool EcoreList<T>::isEmpty() -{ - return ecore_list_empty_is ( m_list ); -} - -template <typename T> -bool EcoreList<T>::clear() -{ - return ecore_list_clear( m_list ); -} - -/**************/ -/* EcoreDList */ -/**************/ - -template <typename T> -EcoreDList<T>::EcoreDList() -{ - m_list = ecore_dlist_new(); - // todo: how to handle error return? -> Exception? -} - -template <typename T> -EcoreDList<T>::~EcoreDList() -{ - ecore_dlist_destroy( m_list ); -} - -template <typename T> -Ecore_DList *EcoreDList<T>::obj() -{ - return m_list; -} - -template <typename T> -bool EcoreDList<T>::append( T &data ) -{ - return ecore_dlist_append( m_list, static_cast <void*> (data) ); -} - -template <typename T> -bool EcoreDList<T>::prepend( T &data ) -{ - return ecore_dlist_prepend( m_list, static_cast <void*> (data) ); -} - -template <typename T> -bool EcoreDList<T>::insert( T &data ) -{ - return ecore_dlist_insert( m_list, static_cast <void*> (data) ); -} - -template <typename T> -bool EcoreDList<T>::appendList( EcoreDList <T> &append) -{ - return ecore_dlist_append_list( m_list, append.m_list); -} - -template <typename T> -bool EcoreDList<T>::prependList( EcoreDList <T> &prepend) -{ - return ecore_dlist_prepend_list( m_list, &prepend.m_list); -} - -template <typename T> -T *EcoreDList<T>::remove() -{ - return static_cast <T*> (ecore_dlist_remove( m_list ) ); -} - -template <typename T> -T *EcoreDList<T>::removeFirst() -{ - return static_cast <T*> ( ecore_dlist_first_remove( m_list ) ); -} - -template <typename T> -T *EcoreDList<T>::removeLast() -{ - return static_cast <T*> ( ecore_dlist_last_remove( m_list ) ); -} - -template <typename T> -T *EcoreDList<T>::current() -{ - return static_cast <T*> ( ecore_dlist_current( m_list ) ); -} - -/*template <typename T> -T *EcoreDList<T>::first() -{ - return static_cast <T*> ( ecore_dlist_first( m_list ) ); -} - -template <typename T> -T *EcoreDList<T>::last() -{ - return static_cast <T*> ( ecore_dlist_last( m_list) ); -}*/ - -template <typename T> -int EcoreDList<T>::index() -{ - return ecore_dlist_index( m_list ); -} - -template <typename T> -int EcoreDList<T>::count() -{ - return ecore_dlist_count( m_list ); -} - -template <typename T> -T *EcoreDList<T>::gotoFirst() -{ - return static_cast <T*> ( ecore_dlist_first_goto( m_list ) ); -} - -template <typename T> -T *EcoreDList<T>::gotoLast() -{ - return static_cast <T*> ( ecore_dlist_last_goto( m_list ) ); -} - -template <typename T> -T *EcoreDList<T>::gotoIndex(int index) -{ - return static_cast <T*> ( ecore_dlist_index_goto( m_list, index ) ); -} - -template <typename T> -T *EcoreDList<T>::gotoElement(const T &data) -{ - return static_cast <T*> ( ecore_dlist_goto( m_list, - static_cast <const void*> ( data ) )); -} - -template <typename T> -T *EcoreDList<T>::next() -{ - return static_cast <T*> ( ecore_dlist_next( m_list )); -} - -template <typename T> -T *EcoreDList<T>::previous() -{ - return static_cast <T*> ( ecore_dlist_previous( m_list )); -} - -template <typename T> -bool EcoreDList<T>::isEmpty() -{ - return ecore_dlist_empty_is ( m_list ); -} - -template <typename T> -bool EcoreDList<T>::clear() -{ - return ecore_dlist_clear( m_list ); -} - } // end namespace efl =================================================================== RCS file: /cvs/e/e17/proto/eflpp/src/ecore/eflpp_ecore_data.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- eflpp_ecore_data.h 6 Sep 2007 20:40:50 -0000 1.2 +++ eflpp_ecore_data.h 21 Sep 2007 22:39:16 -0000 1.3 @@ -14,7 +14,7 @@ { public: EcoreList(); - ~EcoreList(); + virtual ~EcoreList(); /*! * return The internal Ecore_List object @@ -22,11 +22,11 @@ Ecore_List *obj(); /* Adding items to the list */ - bool append( T &data ); - bool prepend( T &data ); - bool insert( T &data ); - bool appendList( EcoreList <T> &append); - bool prependList( EcoreList <T> &prepend); + bool append( T *data ); + bool prepend( T *data ); + bool insert( T *data ); + bool appendList( EcoreList <T> *append); + bool prependList( EcoreList <T> *prepend); /* Removing items from the list */ // TODO: how to integrate this with destructors? @@ -50,7 +50,7 @@ T *gotoFirst(); T *gotoLast(); T *gotoIndex(int index); - T *gotoElement(const T &data); + T *gotoElement(const T *data); /* Traversing the list and returning data */ T *next(); @@ -70,18 +70,50 @@ bool isEmpty(); bool clear(); + + /*class forward_iterator + { + public: + forward_iterator () + { + list = m_list; + } + + // Prefix + forward_iterator& operator++ () + { + list = list->next (); + return *this; + } + + // Postfix + forward_iterator operator++ (int) + { + forward_iterator oldIterator =* this; + list = list->next (); + return oldIterator; + } + + private: + EcoreList<T> list; + + };*/ + + //forward_iterator begin (); + //forward_iterator end (); - private: - Ecore_List *m_list; + private: + Ecore_List *m_list; }; + template <typename T> class EcoreDList { public: EcoreDList(); - ~EcoreDList(); + virtual ~EcoreDList(); /*! * return The internal Ecore_DList object @@ -89,11 +121,11 @@ Ecore_DList *obj(); /* Adding items to the list */ - bool append( T &data ); - bool prepend( T &data ); - bool insert( T &data ); - bool appendList( EcoreDList <T> &append); - bool prependList( EcoreDList <T> &prepend); + bool append( T *data ); + bool prepend( T *data ); + bool insert( T *data ); + bool appendList( EcoreDList <T> *append); + bool prependList( EcoreDList <T> *prepend); // not wrapped! -> std::for_each exist. -> #include <algorithm> // need to implement an iterator to get this working /* Removing items from the list */ @@ -119,7 +151,7 @@ T *gotoFirst(); T *gotoLast(); T *gotoIndex(int index); - T *gotoElement(const T &data); + T *gotoElement(const T *data); /* Traversing the list and returning data */ @@ -144,6 +176,316 @@ private: Ecore_DList *m_list; }; + +/** Implementaion **/ + +/*************/ +/* EcoreList */ +/*************/ + +template <typename T> +EcoreList<T>::EcoreList() +{ + m_list = ecore_list_new(); + // todo: how to handle error return? -> Exception? +} + +template <typename T> +EcoreList<T>::~EcoreList() +{ + ecore_list_destroy( m_list ); +} + +template <typename T> +Ecore_List *EcoreList<T>::obj() +{ + return m_list; +} + +template <typename T> +bool EcoreList<T>::append( T *data ) +{ + return ecore_list_append( m_list, static_cast <void*> (data) ); +} + +template <typename T> +bool EcoreList<T>::prepend( T *data ) +{ + return ecore_list_prepend( m_list, static_cast <void*> (data) ); +} + +template <typename T> +bool EcoreList<T>::insert( T *data ) +{ + return ecore_list_insert( m_list, static_cast <void*> (data) ); +} + +template <typename T> +bool EcoreList<T>::appendList( EcoreList <T> *append) +{ + return ecore_list_append_list( m_list, append.m_list); +} + +template <typename T> +bool EcoreList<T>::prependList( EcoreList <T> *prepend) +{ + return ecore_list_prepend_list( m_list, prepend.m_list); +} + +template <typename T> +T *EcoreList<T>::remove() +{ + return static_cast <T*> (ecore_list_remove( m_list ) ); +} + +template <typename T> +T *EcoreList<T>::removeFirst() +{ + return static_cast <T*> ( ecore_list_first_remove( m_list ) ); +} + +template <typename T> +T *EcoreList<T>::removeLast() +{ + return static_cast <T*> ( ecore_list_last_remove( m_list ) ); +} + +template <typename T> +T *EcoreList<T>::current() +{ + return static_cast <T*> ( ecore_list_current( m_list ) ); +} + +template <typename T> +T *EcoreList<T>::first() +{ + return static_cast <T*> ( ecore_list_first( m_list ) ); +} + +template <typename T> +T *EcoreList<T>::last() +{ + return static_cast <T*> ( ecore_list_last( m_list) ); +} + +template <typename T> +int EcoreList<T>::index() +{ + return ecore_list_index( m_list ); +} + +template <typename T> +int EcoreList<T>::count() +{ + return ecore_list_count( m_list ); +} + +template <typename T> +T *EcoreList<T>::gotoFirst() +{ + return static_cast <T*> ( ecore_list_first_goto( m_list ) ); +} + +template <typename T> +T *EcoreList<T>::gotoLast() +{ + return static_cast <T*> ( ecore_list_last_goto( m_list ) ); +} + +template <typename T> +T *EcoreList<T>::gotoIndex(int index) +{ + return static_cast <T*> ( ecore_list_index_goto( m_list, index ) ); +} + +template <typename T> +T *EcoreList<T>::gotoElement(const T *data) +{ + return static_cast <T*> ( ecore_list_goto( m_list, + static_cast <const void*> ( data ) )); +} + +template <typename T> +T *EcoreList<T>::next() +{ + return static_cast <T*> ( ecore_list_next( m_list )); +} + +template <typename T> +bool EcoreList<T>::isEmpty() +{ + return ecore_list_empty_is ( m_list ); +} + +template <typename T> +bool EcoreList<T>::clear() +{ + return ecore_list_clear( m_list ); +} + +/*template <typename T> +forward_iterator EcoreList<T>::begin () +{ + //forward_iterator fi; + +} + +template <typename T> +EcoreList<T>::forward_iterator EcoreList<T>::end () +{ + +}*/ + + +/**************/ +/* EcoreDList */ +/**************/ + +template <typename T> +EcoreDList<T>::EcoreDList() +{ + m_list = ecore_dlist_new(); + // todo: how to handle error return? -> Exception? +} + +template <typename T> +EcoreDList<T>::~EcoreDList() +{ + ecore_dlist_destroy( m_list ); +} + +template <typename T> +Ecore_DList *EcoreDList<T>::obj() +{ + return m_list; +} + +template <typename T> +bool EcoreDList<T>::append( T *data ) +{ + return ecore_dlist_append( m_list, static_cast <void*> (data) ); +} + +template <typename T> +bool EcoreDList<T>::prepend( T *data ) +{ + return ecore_dlist_prepend( m_list, static_cast <void*> (data) ); +} + +template <typename T> +bool EcoreDList<T>::insert( T *data ) +{ + return ecore_dlist_insert( m_list, static_cast <void*> (data) ); +} + +template <typename T> +bool EcoreDList<T>::appendList( EcoreDList <T> *append) +{ + return ecore_dlist_append_list( m_list, append.m_list); +} + +template <typename T> +bool EcoreDList<T>::prependList( EcoreDList <T> *prepend) +{ + return ecore_dlist_prepend_list( m_list, prepend.m_list); +} + +template <typename T> +T *EcoreDList<T>::remove() +{ + return static_cast <T*> (ecore_dlist_remove( m_list ) ); +} + +template <typename T> +T *EcoreDList<T>::removeFirst() +{ + return static_cast <T*> ( ecore_dlist_first_remove( m_list ) ); +} + +template <typename T> +T *EcoreDList<T>::removeLast() +{ + return static_cast <T*> ( ecore_dlist_last_remove( m_list ) ); +} + +template <typename T> +T *EcoreDList<T>::current() +{ + return static_cast <T*> ( ecore_dlist_current( m_list ) ); +} + +/*template <typename T> +T *EcoreDList<T>::first() +{ + return static_cast <T*> ( ecore_dlist_first( m_list ) ); +} + +template <typename T> +T *EcoreDList<T>::last() +{ + return static_cast <T*> ( ecore_dlist_last( m_list) ); +}*/ + +template <typename T> +int EcoreDList<T>::index() +{ + return ecore_dlist_index( m_list ); +} + +template <typename T> +int EcoreDList<T>::count() +{ + return ecore_dlist_count( m_list ); +} + +template <typename T> +T *EcoreDList<T>::gotoFirst() +{ + return static_cast <T*> ( ecore_dlist_first_goto( m_list ) ); +} + +template <typename T> +T *EcoreDList<T>::gotoLast() +{ + return static_cast <T*> ( ecore_dlist_last_goto( m_list ) ); +} + +template <typename T> +T *EcoreDList<T>::gotoIndex(int index) +{ + return static_cast <T*> ( ecore_dlist_index_goto( m_list, index ) ); +} + +template <typename T> +T *EcoreDList<T>::gotoElement(const T *data) +{ + return static_cast <T*> ( ecore_dlist_goto( m_list, + static_cast <const void*> ( data ) )); +} + +template <typename T> +T *EcoreDList<T>::next() +{ + return static_cast <T*> ( ecore_dlist_next( m_list )); +} + +template <typename T> +T *EcoreDList<T>::previous() +{ + return static_cast <T*> ( ecore_dlist_previous( m_list )); +} + +template <typename T> +bool EcoreDList<T>::isEmpty() +{ + return ecore_dlist_empty_is ( m_list ); +} + +template <typename T> +bool EcoreDList<T>::clear() +{ + return ecore_dlist_clear( m_list ); +} } // end namespace efl |