111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/*--------------------------------------------------------------------------
211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelCopyright (c) 2010-2011, 2013, The Linux Foundation. All rights reserved.
311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelRedistribution and use in source and binary forms, with or without
511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelmodification, are permitted provided that the following conditions are met:
611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    * Redistributions of source code must retain the above copyright
711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      notice, this list of conditions and the following disclaimer.
811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    * Redistributions in binary form must reproduce the above copyright
911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      notice, this list of conditions and the following disclaimer in the
1011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      documentation and/or other materials provided with the distribution.
1111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    * Neither the name of The Linux Foundation nor
1211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      the names of its contributors may be used to endorse or promote
1311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      products derived from this software without specific prior written
1411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      permission.
1511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
1611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
2011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
2111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
2211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
2311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
2511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
2611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel--------------------------------------------------------------------------*/
2811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#ifndef _MAP_H_
2911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define _MAP_H_
3011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
3111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#include <stdio.h>
3211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
3311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltemplate <typename T,typename T2>
3411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelclass Map
3511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
3611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    struct node {
3711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        T    data;
3811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        T2   data2;
3911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        node* prev;
4011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        node* next;
4111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        node(T t, T2 t2,node* p, node* n) :
4211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            data(t), data2(t2), prev(p), next(n) {}
4311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    };
4411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    node* head;
4511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    node* tail;
4611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    node* tmp;
4711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    unsigned size_of_list;
4811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    static Map<T,T2> *m_self;
4911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    public:
5011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    Map() : head( NULL ), tail ( NULL ),tmp(head),size_of_list(0) {}
5111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    bool empty() const {
5211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        return ( !head || !tail );
5311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
5411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    operator bool() const {
5511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        return !empty();
5611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
5711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    void insert(T,T2);
5811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    void show();
5911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    int  size();
6011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    T2 find(T); // Return VALUE
6111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    T find_ele(T);// Check if the KEY is present or not
6211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    T2 begin(); //give the first ele
6311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    bool erase(T);
6411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    bool eraseall();
6511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    bool isempty();
6611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    ~Map() {
6711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        while (head) {
6811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            node* temp(head);
6911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            head=head->next;
7011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            size_of_list--;
7111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            delete temp;
7211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        }
7311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
7411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel};
7511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
7611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    template <typename T,typename T2>
7711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelT2 Map<T,T2>::find(T d1)
7811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
7911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tmp = head;
8011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
8111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    while (tmp) {
8211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        if (tmp->data == d1) {
8311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            return tmp->data2;
8411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        }
8511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
8611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        tmp = tmp->next;
8711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
8811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
8911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    return 0;
9011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
9111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
9211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    template <typename T,typename T2>
9311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelT Map<T,T2>::find_ele(T d1)
9411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
9511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tmp = head;
9611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
9711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    while (tmp) {
9811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        if (tmp->data == d1) {
9911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            return tmp->data;
10011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        }
10111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
10211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        tmp = tmp->next;
10311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
10411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
10511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    return 0;
10611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
10711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
10811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    template <typename T,typename T2>
10911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelT2 Map<T,T2>::begin()
11011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
11111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tmp = head;
11211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
11311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    if (tmp) {
11411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        return (tmp->data2);
11511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
11611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
11711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    return 0;
11811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
11911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
12011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    template <typename T,typename T2>
12111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelvoid Map<T,T2>::show()
12211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
12311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tmp = head;
12411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
12511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    while (tmp) {
12611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        printf("%d-->%d\n",tmp->data,tmp->data2);
12711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        tmp = tmp->next;
12811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
12911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
13011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
13111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    template <typename T,typename T2>
13211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelint Map<T,T2>::size()
13311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
13411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    int count =0;
13511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tmp = head;
13611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
13711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    while (tmp) {
13811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        tmp = tmp->next;
13911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        count++;
14011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
14111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
14211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    return count;
14311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
14411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
14511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    template <typename T,typename T2>
14611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelvoid Map<T,T2>::insert(T data, T2 data2)
14711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
14811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tail = new node(data, data2,tail, NULL);
14911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
15011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    if ( tail->prev )
15111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        tail->prev->next = tail;
15211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
15311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    if ( empty() ) {
15411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        head = tail;
15511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        tmp=head;
15611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
15711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
15811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tmp = head;
15911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    size_of_list++;
16011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
16111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
16211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    template <typename T,typename T2>
16311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelbool Map<T,T2>::erase(T d)
16411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
16511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    bool found = false;
16611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tmp = head;
16711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    node* prevnode = tmp;
16811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    node *tempnode;
16911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
17011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    while (tmp) {
17111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        if ((head == tail) && (head->data == d)) {
17211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            found = true;
17311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tempnode = head;
17411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            head = tail = NULL;
17511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            delete tempnode;
17611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            break;
17711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        }
17811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
17911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        if ((tmp ==head) && (tmp->data ==d)) {
18011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            found = true;
18111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tempnode = tmp;
18211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tmp = tmp->next;
18311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tmp->prev = NULL;
18411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            head = tmp;
18511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tempnode->next = NULL;
18611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            delete tempnode;
18711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            break;
18811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        }
18911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
19011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        if ((tmp == tail) && (tmp->data ==d)) {
19111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            found = true;
19211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tempnode = tmp;
19311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            prevnode->next = NULL;
19411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tmp->prev = NULL;
19511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tail = prevnode;
19611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            delete tempnode;
19711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            break;
19811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        }
19911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
20011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        if (tmp->data == d) {
20111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            found = true;
20211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            prevnode->next = tmp->next;
20311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tmp->next->prev = prevnode->next;
20411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            tempnode = tmp;
20511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            //tmp = tmp->next;
20611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            delete tempnode;
20711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            break;
20811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        }
20911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
21011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        prevnode = tmp;
21111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        tmp = tmp->next;
21211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
21311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
21411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    if (found)size_of_list--;
21511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
21611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    return found;
21711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
21811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
21911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    template <typename T,typename T2>
22011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelbool Map<T,T2>::eraseall()
22111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
22211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    node *tempnode;
22311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tmp = head;
22411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
22511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    while (head) {
22611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        tempnode = head;
22711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        tempnode->next = NULL;
22811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        head = head->next;
22911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        delete tempnode;
23011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
23111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
23211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    tail = head = NULL;
23311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    return true;
23411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
23511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
23611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
23711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    template <typename T,typename T2>
23811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelbool Map<T,T2>::isempty()
23911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
24011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    if (!size_of_list) return true;
24111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    else return false;
24211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
24311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
24411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#endif // _MAP_H_
245