1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/pinpoint/Pinpoint_EXPORTS.h>
8 #include <aws/pinpoint/model/SetDimension.h>
9 #include <utility>
10 
11 namespace Aws
12 {
13 namespace Utils
14 {
15 namespace Json
16 {
17   class JsonValue;
18   class JsonView;
19 } // namespace Json
20 } // namespace Utils
21 namespace Pinpoint
22 {
23 namespace Model
24 {
25 
26   /**
27    * <p>Specifies demographic-based dimension settings for including or excluding
28    * endpoints from a segment. These settings derive from characteristics of endpoint
29    * devices, such as platform, make, and model.</p><p><h3>See Also:</h3>   <a
30    * href="http://docs.aws.amazon.com/goto/WebAPI/pinpoint-2016-12-01/SegmentDemographics">AWS
31    * API Reference</a></p>
32    */
33   class AWS_PINPOINT_API SegmentDemographics
34   {
35   public:
36     SegmentDemographics();
37     SegmentDemographics(Aws::Utils::Json::JsonView jsonValue);
38     SegmentDemographics& operator=(Aws::Utils::Json::JsonView jsonValue);
39     Aws::Utils::Json::JsonValue Jsonize() const;
40 
41 
42     /**
43      * <p>The app version criteria for the segment.</p>
44      */
GetAppVersion()45     inline const SetDimension& GetAppVersion() const{ return m_appVersion; }
46 
47     /**
48      * <p>The app version criteria for the segment.</p>
49      */
AppVersionHasBeenSet()50     inline bool AppVersionHasBeenSet() const { return m_appVersionHasBeenSet; }
51 
52     /**
53      * <p>The app version criteria for the segment.</p>
54      */
SetAppVersion(const SetDimension & value)55     inline void SetAppVersion(const SetDimension& value) { m_appVersionHasBeenSet = true; m_appVersion = value; }
56 
57     /**
58      * <p>The app version criteria for the segment.</p>
59      */
SetAppVersion(SetDimension && value)60     inline void SetAppVersion(SetDimension&& value) { m_appVersionHasBeenSet = true; m_appVersion = std::move(value); }
61 
62     /**
63      * <p>The app version criteria for the segment.</p>
64      */
WithAppVersion(const SetDimension & value)65     inline SegmentDemographics& WithAppVersion(const SetDimension& value) { SetAppVersion(value); return *this;}
66 
67     /**
68      * <p>The app version criteria for the segment.</p>
69      */
WithAppVersion(SetDimension && value)70     inline SegmentDemographics& WithAppVersion(SetDimension&& value) { SetAppVersion(std::move(value)); return *this;}
71 
72 
73     /**
74      * <p>The channel criteria for the segment.</p>
75      */
GetChannel()76     inline const SetDimension& GetChannel() const{ return m_channel; }
77 
78     /**
79      * <p>The channel criteria for the segment.</p>
80      */
ChannelHasBeenSet()81     inline bool ChannelHasBeenSet() const { return m_channelHasBeenSet; }
82 
83     /**
84      * <p>The channel criteria for the segment.</p>
85      */
SetChannel(const SetDimension & value)86     inline void SetChannel(const SetDimension& value) { m_channelHasBeenSet = true; m_channel = value; }
87 
88     /**
89      * <p>The channel criteria for the segment.</p>
90      */
SetChannel(SetDimension && value)91     inline void SetChannel(SetDimension&& value) { m_channelHasBeenSet = true; m_channel = std::move(value); }
92 
93     /**
94      * <p>The channel criteria for the segment.</p>
95      */
WithChannel(const SetDimension & value)96     inline SegmentDemographics& WithChannel(const SetDimension& value) { SetChannel(value); return *this;}
97 
98     /**
99      * <p>The channel criteria for the segment.</p>
100      */
WithChannel(SetDimension && value)101     inline SegmentDemographics& WithChannel(SetDimension&& value) { SetChannel(std::move(value)); return *this;}
102 
103 
104     /**
105      * <p>The device type criteria for the segment.</p>
106      */
GetDeviceType()107     inline const SetDimension& GetDeviceType() const{ return m_deviceType; }
108 
109     /**
110      * <p>The device type criteria for the segment.</p>
111      */
DeviceTypeHasBeenSet()112     inline bool DeviceTypeHasBeenSet() const { return m_deviceTypeHasBeenSet; }
113 
114     /**
115      * <p>The device type criteria for the segment.</p>
116      */
SetDeviceType(const SetDimension & value)117     inline void SetDeviceType(const SetDimension& value) { m_deviceTypeHasBeenSet = true; m_deviceType = value; }
118 
119     /**
120      * <p>The device type criteria for the segment.</p>
121      */
SetDeviceType(SetDimension && value)122     inline void SetDeviceType(SetDimension&& value) { m_deviceTypeHasBeenSet = true; m_deviceType = std::move(value); }
123 
124     /**
125      * <p>The device type criteria for the segment.</p>
126      */
WithDeviceType(const SetDimension & value)127     inline SegmentDemographics& WithDeviceType(const SetDimension& value) { SetDeviceType(value); return *this;}
128 
129     /**
130      * <p>The device type criteria for the segment.</p>
131      */
WithDeviceType(SetDimension && value)132     inline SegmentDemographics& WithDeviceType(SetDimension&& value) { SetDeviceType(std::move(value)); return *this;}
133 
134 
135     /**
136      * <p>The device make criteria for the segment.</p>
137      */
GetMake()138     inline const SetDimension& GetMake() const{ return m_make; }
139 
140     /**
141      * <p>The device make criteria for the segment.</p>
142      */
MakeHasBeenSet()143     inline bool MakeHasBeenSet() const { return m_makeHasBeenSet; }
144 
145     /**
146      * <p>The device make criteria for the segment.</p>
147      */
SetMake(const SetDimension & value)148     inline void SetMake(const SetDimension& value) { m_makeHasBeenSet = true; m_make = value; }
149 
150     /**
151      * <p>The device make criteria for the segment.</p>
152      */
SetMake(SetDimension && value)153     inline void SetMake(SetDimension&& value) { m_makeHasBeenSet = true; m_make = std::move(value); }
154 
155     /**
156      * <p>The device make criteria for the segment.</p>
157      */
WithMake(const SetDimension & value)158     inline SegmentDemographics& WithMake(const SetDimension& value) { SetMake(value); return *this;}
159 
160     /**
161      * <p>The device make criteria for the segment.</p>
162      */
WithMake(SetDimension && value)163     inline SegmentDemographics& WithMake(SetDimension&& value) { SetMake(std::move(value)); return *this;}
164 
165 
166     /**
167      * <p>The device model criteria for the segment.</p>
168      */
GetModel()169     inline const SetDimension& GetModel() const{ return m_model; }
170 
171     /**
172      * <p>The device model criteria for the segment.</p>
173      */
ModelHasBeenSet()174     inline bool ModelHasBeenSet() const { return m_modelHasBeenSet; }
175 
176     /**
177      * <p>The device model criteria for the segment.</p>
178      */
SetModel(const SetDimension & value)179     inline void SetModel(const SetDimension& value) { m_modelHasBeenSet = true; m_model = value; }
180 
181     /**
182      * <p>The device model criteria for the segment.</p>
183      */
SetModel(SetDimension && value)184     inline void SetModel(SetDimension&& value) { m_modelHasBeenSet = true; m_model = std::move(value); }
185 
186     /**
187      * <p>The device model criteria for the segment.</p>
188      */
WithModel(const SetDimension & value)189     inline SegmentDemographics& WithModel(const SetDimension& value) { SetModel(value); return *this;}
190 
191     /**
192      * <p>The device model criteria for the segment.</p>
193      */
WithModel(SetDimension && value)194     inline SegmentDemographics& WithModel(SetDimension&& value) { SetModel(std::move(value)); return *this;}
195 
196 
197     /**
198      * <p>The device platform criteria for the segment.</p>
199      */
GetPlatform()200     inline const SetDimension& GetPlatform() const{ return m_platform; }
201 
202     /**
203      * <p>The device platform criteria for the segment.</p>
204      */
PlatformHasBeenSet()205     inline bool PlatformHasBeenSet() const { return m_platformHasBeenSet; }
206 
207     /**
208      * <p>The device platform criteria for the segment.</p>
209      */
SetPlatform(const SetDimension & value)210     inline void SetPlatform(const SetDimension& value) { m_platformHasBeenSet = true; m_platform = value; }
211 
212     /**
213      * <p>The device platform criteria for the segment.</p>
214      */
SetPlatform(SetDimension && value)215     inline void SetPlatform(SetDimension&& value) { m_platformHasBeenSet = true; m_platform = std::move(value); }
216 
217     /**
218      * <p>The device platform criteria for the segment.</p>
219      */
WithPlatform(const SetDimension & value)220     inline SegmentDemographics& WithPlatform(const SetDimension& value) { SetPlatform(value); return *this;}
221 
222     /**
223      * <p>The device platform criteria for the segment.</p>
224      */
WithPlatform(SetDimension && value)225     inline SegmentDemographics& WithPlatform(SetDimension&& value) { SetPlatform(std::move(value)); return *this;}
226 
227   private:
228 
229     SetDimension m_appVersion;
230     bool m_appVersionHasBeenSet;
231 
232     SetDimension m_channel;
233     bool m_channelHasBeenSet;
234 
235     SetDimension m_deviceType;
236     bool m_deviceTypeHasBeenSet;
237 
238     SetDimension m_make;
239     bool m_makeHasBeenSet;
240 
241     SetDimension m_model;
242     bool m_modelHasBeenSet;
243 
244     SetDimension m_platform;
245     bool m_platformHasBeenSet;
246   };
247 
248 } // namespace Model
249 } // namespace Pinpoint
250 } // namespace Aws
251