Previous: Raising exceptions from C, Up: C interface


7.10 Unsafe C macros

All of the C functions & macros described previously verify that their arguments have the appropriate types and lie in the appropriate ranges. The following macros are identical to their safe counterparts, except that the unsafe variants, by contrast, do not verify coherency of their arguments. They are provided for the purpose of writing more efficient code; their general use is not recommended.

— C macro: char S48_UNSAFE_EXTRACT_CHAR (s48_value char)
— C macro: char * S48_UNSAFE_EXTRACT_STRING (s48_value string)
— C macro: long S48_UNSAFE_EXTRACT_INTEGER (s48_value integer)
— C macro: double S48_UNSAFE_EXTRACT_DOUBLE (s48_value double)
— C macro: long S48_UNSAFE_EXTRACT_FIXNUM (s48_value fixnum)
— C macro: s48_value S48_UNSAFE_ENTER_FIXNUM (long integer)

— C macro: s48_value S48_UNSAFE_CAR (s48_value pair)
— C macro: s48_value S48_UNSAFE_CDR (s48_value pair)
— C macro: void S48_UNSAFE_SET_CAR (s48_value pair, s48_value value)
— C macro: void S48_UNSAFE_SET_CDR (s48_value pair, s48_value value)

— C macro: long S48_UNSAFE_VECTOR_LENGTH (s48_value vector)
— C macro: s48_value S48_UNSAFE_VECTOR_REF (s48_value vector, long index)
— C macro: void S48_UNSAFE_VECTOR_SET (s48_value vector, long index, s48_value value)

— C macro: long S48_UNSAFE_STRING_LENGTH (s48_value string)
— C macro: char S48_UNSAFE_STRING_REF (s48_value string, long index)
— C macro: void S48_UNSAFE_STRING_SET (s48_value string, long index, char char)

— C macro: void S48_UNSAFE_SYMBOL_TO_STRING (s48_value symbol)

— C macro: long S48_UNSAFE_BYTE_VECTOR_LENGTH (s48_value bytev)
— C macro: char S48_UNSAFE_BYTE_VECTOR_REF (s48_value bytev, long index)
— C macro: void S48_UNSAFE_BYTE_VECTOR_SET (s48_value bytev, long index, char byte)

— C macro: s48_value S48_UNSAFE_SHARED_BINDING_REF (s48_value shared_binding)
— C macro: int S48_UNSAFE_SHARED_BINDING_IS_IMPORTP (s48_value shared_binding)
— C macro: s48_value S48_UNSAFE_SHARED_BINDING_NAME (s48_value shared_binding)
— C macro: void S48_UNSAFE_SHARED_BINDING_SET (s48_value shared_binding, s48_value value)

— C macro: type S48_UNSAFE_EXTRACT_VALUE (s48_value bytev, type)
— C macro: type * S48_UNSAFE_EXTRACT_VALUE_POINTER (s48_value bytev, type)
— C macro: void S48_UNSAFE_SET_VALUE (s48_value bytev, type, type value)