annotate foosdk/sdk/pfc/bit_array_impl.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #include "array.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 namespace pfc {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 template<typename T>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 class bit_array_table_t : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 const T * data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 t_size count;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 bool after;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 inline bit_array_table_t(const T * p_data,t_size p_count,bool p_after = false)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 : data(p_data), count(p_count), after(p_after)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 bool get(t_size n) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 if (n<count) return !!data[n];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 else return after;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 template<class T>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 class bit_array_var_table_t : public bit_array_var
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 T * data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 t_size count;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 bool after;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 inline bit_array_var_table_t(T * p_data,t_size p_count,bool p_after = false)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 : data(p_data), count(p_count), after(p_after)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 bool get(t_size n) const {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 if (n<count) return !!data[n];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 else return after;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 void set(t_size n,bool val) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 if (n<count) data[n] = !!val;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 typedef bit_array_table_t<bool> bit_array_table;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 typedef bit_array_var_table_t<bool> bit_array_var_table;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 class bit_array_range : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 t_size begin,end;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 bool state;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 bit_array_range(t_size first,t_size count,bool p_state = true) : begin(first), end(first+count), state(p_state) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 bool get(t_size n) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 bool rv = n>=begin && n<end;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 if (!state) rv = !rv;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 return rv;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 //! Combines two arrays using the AND logical operator. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 //! Valid index range is an intersection of valid index ranges of the parameter arrays.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 class bit_array_and : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 const bit_array & a1, & a2;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 bit_array_and(const bit_array & p_a1, const bit_array & p_a2) : a1(p_a1), a2(p_a2) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 bool get(t_size n) const {return a1.get(n) && a2.get(n);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 //! Combines two arrays using the OR logical operator. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 //! Valid index range is an intersection of valid index ranges of the parameter arrays.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 class bit_array_or : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 const bit_array & a1, & a2;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 bit_array_or(const bit_array & p_a1, const bit_array & p_a2) : a1(p_a1), a2(p_a2) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 bool get(t_size n) const {return a1.get(n) || a2.get(n);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 //! Combines two arrays using the XOR logical operator. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 //! Valid index range is an intersection of valid index ranges of the parameter arrays.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 class bit_array_xor : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 const bit_array & a1, & a2;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 bit_array_xor(const bit_array & p_a1, const bit_array & p_a2) : a1(p_a1), a2(p_a2) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 bool get(t_size n) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 bool v1 = a1.get(n), v2 = a2.get(n);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 return (v1 && !v2) || (!v1 && v2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 //! Negation of another array. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 //! Valid index range is the same as valid index range of the parameter array.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 class bit_array_not : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 const bit_array & a1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 bit_array_not(const bit_array & p_a1) : a1(p_a1) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 bool get(t_size n) const {return !a1.get(n);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 t_size find(bool val,t_size start,t_ssize count) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 {return a1.find(!val,start,count);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 class bit_array_true : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 bool get(t_size) const {return true;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 t_size find(bool val,t_size start,t_ssize count) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 {return val ? start : start+count;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 class bit_array_false : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 bool get(t_size) const {return false;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 t_size find(bool val,t_size start,t_ssize count) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 {return val ? start+count : start;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 class bit_array_val : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 bool val;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 bit_array_val(bool v) : val(v) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 bool get(t_size) const {return val;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 t_size find(bool p_val,t_size start,t_ssize count) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 {return val==p_val ? start : start+count;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 class bit_array_one : public bit_array
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 t_size val;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 bit_array_one(t_size p_val) : val(p_val) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 virtual bool get(t_size n) const {return n==val;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 virtual t_size find(bool p_val, t_size start, t_ssize count) const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 //! Generic variable bit_array implementation. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 //! Needs to be initialized with requested array size before use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 class bit_array_bittable : public bit_array_var
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 pfc::array_t<t_uint8> m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 t_size m_count;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 //helpers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 template<typename t_array>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 inline static bool g_get(const t_array & p_array,t_size idx)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 return !! (p_array[idx>>3] & (1<<(idx&7)));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 template<typename t_array>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 inline static void g_set(t_array & p_array,t_size idx,bool val)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 unsigned char & dst = p_array[idx>>3];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 unsigned char mask = 1<<(idx&7);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 dst = val ? dst|mask : dst&~mask;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 inline static t_size g_estimate_size(t_size p_count) {return (p_count+7)>>3;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 void resize(t_size p_count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 bit_array_bittable(t_size p_count) : m_count(0) {resize(p_count);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 bit_array_bittable(const pfc::bit_array & in, size_t inSize);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 bit_array_bittable() : m_count() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 void set(t_size n, bool val);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 bool get(t_size n) const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 size_t size() const {return m_count;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 //! Bit array that takes a permutation and signals indexes reordered by the permutation. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 //! Valid index range same as length of the permutation.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 class bit_array_order_changed : public bit_array {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 bit_array_order_changed(const t_size * p_order) : m_order(p_order) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 bool get(t_size n) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 return m_order[n] != n;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 const t_size * m_order;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 // #define for_each_bit_array(var,mask,val,start,count) for(var = mask.find(val,start,count);var<start+count;var=mask.find(val,var+1,count-(var+1-start)))