From bb154468226d7b49c6a9daea8c524874ebbbcb3d Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Fri, 14 Dec 2018 11:56:09 +0100 Subject: [PATCH] Make std::map inheritance private. #512 #517 --- src/ifcparse/IfcFile.h | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/ifcparse/IfcFile.h b/src/ifcparse/IfcFile.h index 85db1dea0b..86e174135b 100644 --- a/src/ifcparse/IfcFile.h +++ b/src/ifcparse/IfcFile.h @@ -41,7 +41,7 @@ public: typedef std::map > entities_by_ref_t; 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: type_iterator() : entities_by_type_t::const_iterator() {}; @@ -53,12 +53,16 @@ public: 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; } - const std::string& as_string() const { - return IfcSchema::Type::ToString(**this); + type_iterator& operator++() { + 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 \ No newline at end of file +namespace std { + template <> + struct iterator_traits { + 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