Skip to content

Commit 1f51fa8

Browse files
committed
vec <-> repeated pointer converters in utils
1 parent f353325 commit 1f51fa8

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/viam/sdk/common/utils.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,5 +184,21 @@ bool from_dm_from_extra(const ProtoStruct& extra) {
184184
return false;
185185
}
186186

187+
template <typename Src, typename Dst>
188+
void vecToRepeatedPtr(const std::vector<Src>& vec, google::protobuf::RepeatedPtrField<Dst>& dest) {
189+
dest->Reserve(vec.size());
190+
for (auto& x : vec) {
191+
*dest.Add() = x;
192+
}
193+
}
194+
195+
template <typename Src, typename Dst>
196+
void repeatedPtrToVec(const google::protobuf::RepeatedPtrField<Src>& src, std::vector<Dst>& vec) {
197+
vec.reserve(src.size());
198+
for (auto& x : src) {
199+
vec.push_back(x);
200+
}
201+
}
202+
187203
} // namespace sdk
188204
} // namespace viam

src/viam/sdk/common/utils.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,15 @@ void set_logger_severity_from_args(int argc, char** argv);
9999
/// @param extra The extra ProtoStruct.
100100
bool from_dm_from_extra(const ProtoStruct& extra);
101101

102+
/// @brief Copies elements from a protobuf repeated pointer array into a std::vector. Src type
103+
/// must be implicitly convertible to Dst (probably via operator on Src).
104+
template <typename Src, typename Dst>
105+
void vecToRepeatedPtr(const std::vector<Src>& vec, google::protobuf::RepeatedPtrField<Dst>& dest);
106+
107+
/// @brief Copies elements from a std::vector into a protobuf repeated pointer array. Src type
108+
/// must be implicitly convertible to Dst (probably via constructor on Dst).
109+
template <typename Src, typename Dst>
110+
void repeatedPtrToVec(const google::protobuf::RepeatedPtrField<Src>& src, std::vector<Dst>& vec);
111+
102112
} // namespace sdk
103113
} // namespace viam

0 commit comments

Comments
 (0)