collection_proxy progress
This commit is contained in:
parent
d4865e4d10
commit
6ecda781f5
|
|
@ -20,7 +20,11 @@ namespace matador::object {
|
|||
// relation<OwnerType, ForeignType>
|
||||
|
||||
template < class RelationType >
|
||||
struct relation_iterator_traits;
|
||||
struct relation_iterator_traits {
|
||||
static RelationType& value(RelationType& item) {
|
||||
return item;
|
||||
}
|
||||
};
|
||||
|
||||
template < typename Type, typename OwnerType >
|
||||
struct relation_iterator_traits<relation<OwnerType, Type>> {
|
||||
|
|
@ -39,11 +43,17 @@ public:
|
|||
using iterator_category = std::forward_iterator_tag;
|
||||
|
||||
collection_proxy_iterator() = default;
|
||||
explicit collection_proxy_iterator(typename std::vector<RelationType>::iterator it)
|
||||
collection_proxy_iterator(typename std::vector<RelationType>::iterator it)
|
||||
: it_(it) {}
|
||||
|
||||
reference operator*() { return *it_; }
|
||||
pointer operator->() { return &*it_; }
|
||||
reference operator*() {
|
||||
return relation_iterator_traits<relation_type>::value(*it_);
|
||||
}
|
||||
|
||||
pointer operator->() {
|
||||
return &relation_iterator_traits<relation_type>::value(*it_);
|
||||
}
|
||||
|
||||
collection_proxy_iterator& operator++() {
|
||||
++it_;
|
||||
return *this;
|
||||
|
|
@ -55,9 +65,10 @@ public:
|
|||
return !operator==(other);
|
||||
}
|
||||
|
||||
relation_type& relation() {
|
||||
return *it_;
|
||||
}
|
||||
// relation_type& relation() {
|
||||
|
||||
// return *it_;
|
||||
// }
|
||||
private:
|
||||
typename std::vector<RelationType>::iterator it_;
|
||||
};
|
||||
|
|
@ -67,8 +78,10 @@ class abstract_collection_proxy {
|
|||
public:
|
||||
using value_type = Type;
|
||||
using relation_type = RelationType;
|
||||
using iterator = typename std::vector<value_type>::iterator;
|
||||
using const_iterator = typename std::vector<value_type>::const_iterator;
|
||||
// using iterator = typename std::vector<value_type>::iterator;
|
||||
// using const_iterator = typename std::vector<value_type>::const_iterator;
|
||||
using iterator = collection_proxy_iterator<value_type, relation_type>;
|
||||
using const_iterator = collection_proxy_iterator<value_type, relation_type>;
|
||||
|
||||
virtual ~abstract_collection_proxy() = default;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue