23 #include <unordered_map> 26 #include <boost/thread/shared_mutex.hpp> 34 template <
typename I,
typename T>
45 T*
Add(
const I
id,
const T&
object) {
48 AWARN <<
"object " <<
id <<
" is already in container";
52 object_dict_.insert({id,
object});
53 auto* ptr = &object_dict_.at(
id);
54 object_list_.push_back(ptr);
66 return apollo::common::util::FindOrNull(object_dict_,
id);
75 const T*
Find(
const I
id)
const {
76 return apollo::common::util::FindOrNull(object_dict_,
id);
83 const std::vector<const T*>&
Items()
const {
return object_list_; }
89 const std::unordered_map<I, T>&
Dict()
const {
return object_dict_; }
95 this->object_list_.clear();
96 this->object_dict_.clear();
97 for (
const auto& item : other.
Dict()) {
98 Add(item.first, item.second);
104 std::vector<const T*> object_list_;
105 std::unordered_map<I, T> object_dict_;
108 template <
typename I,
typename T>
111 T*
Add(
const I
id,
const T&
object) {
112 boost::unique_lock<boost::shared_mutex> writer_lock(mutex_);
117 boost::shared_lock<boost::shared_mutex> reader_lock(mutex_);
121 std::vector<const T*>
Items()
const {
122 boost::shared_lock<boost::shared_mutex> reader_lock(mutex_);
127 mutable boost::shared_mutex mutex_;
T * Find(const I id)
Definition: indexed_list.h:116
const std::vector< const T * > & Items() const
List all the items in the container.
Definition: indexed_list.h:83
const T * Find(const I id) const
Find object by id in the container.
Definition: indexed_list.h:75
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Planning module main class. It processes GPS and IMU as input, to generate planning info...
IndexedList & operator=(const IndexedList &other)
Copy the container with objects.
Definition: indexed_list.h:94
T * Add(const I id, const T &object)
copy object into the container. If the id is already exist, overwrite the object in the container...
Definition: indexed_list.h:45
Definition: indexed_list.h:35
const std::unordered_map< I, T > & Dict() const
List all the items in the container.
Definition: indexed_list.h:89
Definition: indexed_list.h:109
T * Find(const I id)
Find object by id in the container.
Definition: indexed_list.h:65
#define AWARN
Definition: log.h:43
T * Add(const I id, const T &object)
Definition: indexed_list.h:111
std::vector< const T * > Items() const
Definition: indexed_list.h:121