Bitstream Interpretation Library (BIL)  0.1
CorrelationUnit.cpp
Go to the documentation of this file.
1 
8 
9 using namespace bil;
10 
11 
12 void CorrelationUnit::pipBitSize(size_t size)
13 {
14  m_pipBits.resize(size);
15 }
16 
17 
19 {
20  return m_pipBits.size();
21 }
22 
23 
24 void CorrelationUnit::setPIPBit(size_t index)
25 {
26  m_pipBits.set(index);
27 }
28 
29 
30 void CorrelationUnit::resetPIPBit(size_t index)
31 {
32  m_pipBits.reset(index);
33 }
34 
35 
37 {
38  m_pipBits.set();
39 }
40 
41 
43 {
44  m_pipBits.reset();
45 }
46 
47 
48 bool CorrelationUnit::testPIPBit(size_t index) const
49 {
50  return m_pipBits.test(index);
51 }
52 
53 
55 {
56  // search for first set bit
57  size_t index = m_pipBits.find_first();
58  if (INVALID_BIT_INDEX == index) return false;
59 
60  // search for second set bit
61  index = m_pipBits.find_next(index);
62  return (INVALID_BIT_INDEX == index);
63 }
64 
65 
66 void CorrelationUnit::cfgBitSize(size_t size)
67 {
68  m_cfgBits.resize(size);
69 }
70 
71 
73 {
74  return m_cfgBits.size();
75 }
76 
77 
78 void CorrelationUnit::setCfgBit(size_t index)
79 {
80  m_cfgBits.set(index);
81 }
82 
83 
84 void CorrelationUnit::resetCfgBit(size_t index)
85 {
86  m_cfgBits.reset(index);
87 }
88 
89 
91 {
92  m_cfgBits.set();
93 }
94 
95 
97 {
98  m_cfgBits.reset();
99 }
100 
101 
102 bool CorrelationUnit::testCfgBit(size_t index) const
103 {
104  return m_cfgBits.test(index);
105 }
106 
107 
109 {
110  return m_cfgBits.find_first();
111 }
112 
113 
114 size_t CorrelationUnit::nextCfgBit(size_t index) const
115 {
116  return m_cfgBits.find_next(index);
117 }
118 
119 
120 void CorrelationUnit::appendCfgBits(boost::uint32_t* data, size_t dataWordCount)
121 {
122  m_cfgBits.append(data, data + dataWordCount);
123 }
124 
125 
127 {
128  // test if sizes match
129  if (m_pipBits.size() != with.m_pipBits.size()) throw Exception();
130  if (m_cfgBits.size() != with.m_cfgBits.size()) throw Exception();
131  // do intersection
132  m_pipBits &= with.m_pipBits;
133  m_cfgBits &= with.m_cfgBits;
134 }
135 
136 
138 {
139  // test if sizes match
140  if (m_pipBits.size() != with.m_pipBits.size()) throw Exception();
141  if (m_cfgBits.size() != with.m_cfgBits.size()) throw Exception();
142  // do subtraction
143  m_pipBits -= with.m_pipBits;
144  m_cfgBits -= with.m_cfgBits;
145 }