File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change 1+ #pragma once
2+
3+ #include < vector>
4+
5+ #include < boost/range/iterator_range.hpp>
6+
7+ #include < viam/sdk/common/proto_convert.hpp>
8+
9+ namespace google {
10+ namespace protobuf {
11+
12+ template <typename T>
13+ class RepeatedPtrField ;
14+
15+ }
16+ } // namespace google
17+
18+ namespace viam {
19+ namespace sdk {
20+ namespace proto_convert_details {
21+
22+ template <typename SdkType>
23+ struct to_proto <std::vector<SdkType>> {
24+ void operator ()(
25+ const std::vector<SdkType>& vec,
26+ ::google::protobuf::RepeatedPtrField<EquivalentApiType<SdkType>>* ptr_field) const {
27+ ptr_field->Reserve (vec.size ());
28+ for (const auto & elem : vec) {
29+ to_proto<SdkType>{}(elem, ptr_field->Add ());
30+ }
31+ }
32+ };
33+
34+ template <typename ApiType>
35+ struct from_proto <::google::protobuf::RepeatedPtrField<ApiType>> {
36+ auto operator ()(const ::google::protobuf::RepeatedPtrField<ApiType>* ptr_field) const {
37+ std::vector<EquivalentSdkType<ApiType>> result;
38+ result.reserve (ptr_field->size ());
39+
40+ for (const auto * elem :
41+ boost::make_iterator_range (ptr_field->pointer_begin (), ptr_field->pointer_end ())) {
42+ result.push_back (from_proto<ApiType>{}(elem));
43+ }
44+
45+ return result;
46+ }
47+ };
48+
49+ } // namespace proto_convert_details
50+ } // namespace sdk
51+ } // namespace viam
You can’t perform that action at this time.
0 commit comments