paludis
Version 3.0.2
The one true package mangler
paludis
spec_tree-fwd.hh
1
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
2
3
/*
4
* Copyright (c) 2008, 2009, 2010, 2011 Ciaran McCreesh
5
*
6
* This file is part of the Paludis package manager. Paludis is free software;
7
* you can redistribute it and/or modify it under the terms of the GNU General
8
* Public License version 2, as published by the Free Software Foundation.
9
*
10
* Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
11
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
* details.
14
*
15
* You should have received a copy of the GNU General Public License along with
16
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
17
* Place, Suite 330, Boston, MA 02111-1307 USA
18
*/
19
20
#ifndef PALUDIS_GUARD_PALUDIS_SPEC_TREE_FWD_HH
21
#define PALUDIS_GUARD_PALUDIS_SPEC_TREE_FWD_HH 1
22
23
#include <paludis/util/type_list.hh>
24
#include <
paludis/dep_spec-fwd.hh
>
25
26
namespace
paludis
27
{
28
template
<
typename
T_>
29
struct
SpecTreeInnerNodeType
;
30
31
template
<
typename
T_>
32
struct
SpecTreeLeafNodeType
;
33
34
namespace
spec_tree_internals
35
{
36
template
<
typename
Tree_>
37
class
BasicNode;
38
39
template
<
typename
Tree_,
typename
Item_>
40
class
LeafNode;
41
42
template
<
typename
Tree_,
typename
Item_>
43
class
InnerNode;
44
45
template
<
typename
Tree_>
46
class
BasicInnerNode;
47
48
template
<
typename
Tree_>
49
struct
BasicInnerNodeConstIteratorTag
;
50
51
template
<
typename
Tree_,
typename
NodeList_>
52
struct
MakeVisitableTypeListEntry
;
53
54
template
<
typename
Tree_>
55
struct
MakeVisitableTypeListEntry
<Tree_,
TypeListTail
>;
56
57
template
<
typename
Tree_,
typename
Item_,
typename
Tail_>
58
struct
MakeVisitableTypeListEntry
<Tree_,
TypeListEntry
<
SpecTreeInnerNodeType
<Item_>, Tail_> >;
59
60
template
<
typename
Tree_,
typename
Item_,
typename
Tail_>
61
struct
MakeVisitableTypeListEntry
<Tree_,
TypeListEntry
<
SpecTreeLeafNodeType
<Item_>, Tail_> >;
62
63
template
<
typename
Tree_,
typename
NodeList_>
64
struct
MakeVisitableTypeList
;
65
66
template
<
typename
Tree_,
typename
Node_>
67
struct
TreeCannotContainNodeType
;
68
}
69
70
template
<
typename
NodeList_,
typename
RootNode_>
71
class
SpecTree
;
72
73
typedef
SpecTree
<
MakeTypeList
<
74
SpecTreeLeafNodeType<PlainTextDepSpec>
,
75
SpecTreeLeafNodeType<PlainTextLabelDepSpec>
,
76
SpecTreeLeafNodeType<SimpleURIDepSpec>
,
77
SpecTreeLeafNodeType<FetchableURIDepSpec>
,
78
SpecTreeLeafNodeType<LicenseDepSpec>
,
79
SpecTreeLeafNodeType<PackageDepSpec>
,
80
SpecTreeLeafNodeType<BlockDepSpec>
,
81
SpecTreeLeafNodeType<URILabelsDepSpec>
,
82
SpecTreeLeafNodeType<DependenciesLabelsDepSpec>
,
83
SpecTreeLeafNodeType<NamedSetDepSpec>
,
84
SpecTreeInnerNodeType<AllDepSpec>
,
85
SpecTreeInnerNodeType<AnyDepSpec>
,
86
SpecTreeInnerNodeType<ExactlyOneDepSpec>
,
87
SpecTreeInnerNodeType<AtMostOneDepSpec>
,
88
SpecTreeInnerNodeType<ConditionalDepSpec>
89
>
::Type
,
AllDepSpec
> GenericSpecTree;
90
91
typedef
SpecTree
<
MakeTypeList
<
92
SpecTreeLeafNodeType<LicenseDepSpec>
,
93
SpecTreeInnerNodeType<AllDepSpec>
,
94
SpecTreeInnerNodeType<AnyDepSpec>
,
95
SpecTreeInnerNodeType<ConditionalDepSpec>
96
>
::Type
,
AllDepSpec
> LicenseSpecTree;
97
98
typedef
SpecTree
<
MakeTypeList
<
99
SpecTreeLeafNodeType<FetchableURIDepSpec>
,
100
SpecTreeLeafNodeType<URILabelsDepSpec>
,
101
SpecTreeInnerNodeType<AllDepSpec>
,
102
SpecTreeInnerNodeType<ConditionalDepSpec>
103
>
::Type
,
AllDepSpec
> FetchableURISpecTree;
104
105
typedef
SpecTree
<
MakeTypeList
<
106
SpecTreeLeafNodeType<SimpleURIDepSpec>
,
107
SpecTreeInnerNodeType<AllDepSpec>
,
108
SpecTreeInnerNodeType<ConditionalDepSpec>
109
>
::Type
,
AllDepSpec
> SimpleURISpecTree;
110
111
typedef
SpecTree
<
MakeTypeList
<
112
SpecTreeLeafNodeType<PlainTextDepSpec>
,
113
SpecTreeInnerNodeType<AllDepSpec>
,
114
SpecTreeInnerNodeType<AnyDepSpec>
,
115
SpecTreeInnerNodeType<ExactlyOneDepSpec>
,
116
SpecTreeInnerNodeType<AtMostOneDepSpec>
,
117
SpecTreeInnerNodeType<ConditionalDepSpec>
118
>
::Type
,
AllDepSpec
> RequiredUseSpecTree;
119
120
typedef
SpecTree
<
MakeTypeList
<
121
SpecTreeLeafNodeType<PlainTextDepSpec>
,
122
SpecTreeLeafNodeType<PlainTextLabelDepSpec>
,
123
SpecTreeInnerNodeType<AllDepSpec>
,
124
SpecTreeInnerNodeType<ConditionalDepSpec>
125
>
::Type
,
AllDepSpec
> PlainTextSpecTree;
126
127
typedef
SpecTree
<
MakeTypeList
<
128
SpecTreeLeafNodeType<PackageDepSpec>
,
129
SpecTreeLeafNodeType<BlockDepSpec>
,
130
SpecTreeLeafNodeType<DependenciesLabelsDepSpec>
,
131
SpecTreeLeafNodeType<NamedSetDepSpec>
,
132
SpecTreeInnerNodeType<AllDepSpec>
,
133
SpecTreeInnerNodeType<AnyDepSpec>
,
134
SpecTreeInnerNodeType<ConditionalDepSpec>
135
>
::Type
,
AllDepSpec
> DependencySpecTree;
136
137
typedef
SpecTree
<
MakeTypeList
<
138
SpecTreeLeafNodeType<PackageDepSpec>
,
139
SpecTreeLeafNodeType<NamedSetDepSpec>
,
140
SpecTreeInnerNodeType<AllDepSpec>
141
>
::Type
,
AllDepSpec
> SetSpecTree;
142
}
143
144
#endif
paludis::AllDepSpec
Definition
dep_spec.hh:139
paludis::SpecTree
Definition
spec_tree.hh:137
dep_spec-fwd.hh
paludis
Definition
about_metadata-fwd.hh:24
paludis::MakeTypeList
Definition
type_list-fwd.hh:31
paludis::SpecTreeInnerNodeType
Definition
spec_tree-fwd.hh:29
paludis::SpecTreeLeafNodeType
Definition
spec_tree-fwd.hh:32
paludis::TypeListEntry
Definition
type_list.hh:33
paludis::TypeListTail
Definition
type_list.hh:28
paludis::spec_tree_internals::BasicInnerNodeConstIteratorTag
Definition
spec_tree-fwd.hh:49
paludis::spec_tree_internals::MakeVisitableTypeListEntry
Definition
spec_tree-fwd.hh:52
paludis::spec_tree_internals::MakeVisitableTypeList
Definition
spec_tree.hh:130
paludis::spec_tree_internals::TreeCannotContainNodeType
Definition
spec_tree-fwd.hh:67
Generated by
1.18.0