23
23
24
24
#include "opal_config.h"
25
25
26
- #include <stdio.h>
27
26
#include <limits.h>
27
+ #include <stdio.h>
28
28
29
- #include "opal/constants.h"
30
29
#include "opal/class/opal_bitmap.h"
30
+ #include "opal/constants.h"
31
31
32
32
/* The number of bits in the underlying type of the bitmap field
33
33
* in the opal_bitmap_t struct
34
34
*/
35
- #define SIZE_OF_BASE_TYPE 64
35
+ #define SIZE_OF_BASE_TYPE 64
36
36
37
37
static void opal_bitmap_construct (opal_bitmap_t * bm );
38
38
static void opal_bitmap_destruct (opal_bitmap_t * bm );
39
39
40
- OBJ_CLASS_INSTANCE (opal_bitmap_t , opal_object_t ,
41
- opal_bitmap_construct , opal_bitmap_destruct );
40
+ OBJ_CLASS_INSTANCE (opal_bitmap_t , opal_object_t , opal_bitmap_construct , opal_bitmap_destruct );
42
41
43
-
44
- static void
45
- opal_bitmap_construct (opal_bitmap_t * bm )
42
+ static void opal_bitmap_construct (opal_bitmap_t * bm )
46
43
{
47
44
bm -> bitmap = NULL ;
48
45
bm -> array_size = 0 ;
49
46
bm -> max_size = INT_MAX ;
50
47
}
51
48
52
-
53
- static void
54
- opal_bitmap_destruct (opal_bitmap_t * bm )
49
+ static void opal_bitmap_destruct (opal_bitmap_t * bm )
55
50
{
56
51
if (NULL != bm -> bitmap ) {
57
52
free (bm -> bitmap );
58
53
bm -> bitmap = NULL ;
59
54
}
60
55
}
61
56
62
-
63
- int opal_bitmap_set_max_size (opal_bitmap_t * bm , int max_size )
57
+ int opal_bitmap_set_max_size (opal_bitmap_t * bm , int max_size )
64
58
{
65
59
if (NULL == bm ) {
66
60
return OPAL_ERR_BAD_PARAM ;
@@ -71,14 +65,12 @@ int opal_bitmap_set_max_size (opal_bitmap_t *bm, int max_size)
71
65
* we set it (in numbers of bits!), otherwise it is
72
66
* set to INT_MAX in the constructor.
73
67
*/
74
- bm -> max_size = (int )(((size_t )max_size + SIZE_OF_BASE_TYPE - 1 ) / SIZE_OF_BASE_TYPE );
68
+ bm -> max_size = (int ) (((size_t ) max_size + SIZE_OF_BASE_TYPE - 1 ) / SIZE_OF_BASE_TYPE );
75
69
76
70
return OPAL_SUCCESS ;
77
71
}
78
72
79
-
80
- int
81
- opal_bitmap_init (opal_bitmap_t * bm , int size )
73
+ int opal_bitmap_init (opal_bitmap_t * bm , int size )
82
74
{
83
75
/*
84
76
* Only if the caller set the maximum size before initializing,
@@ -89,13 +81,13 @@ opal_bitmap_init(opal_bitmap_t *bm, int size)
89
81
return OPAL_ERR_BAD_PARAM ;
90
82
}
91
83
92
- bm -> array_size = (int )(((size_t )size + SIZE_OF_BASE_TYPE - 1 ) / SIZE_OF_BASE_TYPE );
93
- if ( NULL != bm -> bitmap ) {
84
+ bm -> array_size = (int ) (((size_t ) size + SIZE_OF_BASE_TYPE - 1 ) / SIZE_OF_BASE_TYPE );
85
+ if ( NULL != bm -> bitmap ) {
94
86
free (bm -> bitmap );
95
- if (bm -> max_size < bm -> array_size )
87
+ if (bm -> max_size < bm -> array_size )
96
88
bm -> max_size = bm -> array_size ;
97
89
}
98
- bm -> bitmap = (uint64_t * ) malloc (bm -> array_size * sizeof (uint64_t ));
90
+ bm -> bitmap = (uint64_t * ) malloc (bm -> array_size * sizeof (uint64_t ));
99
91
if (NULL == bm -> bitmap ) {
100
92
return OPAL_ERR_OUT_OF_RESOURCE ;
101
93
}
@@ -104,9 +96,7 @@ opal_bitmap_init(opal_bitmap_t *bm, int size)
104
96
return OPAL_SUCCESS ;
105
97
}
106
98
107
-
108
- int
109
- opal_bitmap_set_bit (opal_bitmap_t * bm , int bit )
99
+ int opal_bitmap_set_bit (opal_bitmap_t * bm , int bit )
110
100
{
111
101
int index , offset , new_size ;
112
102
@@ -124,12 +114,12 @@ opal_bitmap_set_bit(opal_bitmap_t *bm, int bit)
124
114
valid and we simply expand the bitmap */
125
115
126
116
new_size = index + 1 ;
127
- if ( new_size > bm -> max_size )
117
+ if ( new_size > bm -> max_size )
128
118
new_size = bm -> max_size ;
129
119
130
120
/* New size is just a multiple of the original size to fit in
131
121
the index. */
132
- bm -> bitmap = (uint64_t * ) realloc (bm -> bitmap , new_size * sizeof (uint64_t ));
122
+ bm -> bitmap = (uint64_t * ) realloc (bm -> bitmap , new_size * sizeof (uint64_t ));
133
123
if (NULL == bm -> bitmap ) {
134
124
return OPAL_ERR_OUT_OF_RESOURCE ;
135
125
}
@@ -147,9 +137,7 @@ opal_bitmap_set_bit(opal_bitmap_t *bm, int bit)
147
137
return OPAL_SUCCESS ;
148
138
}
149
139
150
-
151
- int
152
- opal_bitmap_clear_bit (opal_bitmap_t * bm , int bit )
140
+ int opal_bitmap_clear_bit (opal_bitmap_t * bm , int bit )
153
141
{
154
142
int index , offset ;
155
143
@@ -164,9 +152,7 @@ opal_bitmap_clear_bit(opal_bitmap_t *bm, int bit)
164
152
return OPAL_SUCCESS ;
165
153
}
166
154
167
-
168
- bool
169
- opal_bitmap_is_set_bit (opal_bitmap_t * bm , int bit )
155
+ bool opal_bitmap_is_set_bit (opal_bitmap_t * bm , int bit )
170
156
{
171
157
int index , offset ;
172
158
@@ -184,9 +170,7 @@ opal_bitmap_is_set_bit(opal_bitmap_t *bm, int bit)
184
170
return false;
185
171
}
186
172
187
-
188
- int
189
- opal_bitmap_clear_all_bits (opal_bitmap_t * bm )
173
+ int opal_bitmap_clear_all_bits (opal_bitmap_t * bm )
190
174
{
191
175
if (NULL == bm ) {
192
176
return OPAL_ERR_BAD_PARAM ;
@@ -196,9 +180,7 @@ opal_bitmap_clear_all_bits(opal_bitmap_t *bm)
196
180
return OPAL_SUCCESS ;
197
181
}
198
182
199
-
200
- int
201
- opal_bitmap_set_all_bits (opal_bitmap_t * bm )
183
+ int opal_bitmap_set_all_bits (opal_bitmap_t * bm )
202
184
{
203
185
if (NULL == bm ) {
204
186
return OPAL_ERR_BAD_PARAM ;
@@ -209,9 +191,7 @@ opal_bitmap_set_all_bits(opal_bitmap_t *bm)
209
191
return OPAL_SUCCESS ;
210
192
}
211
193
212
-
213
- int
214
- opal_bitmap_find_and_set_first_unset_bit (opal_bitmap_t * bm , int * position )
194
+ int opal_bitmap_find_and_set_first_unset_bit (opal_bitmap_t * bm , int * position )
215
195
{
216
196
int i = 0 ;
217
197
uint64_t temp , all_ones = 0xffffffffffffffffUL ;
@@ -222,7 +202,7 @@ opal_bitmap_find_and_set_first_unset_bit(opal_bitmap_t *bm, int *position)
222
202
223
203
/* Neglect all which don't have an unset bit */
224
204
* position = 0 ;
225
- while ((i < bm -> array_size ) && (bm -> bitmap [i ] == all_ones )) {
205
+ while ((i < bm -> array_size ) && (bm -> bitmap [i ] == all_ones )) {
226
206
++ i ;
227
207
}
228
208
@@ -236,8 +216,8 @@ opal_bitmap_find_and_set_first_unset_bit(opal_bitmap_t *bm, int *position)
236
216
237
217
temp = bm -> bitmap [i ];
238
218
bm -> bitmap [i ] |= (bm -> bitmap [i ] + 1 ); /* Set the first zero bit */
239
- temp ^= bm -> bitmap [i ]; /* Compute the change: the first unset bit in the original number */
240
- while ( !(temp & 0x1 ) ) {
219
+ temp ^= bm -> bitmap [i ]; /* Compute the change: the first unset bit in the original number */
220
+ while ( !(temp & 0x1 )) {
241
221
++ (* position );
242
222
temp >>= 1 ;
243
223
}
@@ -253,17 +233,17 @@ int opal_bitmap_bitwise_and_inplace(opal_bitmap_t *dest, opal_bitmap_t *right)
253
233
/*
254
234
* Sanity check
255
235
*/
256
- if ( NULL == dest || NULL == right ) {
236
+ if ( NULL == dest || NULL == right ) {
257
237
return OPAL_ERR_BAD_PARAM ;
258
238
}
259
- if ( dest -> array_size != right -> array_size ) {
239
+ if ( dest -> array_size != right -> array_size ) {
260
240
return OPAL_ERR_BAD_PARAM ;
261
241
}
262
242
263
243
/*
264
244
* Bitwise AND
265
245
*/
266
- for (i = 0 ; i < dest -> array_size ; ++ i ) {
246
+ for (i = 0 ; i < dest -> array_size ; ++ i ) {
267
247
dest -> bitmap [i ] &= right -> bitmap [i ];
268
248
}
269
249
@@ -277,17 +257,17 @@ int opal_bitmap_bitwise_or_inplace(opal_bitmap_t *dest, opal_bitmap_t *right)
277
257
/*
278
258
* Sanity check
279
259
*/
280
- if ( NULL == dest || NULL == right ) {
260
+ if ( NULL == dest || NULL == right ) {
281
261
return OPAL_ERR_BAD_PARAM ;
282
262
}
283
- if ( dest -> array_size != right -> array_size ) {
263
+ if ( dest -> array_size != right -> array_size ) {
284
264
return OPAL_ERR_BAD_PARAM ;
285
265
}
286
266
287
267
/*
288
268
* Bitwise OR
289
269
*/
290
- for (i = 0 ; i < dest -> array_size ; ++ i ) {
270
+ for (i = 0 ; i < dest -> array_size ; ++ i ) {
291
271
dest -> bitmap [i ] |= right -> bitmap [i ];
292
272
}
293
273
@@ -301,17 +281,17 @@ int opal_bitmap_bitwise_xor_inplace(opal_bitmap_t *dest, opal_bitmap_t *right)
301
281
/*
302
282
* Sanity check
303
283
*/
304
- if ( NULL == dest || NULL == right ) {
284
+ if ( NULL == dest || NULL == right ) {
305
285
return OPAL_ERR_BAD_PARAM ;
306
286
}
307
- if ( dest -> array_size != right -> array_size ) {
287
+ if ( dest -> array_size != right -> array_size ) {
308
288
return OPAL_ERR_BAD_PARAM ;
309
289
}
310
290
311
291
/*
312
292
* Bitwise XOR
313
293
*/
314
- for (i = 0 ; i < dest -> array_size ; ++ i ) {
294
+ for (i = 0 ; i < dest -> array_size ; ++ i ) {
315
295
dest -> bitmap [i ] ^= right -> bitmap [i ];
316
296
}
317
297
@@ -325,32 +305,32 @@ bool opal_bitmap_are_different(opal_bitmap_t *left, opal_bitmap_t *right)
325
305
/*
326
306
* Sanity check
327
307
*/
328
- if ( NULL == left || NULL == right ) {
308
+ if ( NULL == left || NULL == right ) {
329
309
return OPAL_ERR_BAD_PARAM ;
330
310
}
331
311
332
- if ( opal_bitmap_size (left ) != opal_bitmap_size (right ) ) {
312
+ if ( opal_bitmap_size (left ) != opal_bitmap_size (right )) {
333
313
return true;
334
314
}
335
315
336
316
/*
337
317
* Direct comparison
338
318
*/
339
- for (i = 0 ; i < left -> array_size ; ++ i ) {
340
- if ( left -> bitmap [i ] != right -> bitmap [i ] ) {
319
+ for (i = 0 ; i < left -> array_size ; ++ i ) {
320
+ if ( left -> bitmap [i ] != right -> bitmap [i ]) {
341
321
return true;
342
322
}
343
323
}
344
324
345
325
return false;
346
326
}
347
327
348
- char * opal_bitmap_get_string (opal_bitmap_t * bitmap )
328
+ char * opal_bitmap_get_string (opal_bitmap_t * bitmap )
349
329
{
350
330
int i ;
351
331
char * bitmap_str = NULL ;
352
332
353
- if ( NULL == bitmap ) {
333
+ if ( NULL == bitmap ) {
354
334
return NULL ;
355
335
}
356
336
@@ -360,8 +340,8 @@ char * opal_bitmap_get_string(opal_bitmap_t *bitmap)
360
340
}
361
341
bitmap_str [bitmap -> array_size * SIZE_OF_BASE_TYPE ] = '\0' ;
362
342
363
- for ( i = 0 ; i < (bitmap -> array_size * SIZE_OF_BASE_TYPE ); ++ i ) {
364
- if ( opal_bitmap_is_set_bit (bitmap , i ) ) {
343
+ for ( i = 0 ; i < (bitmap -> array_size * SIZE_OF_BASE_TYPE ); ++ i ) {
344
+ if ( opal_bitmap_is_set_bit (bitmap , i )) {
365
345
bitmap_str [i ] = 'X' ;
366
346
} else {
367
347
bitmap_str [i ] = '_' ;
@@ -387,12 +367,13 @@ int opal_bitmap_num_set_bits(opal_bitmap_t *bm, int len)
387
367
}
388
368
#endif
389
369
390
- for (i = 0 ; i < len ; ++ i ) {
391
- if ( 0 == (val = bm -> bitmap [i ]) ) continue ;
370
+ for (i = 0 ; i < len ; ++ i ) {
371
+ if (0 == (val = bm -> bitmap [i ]))
372
+ continue ;
392
373
/* Peter Wegner in CACM 3 (1960), 322. This method goes through as many
393
374
* iterations as there are set bits. */
394
- for ( ; val ; cnt ++ ) {
395
- val &= val - 1 ; /* clear the least significant bit set */
375
+ for ( ; val ; cnt ++ ) {
376
+ val &= val - 1 ; /* clear the least significant bit set */
396
377
}
397
378
}
398
379
0 commit comments