paludis Version 3.0.2
The one true package mangler
permitted_choice_value_parameter_values.hh
1/* vim: set sw=4 sts=4 et foldmethod=syntax : */
2
3/*
4 * Copyright (c) 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_PERMITTED_CHOICE_VALUE_PARAMETER_VALUES_HH
21#define PALUDIS_GUARD_PALUDIS_PERMITTED_CHOICE_VALUE_PARAMETER_VALUES_HH 1
22
23#include <paludis/permitted_choice_value_parameter_values-fwd.hh>
25#include <paludis/util/visitor.hh>
26#include <paludis/util/type_list.hh>
28#include <memory>
29
30namespace paludis
31{
33 public virtual DeclareAbstractAcceptMethods<PermittedChoiceValueParameterValues, MakeTypeList<
34 PermittedChoiceValueParameterIntegerValue,
35 PermittedChoiceValueParameterEnumValue
36 >::Type>
37 {
38 public:
40 };
41
42 class PALUDIS_VISIBLE PermittedChoiceValueParameterIntegerValue :
44 public ImplementAcceptMethods<PermittedChoiceValueParameterValues, PermittedChoiceValueParameterIntegerValue>
45 {
46 private:
47 int _min, _max;
48
49 public:
50 PermittedChoiceValueParameterIntegerValue(const int min, const int max);
51
52 /**
53 * Minimum permitted value, or std::numeric_limits<int>::min() for
54 * no minumum.
55 */
56 int minimum_allowed_value() const PALUDIS_ATTRIBUTE((warn_unused_result));
57
58 /**
59 * Maximum permitted value, or std::numeric_limits<int>::max() for
60 * no maximum.
61 */
62 int maximum_allowed_value() const PALUDIS_ATTRIBUTE((warn_unused_result));
63 };
64
65 class PALUDIS_VISIBLE PermittedChoiceValueParameterEnumValue :
67 public ImplementAcceptMethods<PermittedChoiceValueParameterValues, PermittedChoiceValueParameterEnumValue>
68 {
69 private:
70 const std::shared_ptr<const Map<std::string, std::string> > _allowed;
71
72 public:
73 PermittedChoiceValueParameterEnumValue(
74 const std::shared_ptr<const Map<std::string, std::string> > &);
75
76 /**
77 * Permitted values, with descriptions.
78 */
79 const std::shared_ptr<const Map<std::string, std::string> > allowed_values_and_descriptions() const PALUDIS_ATTRIBUTE((warn_unused_result));
80 };
81}
82
83#endif
Definition visitor.hh:326
Definition visitor.hh:411
Definition map.hh:53
const std::shared_ptr< const Map< std::string, std::string > > allowed_values_and_descriptions() const PALUDIS_ATTRIBUTE((warn_unused_result))
int minimum_allowed_value() const PALUDIS_ATTRIBUTE((warn_unused_result))
int maximum_allowed_value() const PALUDIS_ATTRIBUTE((warn_unused_result))
Definition permitted_choice_value_parameter_values.hh:37
#define PALUDIS_ATTRIBUTE(x)
Definition attributes.hh:53
#define PALUDIS_VISIBLE
Definition attributes.hh:59
Definition about_metadata-fwd.hh:24