+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>
portability: don't assume 8-bit bytes.
Sbitset
Sbitset__new_on_obstack (Sbitset__Index nbits, struct obstack *obstackp)
{
- char *result;
- char *ptr;
- char *end;
+ Sbitset result;
+ Sbitset ptr;
+ Sbitset end;
aver (nbits);
result = obstack_alloc (obstackp, Sbitset__nbytes (nbits));
for (ptr = result, end = result + Sbitset__nbytes (nbits); ptr < end; ++ptr)
bool
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)
if (*self != 0)
return false;
#ifndef SBITSET_H_
# define SBITSET_H_
-typedef char *Sbitset;
+typedef unsigned char *Sbitset;
typedef size_t Sbitset__Index;
#define SBITSET__INDEX__CONVERSION_SPEC "zu"
/* NBITS is the size of every bitset. More than NBITS bits might be set. */
#define Sbitset__or(SELF, OTHER1, OTHER2, NBITS) \
do { \
- char *ptr_self = (SELF); \
- char *ptr_other1 = (OTHER1); \
- char *ptr_other2 = (OTHER2); \
- char *end_self = ptr_self + Sbitset__nbytes (NBITS); \
+ Sbitset ptr_self = (SELF); \
+ Sbitset ptr_other1 = (OTHER1); \
+ Sbitset ptr_other2 = (OTHER2); \
+ Sbitset end_self = ptr_self + Sbitset__nbytes (NBITS); \
for (; ptr_self < end_self; ++ptr_self, ++ptr_other1, ++ptr_other2) \
*ptr_self = *ptr_other1 | *ptr_other2; \
} while(0)