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/s3-crt/S3Crt_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSVector.h>
9 #include <aws/s3-crt/model/OwnershipControlsRule.h>
10 #include <utility>
11 
12 namespace Aws
13 {
14 namespace Utils
15 {
16 namespace Xml
17 {
18   class XmlNode;
19 } // namespace Xml
20 } // namespace Utils
21 namespace S3Crt
22 {
23 namespace Model
24 {
25 
26   /**
27    * <p>The container element for a bucket's ownership controls.</p><p><h3>See
28    * Also:</h3>   <a
29    * href="http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/OwnershipControls">AWS
30    * API Reference</a></p>
31    */
32   class AWS_S3CRT_API OwnershipControls
33   {
34   public:
35     OwnershipControls();
36     OwnershipControls(const Aws::Utils::Xml::XmlNode& xmlNode);
37     OwnershipControls& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
38 
39     void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
40 
41 
42     /**
43      * <p>The container element for an ownership control rule.</p>
44      */
GetRules()45     inline const Aws::Vector<OwnershipControlsRule>& GetRules() const{ return m_rules; }
46 
47     /**
48      * <p>The container element for an ownership control rule.</p>
49      */
RulesHasBeenSet()50     inline bool RulesHasBeenSet() const { return m_rulesHasBeenSet; }
51 
52     /**
53      * <p>The container element for an ownership control rule.</p>
54      */
SetRules(const Aws::Vector<OwnershipControlsRule> & value)55     inline void SetRules(const Aws::Vector<OwnershipControlsRule>& value) { m_rulesHasBeenSet = true; m_rules = value; }
56 
57     /**
58      * <p>The container element for an ownership control rule.</p>
59      */
SetRules(Aws::Vector<OwnershipControlsRule> && value)60     inline void SetRules(Aws::Vector<OwnershipControlsRule>&& value) { m_rulesHasBeenSet = true; m_rules = std::move(value); }
61 
62     /**
63      * <p>The container element for an ownership control rule.</p>
64      */
WithRules(const Aws::Vector<OwnershipControlsRule> & value)65     inline OwnershipControls& WithRules(const Aws::Vector<OwnershipControlsRule>& value) { SetRules(value); return *this;}
66 
67     /**
68      * <p>The container element for an ownership control rule.</p>
69      */
WithRules(Aws::Vector<OwnershipControlsRule> && value)70     inline OwnershipControls& WithRules(Aws::Vector<OwnershipControlsRule>&& value) { SetRules(std::move(value)); return *this;}
71 
72     /**
73      * <p>The container element for an ownership control rule.</p>
74      */
AddRules(const OwnershipControlsRule & value)75     inline OwnershipControls& AddRules(const OwnershipControlsRule& value) { m_rulesHasBeenSet = true; m_rules.push_back(value); return *this; }
76 
77     /**
78      * <p>The container element for an ownership control rule.</p>
79      */
AddRules(OwnershipControlsRule && value)80     inline OwnershipControls& AddRules(OwnershipControlsRule&& value) { m_rulesHasBeenSet = true; m_rules.push_back(std::move(value)); return *this; }
81 
82   private:
83 
84     Aws::Vector<OwnershipControlsRule> m_rules;
85     bool m_rulesHasBeenSet;
86   };
87 
88 } // namespace Model
89 } // namespace S3Crt
90 } // namespace Aws
91