[gameprogrammer] General Purpose Double Linked List Class

Hello !



I want to use STL to create a
general purpose linked list class,
that can be used in games or other
apps.

As i never used STL before,
is this way to use it correct ?

Thanks.



CU
#include "my_list.h"


List::List ()
{
    List_Iterator = List_Itself.begin ();
}

List::~List ()
{
    Remove_All ();
}

bool List::Is_Empty             ()
{
    if ( List_Itself.size () > 0 )
        return false;
    else
        return true;
}

bool List::Add_Front_Element    (void *element)
{
    List_Itself.push_front  (element);

    return true;
}

bool List::Add_Back_Element     (void *element)
{
    List_Itself.push_back   (element);

    return true;
}

bool List::Add_Element          (void *element)
{
    Add_Back_Element (element);

    return true;
}

bool List::Remove_Actual_Element        ()
{
    List_Iterator = List_Itself.erase (List_Iterator);
        
    return true;
}

bool List::Remove_Element       (void *element)
{
#if 0
    List_Itself.remove (element);
        
    return true;
#endif

    return false;
}

bool List::Remove_All           ()
{
    List_Itself.clear ();

    return true;
}

bool List::Get_First_Element    (void **element)
{
    (* element) = List_Itself.front ();
    List_Iterator = List_Itself.begin ();
        
    return true;
}

bool List::Get_Last_Element     (void **element)
{
    (* element) = List_Itself.back ();
    List_Iterator = List_Itself.end ();
        
    return true;
}

bool List::Get_Next_Element     (void **element)
{
    if (List_Iterator == List_Itself.end ())
    {
        (* element) = NULL;
        return false;
    }
    else
    {
        List_Iterator ++;
        if (List_Iterator == List_Itself.end ())
        {
            (* element) = NULL;
                
            return false;
        }
        else
            (* element) = *List_Iterator;
    }

    return true;
}

bool List::Get_Prev_Element     (void **element)
{
    if (List_Iterator == List_Itself.begin ())
    {
        (* element) = NULL;
        return false;
    }
    else
    {
        List_Iterator --;
        (* element) = *List_Iterator;
    }
 
    return true;
}

bool List::Get_Actual_Element   (void **element)
{
    (* element) = *List_Iterator;
        
    return true;
}
#ifndef _MY_LIST_H
#define _MY_LIST_H

#include <stdio.h>
#include <list.h>

class List
{
    public:
    
        List    ();
        ~List   ();

        bool Is_Empty           ();

        bool Add_Front_Element  (void *element);
        bool Add_Back_Element   (void *element);
        bool Add_Element        (void *element);

        bool Remove_Actual_Element ();
        bool Remove_Element     (void *element);
        bool Remove_All         ();

        bool Get_First_Element  (void **element);
        bool Get_Last_Element   (void **element);
        bool Get_Next_Element   (void **element);
        bool Get_Prev_Element   (void **element);
        bool Get_Actual_Element (void **element);

    private:

        list <void *> List_Itself;
        list <void *>::iterator List_Iterator;
};

#endif

Other related posts: