Bitstream Interpretation Library (BIL)  0.1
DeviceRegistry.hpp
Go to the documentation of this file.
1 
6 #pragma once
7 #ifndef BIL_DEVICEREGISTRY_HPP
8 #define BIL_DEVICEREGISTRY_HPP
9 
10 #include <cstring>
11 #include <map>
12 #include <string>
13 #include <utility>
14 #include <deviceinfo/DeviceID.hpp>
16 
17 
18 namespace bil {
19 
27  public:
28 
29  /**********************************************************************/
30  /* CONSTRUCTION / DESTRUCTION */
31  /**********************************************************************/
32 
37 
38 
39  /**********************************************************************/
40  /* MODIFIERS */
41  /**********************************************************************/
42 
49  void insert(DeviceID::ID_t deviceID, const std::string& deviceName);
50 
56  bool erase(DeviceID::ID_t deviceID);
57 
63  bool erase(const std::string& deviceName);
64 
68  void clear();
69 
70 
71  /**********************************************************************/
72  /* CONTENT ITERATION */
73  /**********************************************************************/
74 
79  size_t size() const;
80 
82  typedef std::pair<const DeviceID::ID_t, std::string> pair_t;
83 
90  const pair_t& at(size_t index) const;
91 
92 
93  /**********************************************************************/
94  /* NAME & ID LOOKUP */
95  /**********************************************************************/
96 
103  std::string lookup(DeviceID::ID_t deviceID) const;
104 
111  DeviceID::ID_t lookup(const std::string& deviceName) const;
112 
113 
114  private:
115 
116  friend void writeBinary(const DeviceRegistry& data, std::ostream& outputStream);
117  friend void readBinary(DeviceRegistry& data, std::istream& inputStream);
118 
119 
120  typedef std::map<DeviceID::ID_t, std::string> IDMap_t;
121  IDMap_t m_idMap;
122 
123  typedef std::map<std::string, DeviceID::ID_t> NameMap_t;
124  NameMap_t m_nameMap;
125 
126  };
127 
128 }
129 
130 #endif