11 #include <unordered_map>
12 #include <unordered_set>
31 class TensorMap :
public std::unordered_map<std::string, core::Tensor> {
35 :
std::unordered_map<
std::string, core::Tensor>(),
36 primary_key_(primary_key) {
37 AssertPrimaryKeyInMapOrEmpty();
38 AssertNoReservedKeys();
48 template <
class InputIt>
49 TensorMap(
const std::string& primary_key, InputIt first, InputIt last)
50 :
std::unordered_map<
std::string, core::Tensor>(first, last),
51 primary_key_(primary_key) {
52 AssertPrimaryKeyInMapOrEmpty();
53 AssertNoReservedKeys();
57 const std::unordered_map<std::string, core::Tensor>& tensor_map)
58 :
TensorMap(primary_key, tensor_map.begin(), tensor_map.end()) {
59 AssertPrimaryKeyInMapOrEmpty();
60 AssertNoReservedKeys();
64 std::initializer_list<value_type> init)
65 :
std::unordered_map<
std::string, core::Tensor>(init),
66 primary_key_(primary_key) {
67 AssertPrimaryKeyInMapOrEmpty();
68 AssertNoReservedKeys();
73 :
std::unordered_map<
std::string, core::Tensor>(other),
74 primary_key_(other.primary_key_) {
75 AssertPrimaryKeyInMapOrEmpty();
76 AssertNoReservedKeys();
81 :
std::unordered_map<
std::string, core::Tensor>(other),
82 primary_key_(other.primary_key_) {
83 AssertPrimaryKeyInMapOrEmpty();
84 AssertNoReservedKeys();
93 if (key == primary_key_) {
99 return this->erase(key);
102 std::pair<iterator, bool>
insert(
const value_type& value) {
106 return std::unordered_map<std::string, core::Tensor>::insert(value);
110 std::pair<iterator, bool>
insert(P&& value) {
114 return std::unordered_map<std::string, core::Tensor>::insert(
115 std::forward<P>(value));
118 iterator
insert(const_iterator hint,
const value_type& value) {
122 return std::unordered_map<std::string, core::Tensor>::insert(hint,
127 iterator
insert(const_iterator hint, P&& value) {
131 return std::unordered_map<std::string, core::Tensor>::insert(
132 hint, std::forward<P>(value));
135 template <
class InputIt>
136 void insert(InputIt first, InputIt last) {
137 for (
auto it = first; it != last; ++it) {
142 std::unordered_map<std::string, core::Tensor>::insert(first, last);
145 void insert(std::initializer_list<value_type> ilist) {
146 for (
auto it = ilist.begin(); it != ilist.end(); ++it) {
151 std::unordered_map<std::string, core::Tensor>::insert(ilist);
163 std::unordered_set<std::string> keys;
164 for (
const auto& item : *
this) {
165 keys.insert(item.first);
198 void AssertPrimaryKeyInMapOrEmpty()
const;
202 void AssertNoReservedKeys()
const;
205 int64_t GetPrimarySize()
const {
return at(primary_key_).GetLength(); }
209 return at(primary_key_).GetDevice();
213 std::string primary_key_;
#define LogWarning(...)
Definition: Logging.h:63
#define LogError(...)
Definition: Logging.h:51
Definition: TensorMap.h:31
TensorMap()
Definition: TensorMap.h:44
TensorMap Contiguous() const
Definition: TensorMap.cpp:75
TensorMap(TensorMap &&other)
Move constructor performs a "shallow" copy of the Tensors.
Definition: TensorMap.h:80
void AssertSizeSynchronized() const
Assert IsSizeSynchronized().
Definition: TensorMap.cpp:49
TensorMap & operator=(const TensorMap &)=default
std::size_t Erase(const std::string key)
Erase elements for the TensorMap by key value, if the key exists. If the key does not exists,...
Definition: TensorMap.h:92
TensorMap(const std::string &primary_key)
Create empty TensorMap and set primary key.
Definition: TensorMap.h:34
void insert(InputIt first, InputIt last)
Definition: TensorMap.h:136
std::string ToString() const
Print the TensorMap to string.
Definition: TensorMap.cpp:136
TensorMap(const std::string &primary_key, std::initializer_list< value_type > init)
Definition: TensorMap.h:63
void insert(std::initializer_list< value_type > ilist)
Definition: TensorMap.h:145
TensorMap(const std::string &primary_key, InputIt first, InputIt last)
Definition: TensorMap.h:49
TensorMap(const std::string &primary_key, const std::unordered_map< std::string, core::Tensor > &tensor_map)
Definition: TensorMap.h:56
static std::unordered_set< std::string > GetReservedKeys()
Get reserved keys for the map. A map cannot contain any of these keys.
Definition: TensorMap.cpp:84
std::pair< iterator, bool > insert(const value_type &value)
Definition: TensorMap.h:102
bool Contains(const std::string &key) const
Definition: TensorMap.h:187
bool IsContiguous() const
Definition: TensorMap.cpp:66
iterator insert(const_iterator hint, const value_type &value)
Definition: TensorMap.h:118
std::pair< iterator, bool > insert(P &&value)
Definition: TensorMap.h:110
bool IsSizeSynchronized() const
Returns true if all tensors in the map have the same size.
Definition: TensorMap.cpp:22
std::string GetPrimaryKey() const
Returns the primary key of the TensorMap.
Definition: TensorMap.h:159
iterator insert(const_iterator hint, P &&value)
Definition: TensorMap.h:127
TensorMap(const TensorMap &other)
Copy constructor performs a "shallow" copy of the Tensors.
Definition: TensorMap.h:72
std::unordered_set< std::string > GetKeySet() const
Returns a set with all keys.
Definition: TensorMap.h:162
TensorMap & operator=(TensorMap &&)=default
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle image_handle timestamp_usec white_balance image_handle k4a_device_configuration_t config device_handle char size_t serial_number_size bool int32_t int32_t int32_t int32_t k4a_color_control_mode_t default_mode value const const k4a_calibration_t calibration char size_t
Definition: K4aPlugin.cpp:719
Definition: PinholeCameraIntrinsic.cpp:16