23 #include "reference_list.h"
26 class ReferenceListNode {
31 ReferenceListNode(
const Reference &ref) : reference(ref),
next(NULL) {}
35 ReferenceListNode *
next;
38 class ReferenceListHeadNode :
private ReferenceListNode {
42 ReferenceListHeadNode(
const Reference &ref) : ReferenceListNode(ref), refcount(1), length(0) {}
53 ReferenceList::ReferenceList() :
78 ReferenceListHeadNode *tmpHead = list.head;
82 ReferenceListNode *tmpTail = list.tail;
88 void ReferenceList::append(
const Reference& ref)
91 tail = head =
new ReferenceListHeadNode(ref);
93 tail->next =
new ReferenceListNode(ref);
99 int ReferenceList::length()
101 return head ? head->length : 0;
104 ReferenceList::~ReferenceList()
106 if (head != NULL && --(head->refcount) == 0) {
107 ReferenceListNode *
next;
109 for (ReferenceListNode *p = head; p != NULL; p =
next) {
112 delete (ReferenceListHeadNode *)p;
134 ReferenceListIterator::ReferenceListIterator(ReferenceListNode *n) :
141 return node != it.node;
144 const Reference *ReferenceListIterator::operator->()
const
146 return &node->reference;
149 const Reference &ReferenceListIterator::operator++(
int )
An iterator for a ReferenceList.
A list of Reference objects.
Defines a Javascript reference.