Eneboo - Documentación para desarrolladores
|
00001 // -*- C++ -*- 00002 00003 #ifndef _FREESLLIST_H_ 00004 #define _FREESLLIST_H_ 00005 00006 #include <assert.h> 00007 00017 class FreeSLList { 00018 public: 00019 00020 inline void clear (void) { 00021 head.next = NULL; 00022 } 00023 00024 class Entry; 00025 00027 inline Entry * get (void) { 00028 const Entry * e = head.next; 00029 if (e == NULL) { 00030 return NULL; 00031 } 00032 head.next = e->next; 00033 return const_cast<Entry *>(e); 00034 } 00035 00036 inline Entry * remove (void) { 00037 const Entry * e = head.next; 00038 if (e == NULL) { 00039 return NULL; 00040 } 00041 head.next = e->next; 00042 return const_cast<Entry *>(e); 00043 } 00044 00045 inline void insert (void * e) { 00046 Entry * entry = reinterpret_cast<Entry *>(e); 00047 entry->next = head.next; 00048 head.next = entry; 00049 } 00050 00051 class Entry { 00052 public: 00053 Entry (void) 00054 : next (NULL) 00055 {} 00056 Entry * next; 00057 #if 1 00058 private: 00059 Entry (const Entry&); 00060 Entry& operator=(const Entry&); 00061 #endif 00062 }; 00063 00064 private: 00065 Entry head; 00066 }; 00067 00068 00069 #endif 00070 00071 00072 00073