Bitstream Interpretation Library (BIL)  0.1
V5Configuration.hpp
Go to the documentation of this file.
1 
6 #pragma once
7 #ifndef BIL_V5CONFIGURATION_HPP
8 #define BIL_V5CONFIGURATION_HPP
9 
10 #include <map>
11 #include <utility>
12 #include <vector>
16 
17 
18 namespace bil {
19 
29  public:
30 
31  /**********************************************************************/
32  /* CONSTRUCTION / DESTRUCTION */
33  /**********************************************************************/
34 
39 
44  explicit V5Configuration(const V5AddressLayout& layout);
45 
50  V5Configuration(const V5Configuration& src);
51 
52 
53  /**********************************************************************/
54  /* ASSIGNMENT */
55  /**********************************************************************/
56 
63 
64 
65  /**********************************************************************/
66  /* ADDRESS LAYOUT CONFIGURATION */
67  /**********************************************************************/
68 
77  void addressLayout(const V5AddressLayout& layout);
78 
83  const V5AddressLayout& addressLayout() const;
84 
85 
86  /**********************************************************************/
87  /* MODIFICATORS */
88  /**********************************************************************/
89 
101  bool insert(const V5FrameAddress& address, const V5CfgFrame& frame);
102 
109  bool erase(const V5FrameAddress& address);
110 
114  void clear();
115 
116 
117  /**********************************************************************/
118  /* CONTENT ITERATION */
119  /**********************************************************************/
120 
125  size_t size() const;
126 
128  typedef std::pair<const V5FrameAddress, V5CfgFrame> pair_t;
129 
131  typedef std::vector<pair_t*> pairptrs_t;
132 
134  typedef std::vector<const pair_t*> pairconstptrs_t;
135 
143 
150  pairconstptrs_t contents() const;
151 
152 
153  /**********************************************************************/
154  /* FRAME LOOKUP */
155  /**********************************************************************/
156 
163  V5CfgFrame* lookup(const V5FrameAddress& address);
164 
171  const V5CfgFrame* lookup(const V5FrameAddress& address) const;
172 
173 
174  private:
175 
176  V5AddressLayout m_addressLayout;
177 
178  typedef std::map<V5FrameAddress, V5CfgFrame> container_t;
179  container_t m_configuration;
180 
181  };
182 
183 }
184 
185 #endif