#ifndef __RK_LIST_H__ #define __RK_LIST_H__ #include #include "rk_type.h" // desctructor of list node typedef void *(*node_destructor)(void *); struct rk_list_node; class rk_list { public: rk_list(node_destructor func); ~rk_list(); // for FIFO or FILO implement // adding functions support simple structure like C struct or C++ class pointer, // do not support C++ object RK_S32 add_at_head(void *data, RK_S32 size); RK_S32 add_at_tail(void *data, RK_S32 size); // deleting function will copy the stored data to input pointer with size as size // if NULL is passed to deleting functions, the node will be delete directly RK_S32 del_at_head(void *data, RK_S32 size); RK_S32 del_at_tail(void *data, RK_S32 size); // for status check RK_S32 list_is_empty(); RK_S32 list_size(); // for vector implement - not implemented yet // adding function will return a key RK_S32 add_by_key(void *data, RK_S32 size, RK_U32 *key); RK_S32 del_by_key(void *data, RK_S32 size, RK_U32 key); RK_S32 show_by_key(void *data, RK_U32 key); RK_S32 flush(); private: pthread_mutex_t mutex; node_destructor destroy; struct rk_list_node *head; RK_S32 count; rk_list(); rk_list(const rk_list &); rk_list &operator=(const rk_list &); }; #endif /*__RK_LIST_H__*/