CARLA
 
载入中...
搜索中...
未找到
BlueprintLibrary.h
浏览该文件的文档.
1// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
9#include "carla/Debug.h"
10#include "carla/Iterator.h"
11#include "carla/Memory.h"
12#include "carla/NonCopyable.h"
14
15#include <type_traits>
16#include <unordered_map>
17#include <vector>
18
19namespace carla {
20namespace client {
21
22 /// @todo 看起来像列表,但实际上是地图。我们应该评估用例并重新考虑此实现。
24 : public EnableSharedFromThis<BlueprintLibrary>,
25 private MovableNonCopyable {
26 using map_type = std::unordered_map<std::string, ActorBlueprint>;
27 public:
28
29 // 这里我们强制使用一些 typedef 来使这个类看起来像一个列表。
30 using key_type = map_type::key_type;
31 using value_type = map_type::mapped_type;
32 using size_type = map_type::size_type;
33 using const_iterator = decltype(carla::iterator::make_map_values_const_iterator<map_type::const_iterator>(map_type::const_iterator{}));
34 using const_reference = const value_type &;
35 using const_pointer = const value_type *;
36
37 explicit BlueprintLibrary(const std::vector<rpc::ActorDefinition> &blueprints);
38
41
42 /// 过滤 id 或标签与 @a wildcard_pattern 匹配的 ActorBlueprint 列表。
43 SharedPtr<BlueprintLibrary> Filter(const std::string &wildcard_pattern) const;
44 SharedPtr<BlueprintLibrary> FilterByAttribute(const std::string &name, const std::string& value) const;
45
46 const_pointer Find(const std::string &key) const;
47
48 /// @throw 如果不存在这些元素,则抛出 std::out_of_range 异常。
49 const_reference at(const std::string &key) const;
50
51 /// @warning 线性复杂度。
53 using diff_t = std::iterator_traits<const_iterator>::difference_type;
54 return std::next(_blueprints.begin(), static_cast<diff_t>(pos))->second;
55 }
56
57 /// @warning 线性复杂度。
58 /// @throw std::out_of_range if !(pos < size()).
59 const_reference at(size_type pos) const;
60 // 返回一个指向容器中第一个元素的常量迭代器,该迭代器只能读取值。
61 const_iterator begin() const /*noexcept*/ {
63 }
64 // 返回一个指向容器末尾的常量迭代器,该迭代器只能读取值。
65 const_iterator end() const /*noexcept*/ {
67 }
68 // 检查容器是否为空,如果没有任何元素则返回true。
69 bool empty() const /*noexcept*/ {
70 return _blueprints.empty();
71 }
72 // 返回容器中元素的数量。
73 size_type size() const /*noexcept*/ {
74 return _blueprints.size();
75 }
76
77 private:
78
80 : _blueprints(std::move(blueprints)) {}
81
83 };
84
85} // namespace client
86} // namespace carla
这个类用于禁止拷贝构造函数和赋值操作,但允许移动构造函数和赋值操作
SharedPtr< BlueprintLibrary > FilterByAttribute(const std::string &name, const std::string &value) const
std::unordered_map< std::string, ActorBlueprint > map_type
BlueprintLibrary(BlueprintLibrary &&)=default
map_type::mapped_type value_type
decltype(carla::iterator::make_map_values_const_iterator< map_type::const_iterator >(map_type::const_iterator{})) const_iterator
BlueprintLibrary & operator=(BlueprintLibrary &&)=default
BlueprintLibrary(const std::vector< rpc::ActorDefinition > &blueprints)
BlueprintLibrary(map_type blueprints)
const_pointer Find(const std::string &key) const
SharedPtr< BlueprintLibrary > Filter(const std::string &wildcard_pattern) const
过滤 id 或标签与 wildcard_pattern 匹配的 ActorBlueprint 列表。
const_reference at(const std::string &key) const
const_reference operator[](size_type pos) const
static auto make_map_values_const_iterator(It it)
创建一个迭代器,该迭代器提供对map值的const引用的遍历。
Definition Iterator.h:61
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
Definition Memory.h:19
包含CARLA客户端相关类和函数的命名空间。