From ca83a072ffd10f50da016f572744b5c2e809d63b Mon Sep 17 00:00:00 2001
From: kai lin
Date: Tue, 13 Jan 2026 14:44:20 -0500
Subject: [PATCH 1/4] Added pagination codegen to new Smithy codegen project
with CRTP base clients, service-specific patches, and integration tests for
S3, EC2, and DynamoDB
---
.gitignore | 3 +
.../include/aws/dynamodb/DynamoDBClient.h | 4 +-
.../aws/dynamodb/DynamoDBClientPagination.h | 34 +
.../aws/dynamodb/DynamoDBPaginationBase.h | 86 +
.../aws/dynamodb/model/ScanPaginationTraits.h | 32 +
.../include/aws/ec2/EC2Client.h | 5 +-
.../include/aws/ec2/EC2ClientPagination.h | 637 ++++++
.../include/aws/ec2/EC2PaginationBase.h | 2024 +++++++++++++++++
...cribeSecondaryInterfacesPaginationTraits.h | 32 +
...escribeSecondaryNetworksPaginationTraits.h | 32 +
...DescribeSecondarySubnetsPaginationTraits.h | 32 +
...DescribeSpotPriceHistoryPaginationTraits.h | 32 +
.../aws-cpp-sdk-s3/include/aws/s3/S3Client.h | 5 +-
.../include/aws/s3/S3ClientPagination.h | 27 +
.../include/aws/s3/S3PaginationBase.h | 65 +
.../s3/model/ListBucketsPaginationTraits.h | 34 +
.../ListDirectoryBucketsPaginationTraits.h | 34 +
.../s3/model/ListObjectsV2PaginationTraits.h | 34 +
.../aws/s3/model/ListPartsPaginationTraits.h | 34 +
.../DynamoDBPaginationCompilationTests.cpp | 28 +
.../EC2PaginationCompilationTests.cpp | 189 ++
.../S3PaginationCompilationTests.cpp | 26 +
.../aws/core/utils/pagination/Paginator.h | 28 +-
.../utils/pagination/PaginatorTest.cpp | 15 +-
.../ScanPaginationIntegrationTest.cpp | 123 +
.../EC2PaginationIntegrationTest.cpp | 39 +
...ListObjectsV2PaginationIntegrationTest.cpp | 142 ++
.../cpp/json/JsonServiceClientHeader.vm | 3 +-
.../velocity/cpp/s3/S3ClientHeader.vm | 3 +-
.../velocity/cpp/smithy/SmithyClientHeader.vm | 4 +-
.../cpp/xml/XmlServiceClientHeader.vm | 3 +-
.../codegen/smithy2c2j_service_map.json | 2 +-
.../smithy/cpp-codegen/build.gradle.kts | 94 +
.../smithy/cpp-codegen/gradle.properties | 11 +
.../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes
.../gradle/wrapper/gradle-wrapper.properties | 7 +
.../smithy/cpp-codegen/gradlew | 252 ++
.../smithy/cpp-codegen/gradlew.bat | 94 +
.../smithy/cpp-codegen/settings.gradle.kts | 10 +
.../smithy-cpp-codegen/build.gradle.kts | 18 +
.../BaseCompilationTestGenerator.java | 88 +
.../generators/BaseHeaderGenerator.java | 58 +
.../generators/BaseTraitsGenerator.java | 56 +
.../generators/CppImportContainer.java | 36 +
.../generators/CppWriter.java | 45 +
.../generators/CppWriterDelegator.java | 37 +
.../generators/FeatureParser.java | 67 +
.../generators/OperationData.java | 32 +
.../generators/ServiceNameUtil.java | 141 ++
.../generators/ShapeUtil.java | 267 +++
.../pagination/PaginationBaseGenerator.java | 75 +
.../PaginationClientHeaderGenerator.java | 48 +
.../pagination/PaginationCodegenPlugin.java | 88 +
.../PaginationCompilationTestGenerator.java | 69 +
.../PaginationEmptyHeaderGenerator.java | 54 +
.../pagination/PaginationTraitsGenerator.java | 213 ++
...ware.amazon.smithy.build.SmithyBuildPlugin | 1 +
.../cpp-codegen/smithy2c2j_service_map.json | 68 +
tools/scripts/codegen/legacy_c2j_cpp_gen.py | 7 -
tools/scripts/codegen/smithy_cpp_gen.py | 125 +
tools/scripts/run_code_generation.py | 16 +
61 files changed, 5829 insertions(+), 39 deletions(-)
create mode 100644 generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBClientPagination.h
create mode 100644 generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/DynamoDBPaginationBase.h
create mode 100644 generated/src/aws-cpp-sdk-dynamodb/include/aws/dynamodb/model/ScanPaginationTraits.h
create mode 100644 generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2ClientPagination.h
create mode 100644 generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2PaginationBase.h
create mode 100644 generated/src/aws-cpp-sdk-ec2/include/aws/ec2/model/DescribeSecondaryInterfacesPaginationTraits.h
create mode 100644 generated/src/aws-cpp-sdk-ec2/include/aws/ec2/model/DescribeSecondaryNetworksPaginationTraits.h
create mode 100644 generated/src/aws-cpp-sdk-ec2/include/aws/ec2/model/DescribeSecondarySubnetsPaginationTraits.h
create mode 100644 generated/src/aws-cpp-sdk-ec2/include/aws/ec2/model/DescribeSpotPriceHistoryPaginationTraits.h
create mode 100644 generated/src/aws-cpp-sdk-s3/include/aws/s3/S3ClientPagination.h
create mode 100644 generated/src/aws-cpp-sdk-s3/include/aws/s3/S3PaginationBase.h
create mode 100644 generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ListBucketsPaginationTraits.h
create mode 100644 generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ListDirectoryBucketsPaginationTraits.h
create mode 100644 generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ListObjectsV2PaginationTraits.h
create mode 100644 generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ListPartsPaginationTraits.h
create mode 100644 generated/tests/dynamodb-gen-tests/DynamoDBPaginationCompilationTests.cpp
create mode 100644 generated/tests/ec2-gen-tests/EC2PaginationCompilationTests.cpp
create mode 100644 generated/tests/s3-gen-tests/S3PaginationCompilationTests.cpp
create mode 100644 tests/aws-cpp-sdk-dynamodb-integration-tests/ScanPaginationIntegrationTest.cpp
create mode 100644 tests/aws-cpp-sdk-ec2-integration-tests/EC2PaginationIntegrationTest.cpp
create mode 100644 tests/aws-cpp-sdk-s3-integration-tests/ListObjectsV2PaginationIntegrationTest.cpp
create mode 100644 tools/code-generation/smithy/cpp-codegen/build.gradle.kts
create mode 100644 tools/code-generation/smithy/cpp-codegen/gradle.properties
create mode 100644 tools/code-generation/smithy/cpp-codegen/gradle/wrapper/gradle-wrapper.jar
create mode 100644 tools/code-generation/smithy/cpp-codegen/gradle/wrapper/gradle-wrapper.properties
create mode 100755 tools/code-generation/smithy/cpp-codegen/gradlew
create mode 100644 tools/code-generation/smithy/cpp-codegen/gradlew.bat
create mode 100644 tools/code-generation/smithy/cpp-codegen/settings.gradle.kts
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/build.gradle.kts
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/BaseCompilationTestGenerator.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/BaseHeaderGenerator.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/BaseTraitsGenerator.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/CppImportContainer.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/CppWriter.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/CppWriterDelegator.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/FeatureParser.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/OperationData.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/ServiceNameUtil.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/ShapeUtil.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/pagination/PaginationBaseGenerator.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/pagination/PaginationClientHeaderGenerator.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/pagination/PaginationCodegenPlugin.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/pagination/PaginationCompilationTestGenerator.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/pagination/PaginationEmptyHeaderGenerator.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/java/com/amazonaws/util/awsclientsmithygenerator/generators/pagination/PaginationTraitsGenerator.java
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy-cpp-codegen/src/main/resources/META-INF/services/software.amazon.smithy.build.SmithyBuildPlugin
create mode 100644 tools/code-generation/smithy/cpp-codegen/smithy2c2j_service_map.json
create mode 100644 tools/scripts/codegen/smithy_cpp_gen.py
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 80d3de97c548..9e02c79bbf1a 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 81f89c20c255..23012e368bcd 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..5f04efcd66e6
--- /dev/null
+++ b/generated/src/aws-cpp-sdk-ec2/include/aws/ec2/EC2ClientPagination.h
@@ -0,0 +1,637 @@
+/**
+ * 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
+#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