/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
#pragma once
#include 
#include 
#include 
#include 
#include 
#include 
namespace Aws
{
template
class AmazonWebServiceResult;
namespace Utils
{
namespace Xml
{
  class XmlDocument;
} // namespace Xml
} // namespace Utils
namespace SQS
{
namespace Model
{
  /**
   * For each message in the batch, the response contains a 
   * ChangeMessageVisibilityBatchResultEntry  tag if the message
   * succeeds or a  BatchResultErrorEntry  tag if the message
   * fails.
See Also:
   AWS
   * API Reference
   */
  class ChangeMessageVisibilityBatchResult
  {
  public:
    AWS_SQS_API ChangeMessageVisibilityBatchResult();
    AWS_SQS_API ChangeMessageVisibilityBatchResult(const Aws::AmazonWebServiceResult& result);
    AWS_SQS_API ChangeMessageVisibilityBatchResult& operator=(const Aws::AmazonWebServiceResult& result);
    /**
     * A list of  ChangeMessageVisibilityBatchResultEntry 
     * items.
     */
    inline const Aws::Vector& GetSuccessful() const{ return m_successful; }
    /**
     * A list of  ChangeMessageVisibilityBatchResultEntry 
     * items.
     */
    inline void SetSuccessful(const Aws::Vector& value) { m_successful = value; }
    /**
     * A list of  ChangeMessageVisibilityBatchResultEntry 
     * items.
     */
    inline void SetSuccessful(Aws::Vector&& value) { m_successful = std::move(value); }
    /**
     * A list of  ChangeMessageVisibilityBatchResultEntry 
     * items.
     */
    inline ChangeMessageVisibilityBatchResult& WithSuccessful(const Aws::Vector& value) { SetSuccessful(value); return *this;}
    /**
     * A list of  ChangeMessageVisibilityBatchResultEntry 
     * items.
     */
    inline ChangeMessageVisibilityBatchResult& WithSuccessful(Aws::Vector&& value) { SetSuccessful(std::move(value)); return *this;}
    /**
     * A list of  ChangeMessageVisibilityBatchResultEntry 
     * items.
     */
    inline ChangeMessageVisibilityBatchResult& AddSuccessful(const ChangeMessageVisibilityBatchResultEntry& value) { m_successful.push_back(value); return *this; }
    /**
     * A list of  ChangeMessageVisibilityBatchResultEntry 
     * items.
     */
    inline ChangeMessageVisibilityBatchResult& AddSuccessful(ChangeMessageVisibilityBatchResultEntry&& value) { m_successful.push_back(std::move(value)); return *this; }
    /**
     * A list of  BatchResultErrorEntry  items.
     */
    inline const Aws::Vector& GetFailed() const{ return m_failed; }
    /**
     * A list of  BatchResultErrorEntry  items.
     */
    inline void SetFailed(const Aws::Vector& value) { m_failed = value; }
    /**
     * A list of  BatchResultErrorEntry  items.
     */
    inline void SetFailed(Aws::Vector&& value) { m_failed = std::move(value); }
    /**
     * A list of  BatchResultErrorEntry  items.
     */
    inline ChangeMessageVisibilityBatchResult& WithFailed(const Aws::Vector& value) { SetFailed(value); return *this;}
    /**
     * A list of  BatchResultErrorEntry  items.
     */
    inline ChangeMessageVisibilityBatchResult& WithFailed(Aws::Vector&& value) { SetFailed(std::move(value)); return *this;}
    /**
     * A list of  BatchResultErrorEntry  items.
     */
    inline ChangeMessageVisibilityBatchResult& AddFailed(const BatchResultErrorEntry& value) { m_failed.push_back(value); return *this; }
    /**
     * A list of  BatchResultErrorEntry  items.
     */
    inline ChangeMessageVisibilityBatchResult& AddFailed(BatchResultErrorEntry&& value) { m_failed.push_back(std::move(value)); return *this; }
    
    inline const ResponseMetadata& GetResponseMetadata() const{ return m_responseMetadata; }
    
    inline void SetResponseMetadata(const ResponseMetadata& value) { m_responseMetadata = value; }
    
    inline void SetResponseMetadata(ResponseMetadata&& value) { m_responseMetadata = std::move(value); }
    
    inline ChangeMessageVisibilityBatchResult& WithResponseMetadata(const ResponseMetadata& value) { SetResponseMetadata(value); return *this;}
    
    inline ChangeMessageVisibilityBatchResult& WithResponseMetadata(ResponseMetadata&& value) { SetResponseMetadata(std::move(value)); return *this;}
  private:
    Aws::Vector m_successful;
    Aws::Vector m_failed;
    ResponseMetadata m_responseMetadata;
  };
} // namespace Model
} // namespace SQS
} // namespace Aws