diff --git a/.gitignore b/.gitignore
index 80c423082bb0..8c496b9064be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -82,6 +82,9 @@ toolchains/android/
tools/code-generation/generator/target/
tools/code-generation/smithy/codegen/gradle/
tools/code-generation/smithy/codegen/.gradle/
+tools/code-generation/smithy/cpp-codegen/.gradle/
+tools/code-generation/smithy/cpp-codegen/output/
+tools/code-generation/smithy/cpp-codegen/smithy-build.json
#config output
aws-cpp-sdk-core/include/aws/core/SDKConfig.h
diff --git a/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBClient.h b/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBClient.h
index 873154dd938b..a4cfb576b72e 100644
--- a/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBClient.h
+++ b/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBClient.h
@@ -7,6 +7,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -40,7 +41,8 @@ class AWS_DYNAMODB_API DynamoDBClient
public smithy::client::AwsSmithyClientT, Aws::Crt::Variant,
DynamoDBEndpointProviderBase, smithy::client::JsonOutcomeSerializer,
- smithy::client::JsonOutcome, Aws::Client::DynamoDBErrorMarshaller> {
+ smithy::client::JsonOutcome, Aws::Client::DynamoDBErrorMarshaller>,
+ public DynamoDBPaginationBase {
public:
static const char* GetServiceName();
static const char* GetAllocationTag();
diff --git a/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBClientPagination.h b/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBClientPagination.h
new file mode 100644
index 000000000000..c421f85b0335
--- /dev/null
+++ b/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBClientPagination.h
@@ -0,0 +1,34 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace Aws {
+namespace DynamoDB {
+
+using ListContributorInsightsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using ListExportsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using ListImportsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using ListTablesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using QueryPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using ScanPaginator =
+ Aws::Utils::Pagination::Paginator>;
+
+} // namespace DynamoDB
+} // namespace Aws
diff --git a/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBPaginationBase.h b/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBPaginationBase.h
new file mode 100644
index 000000000000..03daba9e5fdc
--- /dev/null
+++ b/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBPaginationBase.h
@@ -0,0 +1,86 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+namespace Aws {
+namespace DynamoDB {
+
+class DynamoDBClient;
+
+template
+class DynamoDBPaginationBase {
+ public:
+ /**
+ * Create a paginator for ListContributorInsights operation
+ */
+ Aws::Utils::Pagination::Paginator>
+ ListContributorInsightsPaginator(const Model::ListContributorInsightsRequest& request) {
+ return Aws::Utils::Pagination::Paginator>{
+ *static_cast(this), request};
+ }
+
+ /**
+ * Create a paginator for ListExports operation
+ */
+ Aws::Utils::Pagination::Paginator>
+ ListExportsPaginator(const Model::ListExportsRequest& request) {
+ return Aws::Utils::Pagination::Paginator>{*static_cast(this),
+ request};
+ }
+
+ /**
+ * Create a paginator for ListImports operation
+ */
+ Aws::Utils::Pagination::Paginator>
+ ListImportsPaginator(const Model::ListImportsRequest& request) {
+ return Aws::Utils::Pagination::Paginator>{*static_cast(this),
+ request};
+ }
+
+ /**
+ * Create a paginator for ListTables operation
+ */
+ Aws::Utils::Pagination::Paginator>
+ ListTablesPaginator(const Model::ListTablesRequest& request) {
+ return Aws::Utils::Pagination::Paginator>{*static_cast(this),
+ request};
+ }
+
+ /**
+ * Create a paginator for Query operation
+ */
+ Aws::Utils::Pagination::Paginator> QueryPaginator(
+ const Model::QueryRequest& request) {
+ return Aws::Utils::Pagination::Paginator>{
+ *static_cast(this), request};
+ }
+
+ /**
+ * Create a paginator for Scan operation
+ */
+ Aws::Utils::Pagination::Paginator> ScanPaginator(
+ const Model::ScanRequest& request) {
+ return Aws::Utils::Pagination::Paginator>{
+ *static_cast(this), request};
+ }
+};
+} // namespace DynamoDB
+} // namespace Aws
diff --git a/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/model/ScanPaginationTraits.h b/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/model/ScanPaginationTraits.h
new file mode 100644
index 000000000000..41f64ab4cca4
--- /dev/null
+++ b/generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/model/ScanPaginationTraits.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+#include
+#include
+
+namespace Aws {
+namespace DynamoDB {
+namespace Pagination {
+
+template
+struct ScanPaginationTraits {
+ using RequestType = Model::ScanRequest;
+ using ResultType = Model::ScanResult;
+ using OutcomeType = Model::ScanOutcome;
+ using ClientType = Client;
+
+ static OutcomeType Invoke(Client& client, const RequestType& request) { return client.Scan(request); }
+
+ static bool HasMoreResults(const ResultType& result) { return !result.GetLastEvaluatedKey().empty(); }
+
+ static void SetNextRequest(const ResultType& result, RequestType& request) { request.SetExclusiveStartKey(result.GetLastEvaluatedKey()); }
+};
+
+} // namespace Pagination
+} // namespace DynamoDB
+} // namespace Aws
diff --git a/generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2Client.h b/generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2Client.h
index 448f1a952f35..49cf8ca71505 100644
--- a/generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2Client.h
+++ b/generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2Client.h
@@ -9,6 +9,7 @@
#include
#include
#include
+#include
#include
#include
@@ -21,7 +22,9 @@ namespace EC2 {
* href="https://docs.aws.amazon.com/ec2/latest/devguide">Amazon EC2 Developer
* Guide.
*/
-class AWS_EC2_API EC2Client : public Aws::Client::AWSXMLClient, public Aws::Client::ClientWithAsyncTemplateMethods {
+class AWS_EC2_API EC2Client : public Aws::Client::AWSXMLClient,
+ public Aws::Client::ClientWithAsyncTemplateMethods,
+ public EC2PaginationBase {
public:
typedef Aws::Client::AWSXMLClient BASECLASS;
static const char* GetServiceName();
diff --git a/generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2ClientPagination.h b/generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2ClientPagination.h
new file mode 100644
index 000000000000..8832ec884292
--- /dev/null
+++ b/generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2ClientPagination.h
@@ -0,0 +1,625 @@
+/**
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0.
+ */
+
+#pragma once
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace Aws {
+namespace EC2 {
+
+using DescribeAddressesAttributePaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeAddressTransfersPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeAwsNetworkPerformanceMetricSubscriptionsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeByoipCidrsPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeCapacityBlockExtensionHistoryPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeCapacityBlockExtensionOfferingsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeCapacityBlockOfferingsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeCapacityBlocksPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeCapacityBlockStatusPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeCapacityManagerDataExportsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeCapacityReservationBillingRequestsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeCapacityReservationFleetsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeCapacityReservationsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeCarrierGatewaysPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeClassicLinkInstancesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeClientVpnAuthorizationRulesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeClientVpnConnectionsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeClientVpnEndpointsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeClientVpnRoutesPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeClientVpnTargetNetworksPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeCoipPoolsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeDhcpOptionsPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeEgressOnlyInternetGatewaysPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeExportImageTasksPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeFastLaunchImagesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeFastSnapshotRestoresPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeFleetsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeFlowLogsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeFpgaImagesPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeHostReservationOfferingsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeHostReservationsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeHostsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeIamInstanceProfileAssociationsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeImageReferencesPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeImagesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeImageUsageReportEntriesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeImageUsageReportsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeImportImageTasksPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeImportSnapshotTasksPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeInstanceConnectEndpointsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeInstanceCreditSpecificationsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeInstanceEventWindowsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeInstanceImageMetadataPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeInstancesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeInstanceStatusPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeInstanceTopologyPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeInstanceTypeOfferingsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeInstanceTypesPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeInternetGatewaysPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeIpamPoolsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeIpamPrefixListResolversPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeIpamPrefixListResolverTargetsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeIpamResourceDiscoveriesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeIpamResourceDiscoveryAssociationsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeIpamsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeIpamScopesPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeIpv6PoolsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeLaunchTemplatesPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeLaunchTemplateVersionsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeLocalGatewayRouteTablesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociationsPaginator = Aws::Utils::Pagination::Paginator<
+ EC2Client, Model::DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociationsRequest,
+ Pagination::DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociationsPaginationTraits>;
+using DescribeLocalGatewayRouteTableVpcAssociationsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeLocalGatewaysPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeLocalGatewayVirtualInterfaceGroupsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeLocalGatewayVirtualInterfacesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeMacHostsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeMacModificationTasksPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeManagedPrefixListsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeMovingAddressesPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeNatGatewaysPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeNetworkAclsPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeNetworkInsightsAccessScopeAnalysesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeNetworkInsightsAccessScopesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeNetworkInsightsAnalysesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeNetworkInsightsPathsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeNetworkInterfacePermissionsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeNetworkInterfacesPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribePrefixListsPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribePrincipalIdFormatPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribePublicIpv4PoolsPaginator = Aws::Utils::Pagination::Paginator>;
+using DescribeReplaceRootVolumeTasksPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeReservedInstancesModificationsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeReservedInstancesOfferingsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeRouteServerEndpointsPaginator =
+ Aws::Utils::Pagination::Paginator>;
+using DescribeRouteServerPeersPaginator =
+ Aws::Utils::Pagination::Paginator