mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-11 14:21:10 +02:00
* srfi-14.c: Okay. Now I got it. Really. This time it's fixed.
Guaranteed. (Maybe) * srfi-19.scm: Define `current-time' before exporting it.
This commit is contained in:
parent
90ee03daff
commit
4c4185ee95
3 changed files with 47 additions and 22 deletions
|
@ -1,3 +1,10 @@
|
|||
2001-07-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
|
||||
|
||||
* srfi-14.c: Okay. Now I got it. Really. This time it's fixed.
|
||||
Guaranteed. (Maybe)
|
||||
|
||||
* srfi-19.scm: Define `current-time' before exporting it.
|
||||
|
||||
2001-07-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
|
||||
|
||||
* srfi-14.c: Fix for bug caused by brain-malfunctioning on my
|
||||
|
|
|
@ -54,6 +54,10 @@
|
|||
#define SCM_CHARSET_SET(cs, idx) (((long *) SCM_SMOB_DATA (cs))[(idx) / SCM_BITS_PER_LONG] |= (1 << ((idx) % SCM_BITS_PER_LONG)))
|
||||
|
||||
|
||||
#define BYTES_PER_CHARSET (SCM_CHARSET_SIZE / 8)
|
||||
#define LONGS_PER_CHARSET (SCM_CHARSET_SIZE / SCM_BITS_PER_LONG)
|
||||
|
||||
|
||||
/* Smob type code for character sets. */
|
||||
int scm_tc16_charset = 0;
|
||||
|
||||
|
@ -94,8 +98,8 @@ make_char_set (const char * func_name)
|
|||
{
|
||||
long * p;
|
||||
|
||||
p = scm_must_malloc (SCM_CHARSET_SIZE / 8, func_name);
|
||||
memset (p, 0, SCM_CHARSET_SIZE / 8);
|
||||
p = scm_must_malloc (BYTES_PER_CHARSET, func_name);
|
||||
memset (p, 0, BYTES_PER_CHARSET);
|
||||
SCM_RETURN_NEWSMOB (scm_tc16_charset, p);
|
||||
}
|
||||
|
||||
|
@ -131,7 +135,7 @@ SCM_DEFINE (scm_char_set_eq, "char-set=", 0, 0, 1,
|
|||
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 / 8) != 0)
|
||||
else if (memcmp (cs1_data, csi_data, BYTES_PER_CHARSET) != 0)
|
||||
return SCM_BOOL_F;
|
||||
char_sets = SCM_CDR (char_sets);
|
||||
}
|
||||
|
@ -163,7 +167,7 @@ SCM_DEFINE (scm_char_set_leq, "char-set<=", 0, 0, 1,
|
|||
{
|
||||
int k;
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
{
|
||||
if ((prev_data[k] & csi_data[k]) != prev_data[k])
|
||||
return SCM_BOOL_F;
|
||||
|
@ -202,7 +206,7 @@ SCM_DEFINE (scm_char_set_hash, "char-set-hash", 1, 1, 0,
|
|||
}
|
||||
|
||||
p = (long *) SCM_SMOB_DATA (cs);
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
{
|
||||
if (p[k] != 0)
|
||||
val = p[k] + (val << 1);
|
||||
|
@ -449,7 +453,7 @@ SCM_DEFINE (scm_char_set_copy, "char-set-copy", 1, 0, 0,
|
|||
ret = make_char_set (FUNC_NAME);
|
||||
p1 = (long *) SCM_SMOB_DATA (cs);
|
||||
p2 = (long *) SCM_SMOB_DATA (ret);
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p2[k] = p1[k];
|
||||
return ret;
|
||||
}
|
||||
|
@ -1030,7 +1034,7 @@ SCM_DEFINE (scm_char_set_complement, "char-set-complement", 1, 0, 0,
|
|||
res = make_char_set (FUNC_NAME);
|
||||
p = (long *) SCM_SMOB_DATA (res);
|
||||
q = (long *) SCM_SMOB_DATA (cs);
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] = ~q[k];
|
||||
return res;
|
||||
}
|
||||
|
@ -1058,7 +1062,7 @@ SCM_DEFINE (scm_char_set_union, "char-set-union", 0, 0, 1,
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] |= ((long *) SCM_SMOB_DATA (cs))[k];
|
||||
}
|
||||
return res;
|
||||
|
@ -1088,7 +1092,7 @@ SCM_DEFINE (scm_char_set_intersection, "char-set-intersection", 1, 0, 1,
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] &= ((long *) SCM_SMOB_DATA (cs))[k];
|
||||
}
|
||||
return res;
|
||||
|
@ -1118,7 +1122,7 @@ SCM_DEFINE (scm_char_set_difference, "char-set-difference", 1, 0, 1,
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] &= ~((long *) SCM_SMOB_DATA (cs))[k];
|
||||
}
|
||||
return res;
|
||||
|
@ -1148,7 +1152,7 @@ SCM_DEFINE (scm_char_set_xor, "char-set-xor", 1, 0, 1,
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] ^= ((long *) SCM_SMOB_DATA (cs))[k];
|
||||
}
|
||||
return res;
|
||||
|
@ -1181,7 +1185,7 @@ SCM_DEFINE (scm_char_set_diff_plus_intersection, "char-set-diff+intersection", 1
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
{
|
||||
p[k] &= ~((long *) SCM_SMOB_DATA (cs))[k];
|
||||
q[k] &= ((long *) SCM_SMOB_DATA (cs))[k];
|
||||
|
@ -1202,7 +1206,7 @@ SCM_DEFINE (scm_char_set_complement_x, "char-set-complement!", 1, 0, 0,
|
|||
|
||||
SCM_VALIDATE_SMOB (1, cs, charset);
|
||||
p = (long *) SCM_SMOB_DATA (cs);
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] = ~p[k];
|
||||
return cs;
|
||||
}
|
||||
|
@ -1229,7 +1233,7 @@ SCM_DEFINE (scm_char_set_union_x, "char-set-union!", 1, 0, 1,
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] |= ((long *) SCM_SMOB_DATA (cs))[k];
|
||||
}
|
||||
return cs1;
|
||||
|
@ -1257,7 +1261,7 @@ SCM_DEFINE (scm_char_set_intersection_x, "char-set-intersection!", 1, 0, 1,
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] &= ((long *) SCM_SMOB_DATA (cs))[k];
|
||||
}
|
||||
return cs1;
|
||||
|
@ -1285,7 +1289,7 @@ SCM_DEFINE (scm_char_set_difference_x, "char-set-difference!", 1, 0, 1,
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] &= ~((long *) SCM_SMOB_DATA (cs))[k];
|
||||
}
|
||||
return cs1;
|
||||
|
@ -1313,7 +1317,7 @@ SCM_DEFINE (scm_char_set_xor_x, "char-set-xor!", 1, 0, 1,
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
p[k] ^= ((long *) SCM_SMOB_DATA (cs))[k];
|
||||
}
|
||||
return cs1;
|
||||
|
@ -1345,7 +1349,7 @@ SCM_DEFINE (scm_char_set_diff_plus_intersection_x, "char-set-diff+intersection!"
|
|||
c++;
|
||||
rest = SCM_CDR (rest);
|
||||
|
||||
for (k = 0; k < SCM_CHARSET_SIZE / sizeof (long); k++)
|
||||
for (k = 0; k < LONGS_PER_CHARSET; k++)
|
||||
{
|
||||
p[k] &= ~((long *) SCM_SMOB_DATA (cs))[k];
|
||||
q[k] &= ((long *) SCM_SMOB_DATA (cs))[k];
|
||||
|
@ -1369,7 +1373,7 @@ scm_c_init_srfi_14 (void)
|
|||
if (!initialized)
|
||||
{
|
||||
scm_tc16_charset = scm_make_smob_type ("character-set",
|
||||
SCM_CHARSET_SIZE / 8);
|
||||
BYTES_PER_CHARSET);
|
||||
scm_set_smob_free (scm_tc16_charset, charset_free);
|
||||
scm_set_smob_print (scm_tc16_charset, charset_print);
|
||||
initialized = 1;
|
||||
|
@ -1382,6 +1386,13 @@ scm_c_init_srfi_14 (void)
|
|||
void
|
||||
scm_init_srfi_14 (void)
|
||||
{
|
||||
#if 0
|
||||
fprintf(stderr, "bytes-per-charset: %d\n", BYTES_PER_CHARSET);
|
||||
fprintf(stderr, "bits-per-long: %d\n", SCM_BITS_PER_LONG);
|
||||
fprintf(stderr, "longs-per-charset: %d\n", LONGS_PER_CHARSET);
|
||||
fflush (stderr);
|
||||
#endif /* 0 */
|
||||
|
||||
/* Do the smob type initialization. */
|
||||
scm_c_init_srfi_14 ();
|
||||
|
||||
|
|
|
@ -60,8 +60,15 @@
|
|||
(define-module (srfi srfi-19)
|
||||
:use-module (srfi srfi-6)
|
||||
:use-module (srfi srfi-8)
|
||||
:use-module (srfi srfi-9)
|
||||
:export (;; Constants
|
||||
:use-module (srfi srfi-9))
|
||||
|
||||
(begin-deprecated
|
||||
;; Prevent `export' from re-exporting core bindings. This behaviour
|
||||
;; of `export' is deprecated and will disappear in one of the next
|
||||
;; releases.
|
||||
(define current-time #f))
|
||||
|
||||
(export ;; Constants
|
||||
time-duration
|
||||
time-monotonic
|
||||
time-process
|
||||
|
@ -147,7 +154,7 @@
|
|||
time-utc->time-tai!
|
||||
;; Date to string/string to date converters.
|
||||
date->string
|
||||
string->date))
|
||||
string->date)
|
||||
|
||||
(cond-expand-provide (current-module) '(srfi-19))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue