Eneboo - Documentación para desarrolladores
src/hoard/src/heaplayers/freesllist.h
Ir a la documentación de este archivo.
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 
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Propiedades Amigas 'defines'