paludis  Version 2.6.0
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_>
30 
31  template <typename T_>
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_>
47 
48  template <typename Tree_>
50 
51  template <typename Tree_, typename NodeList_>
53 
54  template <typename Tree_>
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_>
65 
66  template <typename Tree_, typename Node_>
68  }
69 
70  template <typename NodeList_, typename RootNode_>
71  class SpecTree;
72 
73  typedef SpecTree<MakeTypeList<
89  >::Type, AllDepSpec> GenericSpecTree;
90 
91  typedef SpecTree<MakeTypeList<
92  SpecTreeLeafNodeType<LicenseDepSpec>,
93  SpecTreeInnerNodeType<AllDepSpec>,
94  SpecTreeInnerNodeType<AnyDepSpec>,
96  >::Type, AllDepSpec> LicenseSpecTree;
97 
98  typedef SpecTree<MakeTypeList<
99  SpecTreeLeafNodeType<FetchableURIDepSpec>,
100  SpecTreeLeafNodeType<URILabelsDepSpec>,
101  SpecTreeInnerNodeType<AllDepSpec>,
104 
105  typedef SpecTree<MakeTypeList<
106  SpecTreeLeafNodeType<SimpleURIDepSpec>,
107  SpecTreeInnerNodeType<AllDepSpec>,
109  >::Type, AllDepSpec> SimpleURISpecTree;
110 
111  typedef SpecTree<MakeTypeList<
112  SpecTreeLeafNodeType<PlainTextDepSpec>,
113  SpecTreeInnerNodeType<AllDepSpec>,
114  SpecTreeInnerNodeType<AnyDepSpec>,
115  SpecTreeInnerNodeType<ExactlyOneDepSpec>,
116  SpecTreeInnerNodeType<AtMostOneDepSpec>,
119 
120  typedef SpecTree<MakeTypeList<
121  SpecTreeLeafNodeType<PlainTextDepSpec>,
122  SpecTreeLeafNodeType<PlainTextLabelDepSpec>,
123  SpecTreeInnerNodeType<AllDepSpec>,
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>,
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
Definition: spec_tree-fwd.hh:71
Definition: about_metadata-fwd.hh:23
Definition: type_list.hh:27
Definition: spec_tree-fwd.hh:40
Definition: spec_tree-fwd.hh:32
Definition: type_list-fwd.hh:28
Definition: spec_tree-fwd.hh:43
Definition: spec_tree-fwd.hh:29
Definition: type_list-fwd.hh:31
Definition: spec_tree-fwd.hh:37
Definition: spec_tree-fwd.hh:46
Definition: dep_spec.hh:137