29 #include <boost/foreach.hpp>
31 #include <gtsam/base/DerivedValue.h>
37 template<
class ValueType>
46 template<
class ValueType>
56 template<
class ValueType>
65 boost::transform_iterator<
67 boost::filter_iterator<
72 typedef iterator const_iterator;
75 boost::transform_iterator<
77 boost::filter_iterator<
82 iterator begin() {
return begin_; }
84 const_iterator begin()
const {
return begin_; }
85 const_iterator end()
const {
return end_; }
86 const_const_iterator beginConst()
const {
return constBegin_; }
87 const_const_iterator endConst()
const {
return constEnd_; }
92 for (const_const_iterator it = beginConst(); it != endConst(); ++it)
99 begin_(boost::make_transform_iterator(
100 boost::make_filter_iterator(
101 filter, values.begin(), values.end()),
103 end_(boost::make_transform_iterator(
104 boost::make_filter_iterator(
105 filter, values.end(), values.end()),
107 constBegin_(boost::make_transform_iterator(
108 boost::make_filter_iterator(
111 constEnd_(boost::make_transform_iterator(
112 boost::make_filter_iterator(
119 const_const_iterator constBegin_;
120 const_const_iterator constEnd_;
124 template<
class ValueType>
131 typedef typename Filtered<ValueType>::const_const_iterator iterator;
132 typedef typename Filtered<ValueType>::const_const_iterator const_iterator;
136 begin_(rhs.beginConst()),
137 end_(rhs.endConst()) {}
140 iterator end() {
return end_; }
141 const_iterator begin()
const {
return begin_; }
142 const_iterator end()
const {
return end_; }
147 for (const_iterator it = begin(); it != end(); ++it)
155 result.push_back(it->key);
161 const_iterator begin_;
166 const Filtered<ValueType> filtered(
filter, const_cast<Values&>(values));
167 begin_ = filtered.beginConst();
168 end_ = filtered.endConst();
174 template<
class ValueType>
183 template<
class ValueType>
194 return filter<Value>(filterFcn);
198 template<
class ValueType>
207 return filter<Value>(filterFcn);
211 template<
class ValueType>
218 template<
typename ValueType>
221 KeyValueMap::const_iterator item = values_.find(j);
224 if(item == values_.end())
228 if(
typeid(*item->second) !=
typeid(ValueType))
232 return static_cast<const ValueType&
>(*item->second);
236 template<
typename ValueType>
239 KeyValueMap::const_iterator item = values_.find(j);
241 if(item != values_.end()) {
243 if(
typeid(*item->second) !=
typeid(ValueType))
247 return static_cast<const ValueType&
>(*item->second);
A filtered view of a const Values, returned from Values::filter.
Definition: Values-inl.h:125
Definition: Values-inl.h:47
void insert(Key j, const Value &val)
Add a variable with the given j, throws KeyAlreadyExists<J> if j is already present.
Definition: Values.cpp:127
A non-templated config holding any types of Manifold-group elements.
A non-templated config holding any types of Manifold-group elements.
Definition: Values.h:75
const ValueType & value
The value.
Definition: Values-inl.h:49
const ValueType & at(Key j) const
Retrieve a variable by key j.
Definition: Values-inl.h:219
size_t Key
Integer nonlinear key type.
Definition: types.h:59
ValueType & value
The value.
Definition: Values-inl.h:40
_ValuesKeyValuePair< ValueType > KeyValuePair
A key-value pair, with the value a specific derived Value type.
Definition: Values-inl.h:60
size_t size() const
Returns the number of values in this view.
Definition: Values-inl.h:145
A filtered view of a Values, returned from Values::filter.
Definition: Values-inl.h:57
const Key key
The key.
Definition: Values-inl.h:39
A key-value pair, which you get by dereferencing iterators.
Definition: Values.h:114
const Key key
The key.
Definition: Values-inl.h:48
_ValuesConstKeyValuePair< ValueType > KeyValuePair
A const key-value pair, with the value a specific derived Value type.
Definition: Values-inl.h:128
bool exists(Key j) const
Check if a value exists with key j.
Definition: Values.cpp:75
Values()
Default constructor creates an empty Values class.
Definition: Values.h:149
Definition: FastList.h:38
size_t size() const
Returns the number of values in this view.
Definition: Values-inl.h:90
A key-value pair, which you get by dereferencing iterators.
Definition: Values.h:106
Filtered< Value > filter(const boost::function< bool(Key)> &filterFcn)
Return a filtered view of this Values class, without copying any data.
Definition: Values-inl.h:193
boost::transform_iterator< boost::function1< ConstKeyValuePair, const ConstKeyValuePtrPair & >, KeyValueMap::const_iterator > const_iterator
Const forward iterator, with value type ConstKeyValuePair.
Definition: Values.h:128
Definition: Values-inl.h:38
boost::transform_iterator< boost::function1< KeyValuePair, const KeyValuePtrPair & >, KeyValueMap::iterator > iterator
Mutable forward iterator, with value type KeyValuePair.
Definition: Values.h:124
ConstFiltered(const Filtered< ValueType > &rhs)
Conversion from Filtered to ConstFiltered.
Definition: Values-inl.h:135