// Copyright (c) 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_QUIC_PLATFORM_API_QUIC_CONTAINERS_H_ #define NET_QUIC_PLATFORM_API_QUIC_CONTAINERS_H_ #include "net/quic/platform/impl/quic_containers_impl.h" namespace net { // A general-purpose unordered map. template ::hasher, typename Eq = typename QuicUnorderedMapImpl::key_equal, typename Alloc = typename QuicUnorderedMapImpl::allocator_type> using QuicUnorderedMap = QuicUnorderedMapImpl; // A general-purpose unordered set. template ::hasher, typename Eq = typename QuicUnorderedSetImpl::key_equal, typename Alloc = typename QuicUnorderedSetImpl::allocator_type> using QuicUnorderedSet = QuicUnorderedSetImpl; // A map which offers insertion-ordered iteration. template using QuicLinkedHashMap = QuicLinkedHashMapImpl; // Used for maps that are typically small, then it is faster than (for example) // hash_map which is optimized for large data sets. QuicSmallMap upgrades itself // automatically to a QuicSmallMapImpl-specified map when it runs out of space. template using QuicSmallMap = QuicSmallMapImpl; // A data structure used to represent a sorted set of non-empty, non-adjacent, // and mutually disjoint intervals. template using QuicIntervalSet = QuicIntervalSetImpl; // Represents a simple queue which may be backed by a list or // a flat circular buffer. // // DOES NOT GUARANTEE POINTER OR ITERATOR STABILITY! template using QuicQueue = QuicQueueImpl; // Represents a double-ended queue which may be backed by a list or // a flat circular buffer. // // DOES NOT GUARANTEE POINTER OR ITERATOR STABILITY! template using QuicDeque = QuicDequeImpl; } // namespace net #endif // NET_QUIC_PLATFORM_API_QUIC_CONTAINERS_H_