Register R6RS port and bytevector internals early
* libguile/bytevectors.c (sym_big, sym_little): Rename from scm_sym_big and scm_sym_little, and don't use the snarf mechanism as we need to initialize this value eagerly in case the C API is used before the Scheme module is loaded. (scm_bootstrap_bytevectors): Initialize the endianness symbols here. * libguile/r6rs-ports.c (scm_register_r6rs_ports): Register the R6RS port kinds here, for the same reason.
This commit is contained in:
parent
4c3bea3dba
commit
94d70684c1
2 changed files with 18 additions and 18 deletions
|
|
@ -430,8 +430,8 @@ scm_i_print_bytevector (SCM bv, SCM port, scm_print_state *pstate SCM_UNUSED)
|
|||
|
||||
/* General operations. */
|
||||
|
||||
SCM_SYMBOL (scm_sym_big, "big");
|
||||
SCM_SYMBOL (scm_sym_little, "little");
|
||||
static SCM sym_big;
|
||||
static SCM sym_little;
|
||||
|
||||
SCM scm_endianness_big, scm_endianness_little;
|
||||
|
||||
|
|
@ -812,13 +812,13 @@ bytevector_large_ref (const char *c_bv, size_t c_size, int signed_p,
|
|||
|
||||
if (signed_p)
|
||||
{
|
||||
if (scm_is_eq (endianness, scm_sym_big))
|
||||
if (scm_is_eq (endianness, sym_big))
|
||||
negative_p = c_bv[0] & 0x80;
|
||||
else
|
||||
negative_p = c_bv[c_size - 1] & 0x80;
|
||||
}
|
||||
|
||||
c_endianness = scm_is_eq (endianness, scm_sym_big) ? 1 : -1;
|
||||
c_endianness = scm_is_eq (endianness, sym_big) ? 1 : -1;
|
||||
|
||||
mpz_init (c_mpz);
|
||||
mpz_import (c_mpz, 1 /* 1 word */, 1 /* word order doesn't matter */,
|
||||
|
|
@ -845,7 +845,7 @@ bytevector_large_set (char *c_bv, size_t c_size, int signed_p,
|
|||
mpz_t c_mpz;
|
||||
int c_endianness, c_sign, err = 0;
|
||||
|
||||
c_endianness = scm_is_eq (endianness, scm_sym_big) ? 1 : -1;
|
||||
c_endianness = scm_is_eq (endianness, sym_big) ? 1 : -1;
|
||||
|
||||
mpz_init (c_mpz);
|
||||
scm_to_mpz (value, c_mpz);
|
||||
|
|
@ -1881,9 +1881,9 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness)
|
|||
? "32"
|
||||
: "??"))));
|
||||
strcat (name,
|
||||
((scm_is_eq (endianness, scm_sym_big))
|
||||
((scm_is_eq (endianness, sym_big))
|
||||
? "BE"
|
||||
: ((scm_is_eq (endianness, scm_sym_little))
|
||||
: ((scm_is_eq (endianness, sym_little))
|
||||
? "LE"
|
||||
: "unknown")));
|
||||
}
|
||||
|
|
@ -1901,7 +1901,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness)
|
|||
\
|
||||
SCM_VALIDATE_STRING (1, str); \
|
||||
if (scm_is_eq (endianness, SCM_UNDEFINED)) \
|
||||
endianness = scm_sym_big; \
|
||||
endianness = sym_big; \
|
||||
else \
|
||||
SCM_VALIDATE_SYMBOL (2, endianness); \
|
||||
\
|
||||
|
|
@ -2018,7 +2018,7 @@ SCM_DEFINE (scm_string_to_utf32, "string->utf32",
|
|||
\
|
||||
SCM_VALIDATE_BYTEVECTOR (1, utf); \
|
||||
if (scm_is_eq (endianness, SCM_UNDEFINED)) \
|
||||
endianness = scm_sym_big; \
|
||||
endianness = sym_big; \
|
||||
else \
|
||||
SCM_VALIDATE_SYMBOL (2, endianness); \
|
||||
\
|
||||
|
|
@ -2109,13 +2109,13 @@ scm_bootstrap_bytevectors (void)
|
|||
scm_i_register_vector_constructor
|
||||
(scm_i_array_element_types[SCM_ARRAY_ELEMENT_TYPE_VU8],
|
||||
scm_make_bytevector);
|
||||
|
||||
scm_endianness_big = sym_big = scm_from_latin1_symbol ("big");
|
||||
scm_endianness_little = sym_little = scm_from_latin1_symbol ("little");
|
||||
}
|
||||
|
||||
void
|
||||
scm_init_bytevectors (void)
|
||||
{
|
||||
#include "libguile/bytevectors.x"
|
||||
|
||||
scm_endianness_big = scm_sym_big;
|
||||
scm_endianness_little = scm_sym_little;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue