Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/objecthierarchie/src/IdentifierList.cc @ 244

Last change on this file since 244 was 243, checked in by landauf, 17 years ago

removed the "directParent" feature - it was a clever but unnecessary feature.

File size: 2.5 KB
Line 
1#include "IdentifierList.h"
2#include "Identifier.h"
3
4namespace orxonox
5{
6    // ###############################
7    // ###     IdentifierList      ###
8    // ###############################
9    IdentifierList::IdentifierList()
10    {
11        this->first_ = 0;
12    }
13
14    IdentifierList::~IdentifierList()
15    {
16        IdentifierListElement* temp;
17        while (this->first_)
18        {
19            temp = this->first_->next_;
20            delete this->first_;
21            this->first_ = temp;
22        }
23    }
24
25    void IdentifierList::add(const Identifier* identifier)
26    {
27        IdentifierListElement* temp = this->first_;
28        this->first_ = new IdentifierListElement(identifier);
29        this->first_->next_ = temp;
30    }
31
32    void IdentifierList::remove(const Identifier* identifier)
33    {
34        if (!identifier)
35            return;
36
37        if (this->first_->identifier_ == identifier)
38        {
39            IdentifierListElement* temp = this->first_->next_;
40            delete this->first_;
41            this->first_ = temp;
42
43            return;
44        }
45
46        IdentifierListElement* temp = this->first_;
47        while (temp->next_)
48        {
49            if (temp->next_->identifier_ == identifier)
50            {
51                IdentifierListElement* temp2 = temp->next_->next_;
52                delete temp->next_;
53                temp->next_ = temp2;
54
55                return;
56            }
57
58            temp = temp->next_;
59        }
60    }
61
62    bool IdentifierList::isInList(const Identifier* identifier) const
63    {
64        IdentifierListElement* temp = this->first_;
65        while (temp)
66        {
67            if (temp->identifier_ == identifier)
68                return true;
69
70            temp = temp->next_;
71        }
72
73        return false;
74    }
75
76    std::string IdentifierList::toString() const
77    {
78        IdentifierListElement* temp = this->first_;
79        std::string output = "";
80
81        while (temp)
82        {
83            output += temp->identifier_->getName();
84            output += " ";
85
86            temp = temp->next_;
87        }
88
89        return output;
90    }
91
92
93    // ###############################
94    // ###  IdentifierListElement  ###
95    // ###############################
96    IdentifierListElement::IdentifierListElement(const Identifier* identifier)
97    {
98        this->identifier_ = identifier;
99        this->next_ = 0;
100    }
101
102    IdentifierListElement::~IdentifierListElement()
103    {
104    }
105}
Note: See TracBrowser for help on using the repository browser.