Merge remote-tracking branch 'origin/feature/matador-ng' into feature/matador-ng

This commit is contained in:
2026-07-31 17:52:25 +02:00
3 changed files with 40 additions and 10 deletions
+22 -9
View File
@@ -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;