#include "srfi-14.h"
-#define SCM_CHARSET_SET(cs, idx) (((long *) SCM_SMOB_DATA (cs))[(idx) / sizeof (long)] |= (1 << ((idx) % sizeof (long))))
-SCM scm_char_set_copy (SCM cs);
+#define SCM_CHARSET_SET(cs, idx) (((long *) SCM_SMOB_DATA (cs))[(idx) / SCM_BITS_PER_LONG] |= (1 << ((idx) % SCM_BITS_PER_LONG)))
+
/* Smob type code for character sets. */
int scm_tc16_charset = 0;
{
long * p;
- p = scm_must_malloc (SCM_CHARSET_SIZE / sizeof (char), func_name);
- memset (p, 0, SCM_CHARSET_SIZE / sizeof (char));
+ p = scm_must_malloc (SCM_CHARSET_SIZE / 8, func_name);
+ memset (p, 0, SCM_CHARSET_SIZE / 8);
SCM_RETURN_NEWSMOB (scm_tc16_charset, p);
}
csi_data = (long *) SCM_SMOB_DATA (csi);
if (cs1_data == NULL)
cs1_data = csi_data;
- else if (memcmp (cs1_data, csi_data,
- SCM_CHARSET_SIZE / sizeof (char)) != 0)
+ else if (memcmp (cs1_data, csi_data, SCM_CHARSET_SIZE / 8) != 0)
return SCM_BOOL_F;
char_sets = SCM_CDR (char_sets);
}
SCM_VALIDATE_CHAR_COPY (argnum, SCM_CAR (rest), c);
argnum++;
rest = SCM_CDR (rest);
- p[c / sizeof (long)] |= 1 << (c % sizeof (long));
+ p[c / SCM_BITS_PER_LONG] |= 1 << (c % SCM_BITS_PER_LONG);
}
return cs;
}
SCM_VALIDATE_CHAR_COPY (0, chr, c);
list = SCM_CDR (list);
- p[c / sizeof (long)] |= 1 << (c % sizeof (long));
+ p[c / SCM_BITS_PER_LONG] |= 1 << (c % SCM_BITS_PER_LONG);
}
return cs;
}
SCM_VALIDATE_CHAR_COPY (0, chr, c);
list = SCM_CDR (list);
- p[c / sizeof (long)] |= 1 << (c % sizeof (long));
+ p[c / SCM_BITS_PER_LONG] |= 1 << (c % SCM_BITS_PER_LONG);
}
return base_cs;
}
while (k < SCM_STRING_LENGTH (str))
{
int c = s[k++];
- p[c / sizeof (long)] |= 1 << (c % sizeof (long));
+ p[c / SCM_BITS_PER_LONG] |= 1 << (c % SCM_BITS_PER_LONG);
}
return cs;
}
while (k < SCM_STRING_LENGTH (str))
{
int c = s[k++];
- p[c / sizeof (long)] |= 1 << (c % sizeof (long));
+ p[c / SCM_BITS_PER_LONG] |= 1 << (c % SCM_BITS_PER_LONG);
}
return base_cs;
}
SCM res = scm_call_1 (pred, SCM_MAKE_CHAR (k));
if (!SCM_FALSEP (res))
- p[k / sizeof (long)] |= 1 << (k % sizeof (long));
+ p[k / SCM_BITS_PER_LONG] |= 1 << (k % SCM_BITS_PER_LONG);
}
}
return ret;
SCM res = scm_call_1 (pred, SCM_MAKE_CHAR (k));
if (!SCM_FALSEP (res))
- p[k / sizeof (long)] |= 1 << (k % sizeof (long));
+ p[k / SCM_BITS_PER_LONG] |= 1 << (k % SCM_BITS_PER_LONG);
}
}
return base_cs;
p = (long *) SCM_SMOB_DATA (cs);
while (clower < cupper)
{
- p[clower / sizeof (long)] |= 1 << (clower % sizeof (long));
+ p[clower / SCM_BITS_PER_LONG] |= 1 << (clower % SCM_BITS_PER_LONG);
clower++;
}
return cs;
p = (long *) SCM_SMOB_DATA (base_cs);
while (clower < cupper)
{
- p[clower / sizeof (long)] |= 1 << (clower % sizeof (long));
+ p[clower / SCM_BITS_PER_LONG] |= 1 << (clower % SCM_BITS_PER_LONG);
clower++;
}
return base_cs;
SCM_VALIDATE_CHAR_COPY (1, chr, c);
rest = SCM_CDR (rest);
- p[c / sizeof (long)] |= 1 << (c % sizeof (long));
+ p[c / SCM_BITS_PER_LONG] |= 1 << (c % SCM_BITS_PER_LONG);
}
return cs;
}
SCM_VALIDATE_CHAR_COPY (1, chr, c);
rest = SCM_CDR (rest);
- p[c / sizeof (long)] &= ~(1 << (c % sizeof (long)));
+ p[c / SCM_BITS_PER_LONG] &= ~(1 << (c % SCM_BITS_PER_LONG));
}
return cs;
}
SCM_VALIDATE_CHAR_COPY (1, chr, c);
rest = SCM_CDR (rest);
- p[c / sizeof (long)] |= 1 << (c % sizeof (long));
+ p[c / SCM_BITS_PER_LONG] |= 1 << (c % SCM_BITS_PER_LONG);
}
return cs;
}
SCM_VALIDATE_CHAR_COPY (1, chr, c);
rest = SCM_CDR (rest);
- p[c / sizeof (long)] &= ~(1 << (c % sizeof (long)));
+ p[c / SCM_BITS_PER_LONG] &= ~(1 << (c % SCM_BITS_PER_LONG));
}
return cs;
}
SCM_DEFINE (scm_char_set_xor, "char-set-xor", 1, 0, 1,
(SCM cs1, SCM rest),
- "Return the exclusive--or of all argument character sets.")
+ "Return the exclusive-or of all argument character sets.")
#define FUNC_NAME s_scm_char_set_xor
{
int c = 2;
SCM_DEFINE (scm_char_set_xor_x, "char-set-xor!", 1, 0, 1,
(SCM cs1, SCM rest),
- "Return the exclusive--or of all argument character sets.")
+ "Return the exclusive-or of all argument character sets.")
#define FUNC_NAME s_scm_char_set_xor_x
{
int c = 2;
if (!initialized)
{
- scm_tc16_charset = scm_make_smob_type ("character-set",
- SCM_CHARSET_SIZE / sizeof (char));
+ scm_tc16_charset = scm_make_smob_type ("character-set",
+ SCM_CHARSET_SIZE / 8);
scm_set_smob_free (scm_tc16_charset, charset_free);
scm_set_smob_print (scm_tc16_charset, charset_print);
initialized = 1;