@@ -105,17 +105,24 @@ class PropertiesNodeConstIteratorImpl
105105class DocumentNodeConstIterator
106106{
107107public:
108- DocumentNodeConstIterator (DocumentNodeConstIteratorImpl *impl) : impl_(impl) {}
109- DocumentNodeConstIterator (DocumentNodeConstIterator &&) = default ;
110- DocumentNodeConstIterator (const DocumentNodeConstIterator &) = default ;
111- DocumentNodeConstIterator &operator =(DocumentNodeConstIterator &&) = default ;
112- DocumentNodeConstIterator &operator =(const DocumentNodeConstIterator &other) = default ;
113-
114- ~DocumentNodeConstIterator () { delete impl_; }
115-
116- bool operator ==(const DocumentNodeConstIterator &rhs) const { return (impl_->Equal (rhs.impl_ )); }
108+ DocumentNodeConstIterator (std::unique_ptr<DocumentNodeConstIteratorImpl> impl)
109+ : impl_(std::move(impl))
110+ {}
111+ DocumentNodeConstIterator (DocumentNodeConstIterator &&) = delete ;
112+ DocumentNodeConstIterator (const DocumentNodeConstIterator &) = delete ;
113+ DocumentNodeConstIterator &operator =(DocumentNodeConstIterator &&) = delete ;
114+ DocumentNodeConstIterator &operator =(const DocumentNodeConstIterator &other) = delete ;
115+ ~DocumentNodeConstIterator () = default ;
116+
117+ bool operator ==(const DocumentNodeConstIterator &rhs) const
118+ {
119+ return (impl_->Equal (rhs.impl_ .get ()));
120+ }
117121
118- bool operator !=(const DocumentNodeConstIterator &rhs) const { return (!impl_->Equal (rhs.impl_ )); }
122+ bool operator !=(const DocumentNodeConstIterator &rhs) const
123+ {
124+ return (!impl_->Equal (rhs.impl_ .get ()));
125+ }
119126
120127 std::unique_ptr<DocumentNode> operator *() const { return impl_->Item (); }
121128
@@ -126,27 +133,29 @@ class DocumentNodeConstIterator
126133 }
127134
128135private:
129- DocumentNodeConstIteratorImpl * impl_;
136+ std::unique_ptr< DocumentNodeConstIteratorImpl> impl_;
130137};
131138
132139class PropertiesNodeConstIterator
133140{
134141public:
135- PropertiesNodeConstIterator (PropertiesNodeConstIteratorImpl *impl) : impl_(impl) {}
136- PropertiesNodeConstIterator (PropertiesNodeConstIterator &&) = default ;
137- PropertiesNodeConstIterator (const PropertiesNodeConstIterator &) = default ;
138- PropertiesNodeConstIterator &operator =(PropertiesNodeConstIterator &&) = default ;
139- PropertiesNodeConstIterator &operator =(const PropertiesNodeConstIterator &other) = default ;
140- ~PropertiesNodeConstIterator () { delete impl_; }
142+ PropertiesNodeConstIterator (std::unique_ptr<PropertiesNodeConstIteratorImpl> impl)
143+ : impl_(std::move(impl))
144+ {}
145+ PropertiesNodeConstIterator (PropertiesNodeConstIterator &&) = delete ;
146+ PropertiesNodeConstIterator (const PropertiesNodeConstIterator &) = delete ;
147+ PropertiesNodeConstIterator &operator =(PropertiesNodeConstIterator &&) = delete ;
148+ PropertiesNodeConstIterator &operator =(const PropertiesNodeConstIterator &other) = delete ;
149+ ~PropertiesNodeConstIterator () = default ;
141150
142151 bool operator ==(const PropertiesNodeConstIterator &rhs) const
143152 {
144- return (impl_->Equal (rhs.impl_ ));
153+ return (impl_->Equal (rhs.impl_ . get () ));
145154 }
146155
147156 bool operator !=(const PropertiesNodeConstIterator &rhs) const
148157 {
149- return (!impl_->Equal (rhs.impl_ ));
158+ return (!impl_->Equal (rhs.impl_ . get () ));
150159 }
151160
152161 std::string Name () const { return impl_->Name (); }
@@ -159,7 +168,7 @@ class PropertiesNodeConstIterator
159168 }
160169
161170private:
162- PropertiesNodeConstIteratorImpl * impl_;
171+ std::unique_ptr< PropertiesNodeConstIteratorImpl> impl_;
163172};
164173
165174} // namespace configuration
0 commit comments