neoGFX
Cross-platform C++ app/game engine
Loading...
Searching...
No Matches
setting_constraints.hpp
Go to the documentation of this file.
1// setting_constraints.hpp
2/*
3 * Copyright (c) 2020 Leigh Johnston.
4 *
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are
9 * met:
10 *
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * * Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * * Neither the name of Leigh Johnston nor the names of any
19 * other contributors to this software may be used to endorse or
20 * promote products derived from this software without specific prior
21 * written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
24 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
27 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34*/
35
36#pragma once
37
38#include <neolib/neolib.hpp>
42
43namespace neolib
44{
45 template <typename T>
47 {
48 public:
49 typedef T value_type;
51 public:
53 bool aOptional = false,
54 bool aInitiallyDisabled = false,
55 setting_value_type const& aMinimumValue = setting_value_type{},
56 setting_value_type const& aMaximumValue = setting_value_type{},
57 setting_value_type const& aStepValue = setting_value_type{},
58 i_vector<i_setting_value> const& aAllowableValues = vector<setting_value_type>{}) :
59 iInitiallyDisabled{ aInitiallyDisabled },
60 iOptional{ aOptional },
61 iMinimumValue{ aMinimumValue },
62 iMaximumValue{ aMaximumValue },
63 iStepValue{ aStepValue },
64 iAllowableValues{ aAllowableValues }
65 {}
67 iOptional{ aOther.optional() },
68 iInitiallyDisabled{ aOther.initially_disabled() },
69 iMinimumValue{ aOther.minimum_value() },
70 iMaximumValue{ aOther.maximum_value() },
71 iStepValue{ aOther.step_value() },
72 iAllowableValues{ aOther.allowable_values() }
73 {}
74 public:
75 bool optional() const override
76 {
77 return iOptional;
78 }
79 bool initially_disabled() const override
80 {
81 return iInitiallyDisabled;
82 }
83 bool has_minimum_value() const override
84 {
85 return iMinimumValue.is_set();
86 }
87 bool has_maximum_value() const override
88 {
89 return iMaximumValue.is_set();
90 }
91 bool has_step_value() const override
92 {
93 return iStepValue.is_set();
94 }
95 bool has_allowable_values() const override
96 {
97 return !iAllowableValues.empty();
98 }
99 setting_value_type const& minimum_value() const override
100 {
101 return iMinimumValue;
102 }
103 setting_value_type const& maximum_value() const override
104 {
105 return iMaximumValue;
106 }
107 setting_value_type const& step_value() const override
108 {
109 return iStepValue;
110 }
112 {
113 return iAllowableValues;
114 }
115 private:
116 bool iOptional;
117 bool iInitiallyDisabled;
118 setting_value_type iMinimumValue;
119 setting_value_type iMaximumValue;
120 setting_value_type iStepValue;
121 vector<setting_value_type> iAllowableValues;
122 };
123}
setting_value_type const & step_value() const override
bool initially_disabled() const override
setting_value< value_type > setting_value_type
vector< setting_value_type > const & allowable_values() const override
bool has_minimum_value() const override
setting_constraints(i_setting_constraints const &aOther)
bool has_step_value() const override
setting_value_type const & minimum_value() const override
setting_value_type const & maximum_value() const override
bool has_allowable_values() const override
bool has_maximum_value() const override
setting_constraints(bool aOptional=false, bool aInitiallyDisabled=false, setting_value_type const &aMinimumValue=setting_value_type{}, setting_value_type const &aMaximumValue=setting_value_type{}, setting_value_type const &aStepValue=setting_value_type{}, i_vector< i_setting_value > const &aAllowableValues=vector< setting_value_type >{})
bool is_set() const override