-
-
Notifications
You must be signed in to change notification settings - Fork 346
/
PackageDirectory.h
57 lines (38 loc) · 1.16 KB
/
PackageDirectory.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
* Distributed under the terms of the MIT License.
*/
#ifndef PACKAGE_DIRECTORY_H
#define PACKAGE_DIRECTORY_H
#include <util/DoublyLinkedList.h>
#include "PackageNode.h"
class PackageDirectory : public PackageNode,
public DoublyLinkedListLinkImpl<PackageDirectory> {
public:
static void* operator new(size_t size);
static void operator delete(void* block);
PackageDirectory(Package* package, mode_t mode);
virtual ~PackageDirectory();
void AddChild(PackageNode* node);
void RemoveChild(PackageNode* node);
inline PackageNode* FirstChild() const;
inline PackageNode* NextChild(PackageNode* node) const;
const PackageNodeList& Children() const
{ return fChildren; }
bool HasPrecedenceOver(const PackageDirectory* other)
const;
private:
PackageNodeList fChildren;
};
PackageNode*
PackageDirectory::FirstChild() const
{
return fChildren.First();
}
PackageNode*
PackageDirectory::NextChild(PackageNode* node) const
{
return fChildren.GetNext(node);
}
typedef DoublyLinkedList<PackageDirectory> PackageDirectoryList;
#endif // PACKAGE_DIRECTORY_H