Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

/users/u3/mtikir/PMaCInstrumentor_v1601/include/LinkedList.h

Go to the documentation of this file.
00001 #ifndef _LinkedList_h_
00002 #define _LinkedList_h_
00003 
00004 template <class T=uint32_t>
00005 class LinkedList {
00006 private:
00007     typedef struct entry {
00008         struct entry* next;
00009         T data;
00010     } entry_t;
00011 
00012     entry_t* elements;
00013     uint32_t elementCount;
00014 
00015     void destroy(){
00016         entry_t* ptr = elements;
00017         while(ptr){
00018             entry_t* tmp = ptr;
00019             ptr = ptr->next;
00020             delete tmp;
00021         }
00022         elements = NULL;
00023         elementCount = 0;
00024     }
00025 
00026 public:
00027     LinkedList() : elements(NULL),elementCount(0) { }
00028     ~LinkedList(){
00029         destroy();
00030     }
00031     T insert(T newEntry){
00032         entry_t* newNode = new entry_t;
00033         newNode->next = elements;
00034         newNode->data = newEntry;
00035         elements = newNode;
00036         elementCount++;
00037         return newNode->data;
00038     }
00039     T shift(){
00040         entry_t* toDelete = elements;
00041         ASSERT(toDelete && "Trying to delete an element from empty list");
00042         elements = toDelete->next;
00043         T ret = toDelete->data;
00044         delete toDelete;
00045         elementCount--;
00046         return ret;
00047     }
00048     bool empty(){
00049         ASSERT(elements || !elementCount);
00050         return (!elements);
00051     }
00052     void clear(){
00053         destroy();
00054         elementCount = 0;
00055     }
00056     void print(){
00057         PRINT_INFOR("List 0x%x with %d ele : ", this, elementCount);
00058         entry_t* ptr = elements;
00059         while(ptr){
00060             PRINT_INFOR("\t0x%x",ptr);
00061             ptr = ptr->next;
00062         }
00063         PRINT_INFOR("\n");
00064     }
00065     uint32_t size() { return elementCount; }
00066 };
00067 
00068 #endif

Generated on Mon Jan 28 11:08:31 2008 for PMaCInstrumentor by doxygen 1.3.5