// Copyright 2017 The Fuchsia 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 SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_COMMON_LINKED_LIST_H_
#define SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_COMMON_LINKED_LIST_H_

#include <fbl/intrusive_double_list.h>

#include <memory>

namespace bt {

// TODO(armansito): Use this in more places where it makes sense (see NET-176).

// Convenience template aliases for an fbl intrusive container backed
// LinkedList.
//
//   * Elements need to be dynamically allocated and entries MUST be managed
//     pointers.
//
//   * This is currently implemented as a doubly linked-list. This adds extra
//     storage overhead but makes it suitable for FIFO queues.

template <typename T>
using LinkedList = fbl::DoublyLinkedList<std::unique_ptr<T>>;

template <typename T>
using LinkedListable = fbl::DoublyLinkedListable<std::unique_ptr<T>>;

}  // namespace bt

#endif  // SRC_CONNECTIVITY_BLUETOOTH_CORE_BT_HOST_COMMON_LINKED_LIST_H_
