* src/Sbitset.c (Sbitset__new_on_obstack): Use Sbitset instead
of char*.
(Sbitset__isEmpty): Use Sbitset instead of char*.
* src/Sbitset.h (Sbitset): Make it a pointer to unsigned char
instead of char.  This helps to avoid casting errors.
(Sbitset__or): Use Sbitset instead of char*.
This commit is contained in:
Joel E. Denny
2009-10-16 19:27:12 -04:00
parent 175620d3c6
commit 5297ebb3bc
3 changed files with 19 additions and 9 deletions

View File

@@ -1,3 +1,13 @@
2009-10-16 Joel E. Denny <jdenny@clemson.edu>
cleanup.
* src/Sbitset.c (Sbitset__new_on_obstack): Use Sbitset instead
of char*.
(Sbitset__isEmpty): Use Sbitset instead of char*.
* src/Sbitset.h (Sbitset): Make it a pointer to unsigned char
instead of char. This helps to avoid casting errors.
(Sbitset__or): Use Sbitset instead of char*.
2009-10-16 Joel E. Denny <jdenny@clemson.edu> 2009-10-16 Joel E. Denny <jdenny@clemson.edu>
portability: don't assume 8-bit bytes. portability: don't assume 8-bit bytes.

View File

@@ -33,9 +33,9 @@ Sbitset__new (Sbitset__Index nbits)
Sbitset Sbitset
Sbitset__new_on_obstack (Sbitset__Index nbits, struct obstack *obstackp) Sbitset__new_on_obstack (Sbitset__Index nbits, struct obstack *obstackp)
{ {
char *result; Sbitset result;
char *ptr; Sbitset ptr;
char *end; Sbitset end;
aver (nbits); aver (nbits);
result = obstack_alloc (obstackp, Sbitset__nbytes (nbits)); result = obstack_alloc (obstackp, Sbitset__nbytes (nbits));
for (ptr = result, end = result + Sbitset__nbytes (nbits); ptr < end; ++ptr) for (ptr = result, end = result + Sbitset__nbytes (nbits); ptr < end; ++ptr)
@@ -52,7 +52,7 @@ Sbitset__delete (Sbitset self)
bool bool
Sbitset__isEmpty (Sbitset self, Sbitset__Index nbits) Sbitset__isEmpty (Sbitset self, Sbitset__Index nbits)
{ {
char *last = self + Sbitset__nbytes (nbits) - 1; Sbitset last = self + Sbitset__nbytes (nbits) - 1;
for (; self < last; ++self) for (; self < last; ++self)
if (*self != 0) if (*self != 0)
return false; return false;

View File

@@ -20,7 +20,7 @@
#ifndef SBITSET_H_ #ifndef SBITSET_H_
# define SBITSET_H_ # define SBITSET_H_
typedef char *Sbitset; typedef unsigned char *Sbitset;
typedef size_t Sbitset__Index; typedef size_t Sbitset__Index;
#define SBITSET__INDEX__CONVERSION_SPEC "zu" #define SBITSET__INDEX__CONVERSION_SPEC "zu"
@@ -73,10 +73,10 @@ do { \
/* NBITS is the size of every bitset. More than NBITS bits might be set. */ /* NBITS is the size of every bitset. More than NBITS bits might be set. */
#define Sbitset__or(SELF, OTHER1, OTHER2, NBITS) \ #define Sbitset__or(SELF, OTHER1, OTHER2, NBITS) \
do { \ do { \
char *ptr_self = (SELF); \ Sbitset ptr_self = (SELF); \
char *ptr_other1 = (OTHER1); \ Sbitset ptr_other1 = (OTHER1); \
char *ptr_other2 = (OTHER2); \ Sbitset ptr_other2 = (OTHER2); \
char *end_self = ptr_self + Sbitset__nbytes (NBITS); \ Sbitset end_self = ptr_self + Sbitset__nbytes (NBITS); \
for (; ptr_self < end_self; ++ptr_self, ++ptr_other1, ++ptr_other2) \ for (; ptr_self < end_self; ++ptr_self, ++ptr_other1, ++ptr_other2) \
*ptr_self = *ptr_other1 | *ptr_other2; \ *ptr_self = *ptr_other1 | *ptr_other2; \
} while(0) } while(0)