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/core/utils/memory/stl/AWSVector.h>
9 #include <aws/pinpoint/model/Include.h>
10 #include <aws/pinpoint/model/SegmentGroup.h>
11 #include <utility>
12 
13 namespace Aws
14 {
15 namespace Utils
16 {
17 namespace Json
18 {
19   class JsonValue;
20   class JsonView;
21 } // namespace Json
22 } // namespace Utils
23 namespace Pinpoint
24 {
25 namespace Model
26 {
27 
28   /**
29    * <p>Specifies the settings that define the relationships between segment groups
30    * for a segment.</p><p><h3>See Also:</h3>   <a
31    * href="http://docs.aws.amazon.com/goto/WebAPI/pinpoint-2016-12-01/SegmentGroupList">AWS
32    * API Reference</a></p>
33    */
34   class AWS_PINPOINT_API SegmentGroupList
35   {
36   public:
37     SegmentGroupList();
38     SegmentGroupList(Aws::Utils::Json::JsonView jsonValue);
39     SegmentGroupList& operator=(Aws::Utils::Json::JsonView jsonValue);
40     Aws::Utils::Json::JsonValue Jsonize() const;
41 
42 
43     /**
44      * <p>An array that defines the set of segment criteria to evaluate when handling
45      * segment groups for the segment.</p>
46      */
GetGroups()47     inline const Aws::Vector<SegmentGroup>& GetGroups() const{ return m_groups; }
48 
49     /**
50      * <p>An array that defines the set of segment criteria to evaluate when handling
51      * segment groups for the segment.</p>
52      */
GroupsHasBeenSet()53     inline bool GroupsHasBeenSet() const { return m_groupsHasBeenSet; }
54 
55     /**
56      * <p>An array that defines the set of segment criteria to evaluate when handling
57      * segment groups for the segment.</p>
58      */
SetGroups(const Aws::Vector<SegmentGroup> & value)59     inline void SetGroups(const Aws::Vector<SegmentGroup>& value) { m_groupsHasBeenSet = true; m_groups = value; }
60 
61     /**
62      * <p>An array that defines the set of segment criteria to evaluate when handling
63      * segment groups for the segment.</p>
64      */
SetGroups(Aws::Vector<SegmentGroup> && value)65     inline void SetGroups(Aws::Vector<SegmentGroup>&& value) { m_groupsHasBeenSet = true; m_groups = std::move(value); }
66 
67     /**
68      * <p>An array that defines the set of segment criteria to evaluate when handling
69      * segment groups for the segment.</p>
70      */
WithGroups(const Aws::Vector<SegmentGroup> & value)71     inline SegmentGroupList& WithGroups(const Aws::Vector<SegmentGroup>& value) { SetGroups(value); return *this;}
72 
73     /**
74      * <p>An array that defines the set of segment criteria to evaluate when handling
75      * segment groups for the segment.</p>
76      */
WithGroups(Aws::Vector<SegmentGroup> && value)77     inline SegmentGroupList& WithGroups(Aws::Vector<SegmentGroup>&& value) { SetGroups(std::move(value)); return *this;}
78 
79     /**
80      * <p>An array that defines the set of segment criteria to evaluate when handling
81      * segment groups for the segment.</p>
82      */
AddGroups(const SegmentGroup & value)83     inline SegmentGroupList& AddGroups(const SegmentGroup& value) { m_groupsHasBeenSet = true; m_groups.push_back(value); return *this; }
84 
85     /**
86      * <p>An array that defines the set of segment criteria to evaluate when handling
87      * segment groups for the segment.</p>
88      */
AddGroups(SegmentGroup && value)89     inline SegmentGroupList& AddGroups(SegmentGroup&& value) { m_groupsHasBeenSet = true; m_groups.push_back(std::move(value)); return *this; }
90 
91 
92     /**
93      * <p>Specifies how to handle multiple segment groups for the segment. For example,
94      * if the segment includes three segment groups, whether the resulting segment
95      * includes endpoints that match all, any, or none of the segment groups.</p>
96      */
GetInclude()97     inline const Include& GetInclude() const{ return m_include; }
98 
99     /**
100      * <p>Specifies how to handle multiple segment groups for the segment. For example,
101      * if the segment includes three segment groups, whether the resulting segment
102      * includes endpoints that match all, any, or none of the segment groups.</p>
103      */
IncludeHasBeenSet()104     inline bool IncludeHasBeenSet() const { return m_includeHasBeenSet; }
105 
106     /**
107      * <p>Specifies how to handle multiple segment groups for the segment. For example,
108      * if the segment includes three segment groups, whether the resulting segment
109      * includes endpoints that match all, any, or none of the segment groups.</p>
110      */
SetInclude(const Include & value)111     inline void SetInclude(const Include& value) { m_includeHasBeenSet = true; m_include = value; }
112 
113     /**
114      * <p>Specifies how to handle multiple segment groups for the segment. For example,
115      * if the segment includes three segment groups, whether the resulting segment
116      * includes endpoints that match all, any, or none of the segment groups.</p>
117      */
SetInclude(Include && value)118     inline void SetInclude(Include&& value) { m_includeHasBeenSet = true; m_include = std::move(value); }
119 
120     /**
121      * <p>Specifies how to handle multiple segment groups for the segment. For example,
122      * if the segment includes three segment groups, whether the resulting segment
123      * includes endpoints that match all, any, or none of the segment groups.</p>
124      */
WithInclude(const Include & value)125     inline SegmentGroupList& WithInclude(const Include& value) { SetInclude(value); return *this;}
126 
127     /**
128      * <p>Specifies how to handle multiple segment groups for the segment. For example,
129      * if the segment includes three segment groups, whether the resulting segment
130      * includes endpoints that match all, any, or none of the segment groups.</p>
131      */
WithInclude(Include && value)132     inline SegmentGroupList& WithInclude(Include&& value) { SetInclude(std::move(value)); return *this;}
133 
134   private:
135 
136     Aws::Vector<SegmentGroup> m_groups;
137     bool m_groupsHasBeenSet;
138 
139     Include m_include;
140     bool m_includeHasBeenSet;
141   };
142 
143 } // namespace Model
144 } // namespace Pinpoint
145 } // namespace Aws
146