paludis Version 3.0.2
The one true package mangler
create_output_manager_info.hh
1/* vim: set sw=4 sts=4 et foldmethod=syntax : */
2
3/*
4 * Copyright (c) 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_CREATE_OUTPUT_MANAGER_INFO_HH
21#define PALUDIS_GUARD_PALUDIS_CREATE_OUTPUT_MANAGER_INFO_HH 1
22
23#include <paludis/create_output_manager_info-fwd.hh>
24#include <paludis/util/pimp.hh>
25#include <paludis/util/visitor.hh>
27#include <paludis/util/type_list.hh>
30#include <paludis/serialise-fwd.hh>
31#include <paludis/action-fwd.hh>
32#include <paludis/name-fwd.hh>
33
34namespace paludis
35{
36 /**
37 * Information for Environment::create_output_manager.
38 *
39 * \since 0.36
40 * \ingroup g_environment
41 * \see Environment::create_output_manager
42 */
44 public virtual DeclareAbstractAcceptMethods<CreateOutputManagerInfo, MakeTypeList<
45 CreateOutputManagerForPackageIDActionInfo,
46 CreateOutputManagerForRepositorySyncInfo
47 >::Type>
48 {
49 public:
50 virtual ~CreateOutputManagerInfo() = default;
51
52 static const std::shared_ptr<CreateOutputManagerInfo> deserialise(
53 Deserialisation & d) PALUDIS_ATTRIBUTE((warn_unused_result));
54
55 virtual void serialise(Serialiser &) const = 0;
56 };
57
58 /**
59 * Information for Environment::create_output_manager, if we're performing a
60 * PackageID action.
61 *
62 * \since 0.36
63 * \ingroup g_environment
64 * \see Environment::create_output_manager
65 */
68 public ImplementAcceptMethods<CreateOutputManagerInfo, CreateOutputManagerForPackageIDActionInfo>
69 {
70 private:
72
73 public:
74 /**
75 * \since 0.46
76 */
78 const std::shared_ptr<const PackageID> & id,
79 const std::string & action_name,
80 const std::shared_ptr<const Set<std::string> > & action_flags,
81 const OutputExclusivity output_exclusivity,
82 const ClientOutputFeatures & output_features);
83
84 /**
85 * \since 0.46
86 */
88 const std::shared_ptr<const PackageID> & id,
89 const Action &,
90 const OutputExclusivity output_exclusivity,
91 const ClientOutputFeatures & output_features);
92
94
95 const std::shared_ptr<const PackageID> package_id() const PALUDIS_ATTRIBUTE((warn_unused_result));
96
97 /**
98 * \since 0.44
99 */
100 const std::string action_name() const PALUDIS_ATTRIBUTE((warn_unused_result));
101
102 /**
103 * \since 0.44
104 */
105 const std::shared_ptr<const Set<std::string> > action_flags() const PALUDIS_ATTRIBUTE((warn_unused_result));
106
107 OutputExclusivity output_exclusivity() const PALUDIS_ATTRIBUTE((warn_unused_result));
108
109 /**
110 * \since 0.46
111 */
112 const ClientOutputFeatures client_output_features() const PALUDIS_ATTRIBUTE((warn_unused_result));
113
114 void serialise(Serialiser &) const override;
115
116 static const std::shared_ptr<CreateOutputManagerForPackageIDActionInfo> deserialise(
117 Deserialisation & d) PALUDIS_ATTRIBUTE((warn_unused_result));
118 };
119
120 /**
121 * Information for Environment::create_output_manager, if we're performing a
122 * Repository sync.
123 *
124 * \since 0.36
125 * \ingroup g_environment
126 * \see Environment::create_output_manager
127 */
131 {
132 private:
134
135 public:
136 /**
137 * \since 0.46
138 */
140 const RepositoryName & repo_name,
141 const OutputExclusivity,
142 const ClientOutputFeatures &);
143
145
146 /**
147 * \since 0.44
148 */
149 const RepositoryName repository_name() const PALUDIS_ATTRIBUTE((warn_unused_result));
150
151 OutputExclusivity output_exclusivity() const PALUDIS_ATTRIBUTE((warn_unused_result));
152
153 /**
154 * \since 0.46
155 */
156 const ClientOutputFeatures client_output_features() const PALUDIS_ATTRIBUTE((warn_unused_result));
157
158 void serialise(Serialiser &) const override;
159
160 static const std::shared_ptr<CreateOutputManagerForRepositorySyncInfo> deserialise(
161 Deserialisation & d) PALUDIS_ATTRIBUTE((warn_unused_result));
162 };
163}
164
165#endif
Definition action.hh:278
const ClientOutputFeatures client_output_features() const PALUDIS_ATTRIBUTE((warn_unused_result))
CreateOutputManagerForPackageIDActionInfo(const std::shared_ptr< const PackageID > &id, const Action &, const OutputExclusivity output_exclusivity, const ClientOutputFeatures &output_features)
const std::shared_ptr< const Set< std::string > > action_flags() const PALUDIS_ATTRIBUTE((warn_unused_result))
CreateOutputManagerForPackageIDActionInfo(const std::shared_ptr< const PackageID > &id, const std::string &action_name, const std::shared_ptr< const Set< std::string > > &action_flags, const OutputExclusivity output_exclusivity, const ClientOutputFeatures &output_features)
const std::string action_name() const PALUDIS_ATTRIBUTE((warn_unused_result))
CreateOutputManagerForRepositorySyncInfo(const RepositoryName &repo_name, const OutputExclusivity, const ClientOutputFeatures &)
const RepositoryName repository_name() const PALUDIS_ATTRIBUTE((warn_unused_result))
const ClientOutputFeatures client_output_features() const PALUDIS_ATTRIBUTE((warn_unused_result))
Definition create_output_manager_info.hh:48
Definition visitor.hh:326
Definition serialise.hh:102
Definition visitor.hh:411
Definition pimp.hh:52
Definition serialise.hh:71
Definition set.hh:51
WrappedValue< RepositoryNameTag > RepositoryName
Definition name-fwd.hh:105
#define PALUDIS_ATTRIBUTE(x)
Definition attributes.hh:53
#define PALUDIS_VISIBLE
Definition attributes.hh:59
Definition about_metadata-fwd.hh:24