Make std::map inheritance private. #512 #517

This commit is contained in:
Thomas Krijnen
2018-12-14 11:56:09 +01:00
parent a0f37cf9ea
commit bb15446822
+20 -5
View File
@@ -41,7 +41,7 @@ public:
typedef std::map<unsigned int, std::vector<unsigned int> > entities_by_ref_t; typedef std::map<unsigned int, std::vector<unsigned int> > entities_by_ref_t;
typedef entity_by_id_t::const_iterator const_iterator; typedef entity_by_id_t::const_iterator const_iterator;
class type_iterator : public entities_by_type_t::const_iterator { class type_iterator : private entities_by_type_t::const_iterator {
public: public:
type_iterator() : entities_by_type_t::const_iterator() {}; type_iterator() : entities_by_type_t::const_iterator() {};
@@ -53,12 +53,16 @@ public:
return &entities_by_type_t::const_iterator::operator->()->first; return &entities_by_type_t::const_iterator::operator->()->first;
} }
const entities_by_type_t::key_type& operator*() const { entities_by_type_t::key_type const & operator*() const {
return entities_by_type_t::const_iterator::operator*().first; return entities_by_type_t::const_iterator::operator*().first;
} }
const std::string& as_string() const { type_iterator& operator++() {
return IfcSchema::Type::ToString(**this); entities_by_type_t::const_iterator::operator++(); return *this;
}
bool operator!=(const type_iterator& other) const {
return entities_by_type_t::const_iterator::operator!=(other);
} }
}; };
@@ -175,4 +179,15 @@ public:
} }
#endif namespace std {
template <>
struct iterator_traits<IfcParse::IfcFile::type_iterator> {
typedef ptrdiff_t difference_type;
typedef const IfcSchema::Type::Enum value_type;
typedef const IfcSchema::Type::Enum& reference;
typedef const IfcSchema::Type::Enum* pointer;
typedef std::forward_iterator_tag iterator_category;
};
}
#endif