X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=stl-model.h;h=a334c27276d572581aa72b34b7d06515c91dc3ce;hb=f5d5c517f482c639d5daa579dfdc840d19eecea5;hp=77040e2c4d0dbc9e423b22e0a5d6712bab4ef469;hpb=b5616956278833cd5e549d2b00fb7ef4ea183575;p=c11tester.git diff --git a/stl-model.h b/stl-model.h index 77040e2c..a334c272 100644 --- a/stl-model.h +++ b/stl-model.h @@ -8,306 +8,345 @@ typedef unsigned int uint; template class mllnode { - public: - _Tp getVal() {return val;} - mllnode<_Tp> * getNext() {return next;} - mllnode<_Tp> * getPrev() {return prev;} - - MEMALLOC; - - private: - mllnode<_Tp> * next; - mllnode<_Tp> * prev; - _Tp val; - template - friend class ModelList; +public: + _Tp getVal() {return val;} + mllnode<_Tp> * getNext() {return next;} + mllnode<_Tp> * getPrev() {return prev;} + + MEMALLOC; + +private: + mllnode<_Tp> * next; + mllnode<_Tp> * prev; + _Tp val; + template + friend class ModelList; }; template class ModelList { -public: - ModelList() : head(NULL), - tail(NULL), _size(0) { - } - - void push_front(_Tp val) { - mllnode<_Tp> * tmp = new mllnode<_Tp>(); - tmp->prev = NULL; - tmp->next = head; - tmp->val = val; - if (head == NULL) - tail = tmp; - else - head->prev = tmp; - head = tmp; - _size++; - } - - void push_back(_Tp val) { - mllnode<_Tp> * tmp = new mllnode<_Tp>(); - tmp->prev = tail; - tmp->next = NULL; - tmp->val = val; - if (tail == NULL) - head = tmp; - else tail->next = tmp; - tail = tmp; - _size++; - } - - void pop_front() { - mllnode<_Tp> *tmp = head; - head = head->next; - head->prev = NULL; - delete tmp; - _size--; - } - - void pop_back() { - mllnode<_Tp> *tmp = tail; - tail = tail->next; - tail->next = NULL; - delete tmp; - _size--; - } - - void clear() { - while(head != NULL) { - mllnode<_Tp> *tmp=head->next; - delete head; - head = tmp; - } - tail=NULL; - _size=0; - } - - void insertAfter(mllnode<_Tp> * node, _Tp val) { - mllnode<_Tp> *tmp = new mllnode<_Tp>(); - tmp->val = val; - tmp->prev = node; - tmp->next = node->next; - node->next = tmp; - if (tmp->next == NULL) { - tail = tmp; - } else { - tmp->next->prev = tmp; - } - _size++; - } - - void insertBefore(mllnode<_Tp> * node, _Tp val) { - mllnode<_Tp> *tmp = new mllnode<_Tp>(); - tmp->val = val; - tmp->next = node; - tmp->prev = node->prev; - node->prev = tmp; - if (tmp->prev == NULL) { - head = tmp; - } else { - tmp->prev->next = tmp; - } - _size++; - } - - mllnode<_Tp> * erase(mllnode<_Tp> * node) { - if (head == node) { - head = node->next; - } else { - node->prev->next = node->next; - } - - if (tail == node) { - tail = node->prev; - } else { - tail->next->prev = node->prev; - } - mllnode<_Tp> *next = node->next; - delete node; - _size--; - return next; - } - - mllnode<_Tp> * begin() { - return head; - } - - mllnode<_Tp> * end() { - return tail; - } - - _Tp front() { - return head->val; - } - - _Tp back() { - return tail->val; - } - - uint size() { - return _size; - } - - bool empty() { - return _size == 0; - } - - MEMALLOC; - private: - mllnode<_Tp> *head; - mllnode<_Tp> *tail; - uint _size; +public: + ModelList() : head(NULL), + tail(NULL), _size(0) { + } + + void push_front(_Tp val) { + mllnode<_Tp> * tmp = new mllnode<_Tp>(); + tmp->prev = NULL; + tmp->next = head; + tmp->val = val; + if (head == NULL) + tail = tmp; + else + head->prev = tmp; + head = tmp; + _size++; + } + + void push_back(_Tp val) { + mllnode<_Tp> * tmp = new mllnode<_Tp>(); + tmp->prev = tail; + tmp->next = NULL; + tmp->val = val; + if (tail == NULL) + head = tmp; + else tail->next = tmp; + tail = tmp; + _size++; + } + + void pop_front() { + mllnode<_Tp> *tmp = head; + head = head->next; + if (head == NULL) + tail = NULL; + else + head->prev = NULL; + delete tmp; + _size--; + } + + void pop_back() { + mllnode<_Tp> *tmp = tail; + tail = tail->prev; + if (tail == NULL) + head = NULL; + else + tail->next = NULL; + delete tmp; + _size--; + } + + void clear() { + while(head != NULL) { + mllnode<_Tp> *tmp=head->next; + delete head; + head = tmp; + } + tail=NULL; + _size=0; + } + + void insertAfter(mllnode<_Tp> * node, _Tp val) { + mllnode<_Tp> *tmp = new mllnode<_Tp>(); + tmp->val = val; + tmp->prev = node; + tmp->next = node->next; + node->next = tmp; + if (tmp->next == NULL) { + tail = tmp; + } else { + tmp->next->prev = tmp; + } + _size++; + } + + void insertBefore(mllnode<_Tp> * node, _Tp val) { + mllnode<_Tp> *tmp = new mllnode<_Tp>(); + tmp->val = val; + tmp->next = node; + tmp->prev = node->prev; + node->prev = tmp; + if (tmp->prev == NULL) { + head = tmp; + } else { + tmp->prev->next = tmp; + } + _size++; + } + + mllnode<_Tp> * erase(mllnode<_Tp> * node) { + if (head == node) { + head = node->next; + } else { + node->prev->next = node->next; + } + + if (tail == node) { + tail = node->prev; + } else { + node->next->prev = node->prev; + } + mllnode<_Tp> *next = node->next; + delete node; + _size--; + return next; + } + + mllnode<_Tp> * begin() { + return head; + } + + mllnode<_Tp> * end() { + return tail; + } + + _Tp front() { + return head->val; + } + + _Tp back() { + return tail->val; + } + + uint size() { + return _size; + } + + bool empty() { + return _size == 0; + } + + MEMALLOC; +private: + mllnode<_Tp> *head; + mllnode<_Tp> *tail; + uint _size; }; template class sllnode { - public: - _Tp getVal() {return val;} - sllnode<_Tp> * getNext() {return next;} - sllnode<_Tp> * getPrev() {return prev;} - SNAPSHOTALLOC; - - private: - sllnode<_Tp> * next; - sllnode<_Tp> * prev; - _Tp val; - template - friend class SnapList; +public: + _Tp getVal() {return val;} + sllnode<_Tp> * getNext() {return next;} + sllnode<_Tp> * getPrev() {return prev;} + SNAPSHOTALLOC; + +private: + sllnode<_Tp> * next; + sllnode<_Tp> * prev; + _Tp val; + template + friend class SnapList; }; template class SnapList { -public: - SnapList() : head(NULL), - tail(NULL), _size(0) { - } - - void push_front(_Tp val) { - sllnode<_Tp> * tmp = new sllnode<_Tp>(); - tmp->prev = NULL; - tmp->next = head; - tmp->val = val; - if (head == NULL) - tail = tmp; - else - head->prev = tmp; - head = tmp; - _size++; - } - - void push_back(_Tp val) { - sllnode<_Tp> * tmp = new sllnode<_Tp>(); - tmp->prev = tail; - tmp->next = NULL; - tmp->val = val; - if (tail == NULL) - head = tmp; - else tail->next = tmp; - tail = tmp; - _size++; - } - - void pop_front() { - sllnode<_Tp> *tmp = head; - head = head->next; - head->prev = NULL; - delete tmp; - _size--; - } - - void pop_back() { - sllnode<_Tp> *tmp = tail; - tail = tail->next; - tail->next = NULL; - delete tmp; - _size--; - } - - void clear() { - while(head != NULL) { - sllnode<_Tp> *tmp=head->next; - delete head; - head = tmp; - } - tail=NULL; - _size=0; - } - - void insertAfter(sllnode<_Tp> * node, _Tp val) { - sllnode<_Tp> *tmp = new sllnode<_Tp>(); - tmp->val = val; - tmp->prev = node; - tmp->next = node->next; - node->next = tmp; - if (tmp->next == NULL) { - tail = tmp; - } else { - tmp->next->prev = tmp; - } - _size++; - } - - void insertBefore(sllnode<_Tp> * node, _Tp val) { - sllnode<_Tp> *tmp = new sllnode<_Tp>(); - tmp->val = val; - tmp->next = node; - tmp->prev = node->prev; - node->prev = tmp; - if (tmp->prev == NULL) { - head = tmp; - } else { - tmp->prev->next = tmp; - } - _size++; - } - - sllnode<_Tp> * erase(sllnode<_Tp> * node) { - if (head == node) { - head = node->next; - } else { - node->prev->next = node->next; - } - - if (tail == node) { - tail = node->prev; - } else { - tail->next->prev = node->prev; - } - - sllnode<_Tp> *next = node->next; - delete node; - _size--; - return next; - } - - sllnode<_Tp> * begin() { - return head; - } - - sllnode<_Tp> * end() { - return tail; - } - - _Tp front() { - return head->val; - } - - _Tp back() { - return tail->val; - } - uint size() { - return _size; - } - bool empty() { - return _size == 0; - } - - SNAPSHOTALLOC; - private: - sllnode<_Tp> *head; - sllnode<_Tp> *tail; - uint _size; +public: + SnapList() : head(NULL), + tail(NULL), _size(0) { + } + + void push_front(_Tp val) { + sllnode<_Tp> * tmp = new sllnode<_Tp>(); + tmp->prev = NULL; + tmp->next = head; + tmp->val = val; + if (head == NULL) + tail = tmp; + else + head->prev = tmp; + head = tmp; + _size++; + } + + void push_back(_Tp val) { + sllnode<_Tp> * tmp = new sllnode<_Tp>(); + tmp->prev = tail; + tmp->next = NULL; + tmp->val = val; + if (tail == NULL) + head = tmp; + else tail->next = tmp; + tail = tmp; + _size++; + } + + sllnode<_Tp>add_front(_Tp val) { + sllnode<_Tp> * tmp = new sllnode<_Tp>(); + tmp->prev = NULL; + tmp->next = head; + tmp->val = val; + if (head == NULL) + tail = tmp; + else + head->prev = tmp; + head = tmp; + _size++; + return tmp; + } + + sllnode<_Tp> * add_back(_Tp val) { + sllnode<_Tp> * tmp = new sllnode<_Tp>(); + tmp->prev = tail; + tmp->next = NULL; + tmp->val = val; + if (tail == NULL) + head = tmp; + else tail->next = tmp; + tail = tmp; + _size++; + return tmp; + } + + void pop_front() { + sllnode<_Tp> *tmp = head; + head = head->next; + if (head == NULL) + tail = NULL; + else + head->prev = NULL; + delete tmp; + _size--; + } + + void pop_back() { + sllnode<_Tp> *tmp = tail; + tail = tail->prev; + if (tail == NULL) + head = NULL; + else + tail->next = NULL; + delete tmp; + _size--; + } + + void clear() { + while(head != NULL) { + sllnode<_Tp> *tmp=head->next; + delete head; + head = tmp; + } + tail=NULL; + _size=0; + } + + void insertAfter(sllnode<_Tp> * node, _Tp val) { + sllnode<_Tp> *tmp = new sllnode<_Tp>(); + tmp->val = val; + tmp->prev = node; + tmp->next = node->next; + node->next = tmp; + if (tmp->next == NULL) { + tail = tmp; + } else { + tmp->next->prev = tmp; + } + _size++; + } + + void insertBefore(sllnode<_Tp> * node, _Tp val) { + sllnode<_Tp> *tmp = new sllnode<_Tp>(); + tmp->val = val; + tmp->next = node; + tmp->prev = node->prev; + node->prev = tmp; + if (tmp->prev == NULL) { + head = tmp; + } else { + tmp->prev->next = tmp; + } + _size++; + } + + sllnode<_Tp> * erase(sllnode<_Tp> * node) { + if (head == node) { + head = node->next; + } else { + node->prev->next = node->next; + } + + if (tail == node) { + tail = node->prev; + } else { + node->next->prev = node->prev; + } + + sllnode<_Tp> *next = node->next; + delete node; + _size--; + return next; + } + + sllnode<_Tp> * begin() { + return head; + } + + sllnode<_Tp> * end() { + return tail; + } + + _Tp front() { + return head->val; + } + + _Tp back() { + return tail->val; + } + uint size() { + return _size; + } + bool empty() { + return _size == 0; + } + + SNAPSHOTALLOC; +private: + sllnode<_Tp> *head; + sllnode<_Tp> *tail; + uint _size; }; @@ -334,7 +373,7 @@ public: } type back() const { - return array[size - 1]; + return array[_size - 1]; } void resize(uint psize) { @@ -358,11 +397,11 @@ public: array[_size++] = item; } - type operator[](uint index) const { + type operator[](int index) const { return array[index]; } - type & operator[](uint index) { + type & operator[](int index) { return array[index]; } @@ -463,11 +502,11 @@ public: array[_size++] = item; } - type & operator[](uint index) { + type operator[](int index) const { return array[index]; } - type operator[](uint index) const { + type & operator[](int index) { return array[index]; }