ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/ccscs20/NullNode.hpp
(Generate patch)

Comparing NullNode.hpp (file contents):
Revision 1 by Douglas Thrift, 2004-05-12T23:36:53-07:00 vs.
Revision 5 by Douglas Thrift, 2004-05-13T22:47:11-07:00

# Line 7 | Line 7
7   #ifndef _NullNode_hpp_
8   #define _NullNode_hpp_
9  
10 < #include "Node.hpp"
11 <
12 < template <typename Type>
13 < class NullNode : public Node<Type>
10 > template<typename Type>
11 > class NullNode
12   {
13   private:
14 <        bool null;
14 >        Type value;
15          NullNode<Type>* next;
16          NullNode<Type>* previous;
17 +        bool null;
18   public:
19 <        NullNode() : null(false) {}
20 <        NullNode(const Type& value) : Node<Type>::Node(value), null(false) {}
19 >        NullNode() : next(NULL), previous(NULL), null(true) {}
20 >        NullNode(const Type& value) : value(value), next(NULL), previous(NULL),
21 >                null(false) {}
22          ~NullNode() {}
23 +        void setValue(const Type& value) { this->value = value; }
24 +        const Type& getValue(void) const { return value; }
25 +        void addNext(const Type& value);
26 +        void addPrevious(const Type& value);
27 +        void removeNext(void);
28 +        void removePrevious(void);
29 +        void setNext(NullNode<Type>* next) { this->next = next; }
30 +        void setPrevious(NullNode<Type>* previous) { this->previous = previous; }
31 +        NullNode<Type>* getNext(void) const { return next; }
32 +        NullNode<Type>* getPrevious(void) const { return next; }
33 +        bool contains(const Type& value, NullNode<Type>* end);
34   };
35  
36 + template<typename Type>
37 + void NullNode<Type>::addNext(const Type& value)
38 + {
39 +        NullNode<Type>* behind = next;
40 +
41 +        next = new NullNode<Type>(value);
42 +        next->previous = this;
43 +        next->next = behind;
44 +        behind->previous = next;
45 + }
46 +
47 + template<typename Type>
48 + void NullNode<Type>::addPrevious(const Type& value)
49 + {
50 +        NullNode<Type>* ahead = previous;
51 +
52 +        previous = new NullNode<Type>(value);
53 +        previous->next = this;
54 +        previous->previous = ahead;
55 +        ahead->next = previous;
56 + }
57 +
58 + template<typename Type>
59 + void NullNode<Type>::removeNext(void)
60 + {
61 +        NullNode<Type>* behind = next->next;
62 +
63 +        delete next;
64 +
65 +        next = behind;
66 +        next->previous = this;
67 + }
68 +
69 + template<typename Type>
70 + void NullNode<Type>::removePrevious(void)
71 + {
72 +        NullNode<Type>* ahead = previous->previous;
73 +
74 +        delete previous;
75 +
76 +        previous = ahead;
77 +        previous->next = this;
78 + }
79 +
80 + template<typename Type>
81 + bool NullNode<Type>::contains(const Type& value, NullNode<Type>* end)
82 + {
83 +        NullNode<Type>* another = next != NULL ? next : previous;
84 +
85 +        if (null && end == this)
86 +        {
87 +                return false;
88 +        }
89 +        else if (!null && value == this->value)
90 +        {
91 +                return true;
92 +        }
93 +        else return another->contains(value, end);
94 + }
95 +
96   #endif // _NullNode_hpp_

Comparing NullNode.hpp (property svn:eol-style):
Revision 1 by Douglas Thrift, 2004-05-12T23:36:53-07:00 vs.
Revision 5 by Douglas Thrift, 2004-05-13T22:47:11-07:00

# Line 0 | Line 1
1 + native

Comparing NullNode.hpp (property svn:keywords):
Revision 1 by Douglas Thrift, 2004-05-12T23:36:53-07:00 vs.
Revision 5 by Douglas Thrift, 2004-05-13T22:47:11-07:00

# Line 0 | Line 1
1 + Id

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines