IOLink  IOL_v1.1.0_release
MetadataNodeIterator.h
1 #pragma once
2 
3 namespace iolink
4 {
5 class MetadataIteratorObject;
6 class MetadataNode;
7 
11 class IOLINK_API MetadataNodeIterator
12 {
13 public:
15  MetadataNodeIterator(MetadataIteratorObject* it);
17 
19 
20  MetadataNodeIterator& operator=(const MetadataNodeIterator& it);
21 
22  bool next();
23  std::shared_ptr<MetadataNode> value();
24 
25  MetadataNodeIterator& operator++();
26  MetadataNodeIterator operator++(int);
27  bool operator==(const MetadataNodeIterator& rhs) const;
28  bool operator!=(const MetadataNodeIterator& rhs) const;
29  std::shared_ptr<MetadataNode> operator*();
30  std::shared_ptr<MetadataNode> operator->();
31 
32 private:
33  MetadataIteratorObject* m_object;
34 };
35 
36 class ConstMetadataIteratorObject;
37 
41 class IOLINK_API ConstMetadataNodeIterator
42 {
43 public:
45  ConstMetadataNodeIterator(ConstMetadataIteratorObject* it);
47 
49 
51 
52  bool next();
53  std::shared_ptr<const MetadataNode> value();
54 
55  ConstMetadataNodeIterator& operator++();
56  ConstMetadataNodeIterator operator++(int);
57  bool operator==(const ConstMetadataNodeIterator& rhs) const;
58  bool operator!=(const ConstMetadataNodeIterator& rhs) const;
59  std::shared_ptr<const MetadataNode> operator*();
60  std::shared_ptr<const MetadataNode> operator->();
61 
62 private:
63  ConstMetadataIteratorObject* m_object;
64 };
65 
66 } // namespace iolink