📄 chicken.h
字号:
#define ___scheme_pointer void *#define ___byte_vector unsigned char *#define ___symbol char *#define ___safe#define ___declare(x, y)#define ___specialize#define ___abstract#define ___discard#define ___in#define ___out#define ___inout#define ___mutable#define ___length(var)#define ___pointer#define ___u32 C_u32#define ___s32 C_s32#define ___u64 C_u64#define ___s64 C_s64/* Constants: */#define C_STACK_RESERVE 4096#define C_DEFAULT_MAX_PENDING_FINALIZERS 2048#define C_IMMEDIATE_MARK_BITS 0x00000003#define C_IMMEDIATE_TYPE_BITS 0x0000000f#define C_BOOLEAN_BITS 0x00000006#define C_CHARACTER_BITS 0x0000000a#define C_SPECIAL_BITS 0x0000000e#define C_SCHEME_FALSE ((C_word)(C_BOOLEAN_BITS | 0x00000000))#define C_SCHEME_TRUE ((C_word)(C_BOOLEAN_BITS | 0x00000010))#define C_SCHEME_END_OF_LIST ((C_word)(C_SPECIAL_BITS | 0x00000000))#define C_SCHEME_UNDEFINED ((C_word)(C_SPECIAL_BITS | 0x00000010))#define C_SCHEME_UNBOUND ((C_word)(C_SPECIAL_BITS | 0x00000020))#define C_SCHEME_END_OF_FILE ((C_word)(C_SPECIAL_BITS | 0x00000030))#define C_FIXNUM_BIT 0x00000001#define C_FIXNUM_SHIFT 1#define C_CHAR_BIT_MASK 0x1fffff#ifdef C_SIXTY_FOUR# define C_MOST_POSITIVE_FIXNUM 0x3fffffffffffffffL# define C_WORD_SIZE 64#else# define C_MOST_POSITIVE_FIXNUM 0x3fffffff# define C_WORD_SIZE 32#endif#define C_MOST_NEGATIVE_FIXNUM (-C_MOST_POSITIVE_FIXNUM - 1)#ifdef C_SIXTY_FOUR# define C_INT_SIGN_BIT 0x8000000000000000L# define C_INT_TOP_BIT 0x4000000000000000L# define C_HEADER_BITS_MASK 0xff00000000000000L# define C_HEADER_TYPE_BITS 0x0f00000000000000L# define C_HEADER_SIZE_MASK 0x00ffffffffffffffL# define C_GC_FORWARDING_BIT 0x8000000000000000L /* header contains forwarding pointer */# define C_BYTEBLOCK_BIT 0x4000000000000000L /* block contains bytes instead of slots */# define C_SPECIALBLOCK_BIT 0x2000000000000000L /* 1st item is a non-value */# define C_8ALIGN_BIT 0x1000000000000000L /* data is aligned to 8-byte boundary */# define C_SYMBOL_TYPE (0x0100000000000000L)# define C_STRING_TYPE (0x0200000000000000L | C_BYTEBLOCK_BIT)# define C_PAIR_TYPE (0x0300000000000000L)# define C_CLOSURE_TYPE (0x0400000000000000L | C_SPECIALBLOCK_BIT)# define C_FLONUM_TYPE (0x0500000000000000L | C_BYTEBLOCK_BIT | C_8ALIGN_BIT)# define C_UNUSED_TYPE (0x0600000000000000L)# define C_PORT_TYPE (0x0700000000000000L | C_SPECIALBLOCK_BIT)# define C_STRUCTURE_TYPE (0x0800000000000000L)# define C_POINTER_TYPE (0x0900000000000000L | C_SPECIALBLOCK_BIT)# define C_BUCKET_TYPE (0x0f00000000000000L)# define C_LOCATIVE_TYPE (0x0a00000000000000L | C_SPECIALBLOCK_BIT)# define C_TAGGED_POINTER_TYPE (0x0b00000000000000L | C_SPECIALBLOCK_BIT)# define C_SWIG_POINTER_TYPE (0x0c00000000000000L | C_BYTEBLOCK_BIT)# define C_LAMBDA_INFO_TYPE (0x0d00000000000000L | C_BYTEBLOCK_BIT)#else# define C_INT_SIGN_BIT 0x80000000# define C_INT_TOP_BIT 0x40000000# define C_HEADER_BITS_MASK 0xff000000# define C_HEADER_TYPE_BITS 0x0f000000# define C_HEADER_SIZE_MASK 0x00ffffff# define C_GC_FORWARDING_BIT 0x80000000# define C_BYTEBLOCK_BIT 0x40000000# define C_SPECIALBLOCK_BIT 0x20000000# define C_8ALIGN_BIT 0x10000000# define C_SYMBOL_TYPE (0x01000000)# define C_STRING_TYPE (0x02000000 | C_BYTEBLOCK_BIT)# define C_PAIR_TYPE (0x03000000)# define C_CLOSURE_TYPE (0x04000000 | C_SPECIALBLOCK_BIT)# ifdef C_DOUBLE_IS_32_BITS# define C_FLONUM_TYPE (0x05000000 | C_BYTEBLOCK_BIT)# else# define C_FLONUM_TYPE (0x05000000 | C_BYTEBLOCK_BIT | C_8ALIGN_BIT)# endif# define C_UNUSED_TYPE (0x06000000)# define C_PORT_TYPE (0x07000000 | C_SPECIALBLOCK_BIT)# define C_STRUCTURE_TYPE (0x08000000)# define C_POINTER_TYPE (0x09000000 | C_SPECIALBLOCK_BIT)# define C_BUCKET_TYPE (0x0f000000)# define C_LOCATIVE_TYPE (0x0a000000 | C_SPECIALBLOCK_BIT)# define C_TAGGED_POINTER_TYPE (0x0b000000 | C_SPECIALBLOCK_BIT)# define C_SWIG_POINTER_TYPE (0x0c000000 | C_BYTEBLOCK_BIT)# define C_LAMBDA_INFO_TYPE (0x0d000000 | C_BYTEBLOCK_BIT)#endif#define C_SLOT_LOCATIVE 0#define C_CHAR_LOCATIVE 1#define C_U8_LOCATIVE 2#define C_S8_LOCATIVE 3#define C_U16_LOCATIVE 4#define C_S16_LOCATIVE 5#define C_U32_LOCATIVE 6#define C_S32_LOCATIVE 7#define C_F32_LOCATIVE 8#define C_F64_LOCATIVE 9#define C_VECTOR_TYPE 0x00000000#define C_BYTEVECTOR_TYPE (C_VECTOR_TYPE | C_BYTEBLOCK_BIT | C_8ALIGN_BIT)#define C_SIZEOF_LIST(n) ((n) * 3 + 1)#define C_SIZEOF_PAIR 3#define C_SIZEOF_STRING(n) (C_bytestowords(n) + 2)#define C_SIZEOF_SYMBOL 4#define C_SIZEOF_INTERNED_SYMBOL(n) (C_SIZEOF_SYMBOL + C_SIZEOF_BUCKET + C_SIZEOF_STRING(n))#ifdef C_DOUBLE_IS_32_BITS# define C_SIZEOF_FLONUM 2#else# define C_SIZEOF_FLONUM 4#endif#define C_SIZEOF_POINTER 2#define C_SIZEOF_TAGGED_POINTER 3#define C_SIZEOF_SWIG_POINTER 3#define C_SIZEOF_VECTOR(n) ((n) + 1)#define C_SIZEOF_BUCKET 3#define C_SIZEOF_LOCATIVE 5#define C_SIZEOF_PORT 16#define C_PAIR_TAG (C_PAIR_TYPE | (C_SIZEOF_PAIR - 1))#define C_POINTER_TAG (C_POINTER_TYPE | (C_SIZEOF_POINTER - 1))#define C_LOCATIVE_TAG (C_LOCATIVE_TYPE | (C_SIZEOF_LOCATIVE - 1))#define C_TAGGED_POINTER_TAG (C_TAGGED_POINTER_TYPE | (C_SIZEOF_TAGGED_POINTER - 1))#define C_SWIG_POINTER_TAG (C_SWIG_POINTER_TYPE | (C_wordstobytes(C_SIZEOF_SWIG_POINTER - 1)))#define C_SYMBOL_TAG (C_SYMBOL_TYPE | (C_SIZEOF_SYMBOL - 1))#define C_FLONUM_TAG (C_FLONUM_TYPE | sizeof(double))#ifdef C_SIXTY_FOUR# define C_word long# define C_u32 uint32_t# define C_s32 int32_t#else# define C_word int# define C_u32 unsigned int# define C_s32 int#endif#if defined(_MSC_VER) || defined (__MINGW32__)# define C_s64 __int64#else# define C_s64 int64_t#endif#define C_char char#define C_uchar unsigned C_char#define C_byte char#define C_uword unsigned C_word#define C_header C_uword#define C_text(x) x#define C_TIMER_INTERRUPT_NUMBER 255#define C_BAD_ARGUMENT_COUNT_ERROR 1#define C_BAD_MINIMUM_ARGUMENT_COUNT_ERROR 2#define C_BAD_ARGUMENT_TYPE_ERROR 3#define C_UNBOUND_VARIABLE_ERROR 4#define C_TOO_MANY_PARAMETERS_ERROR 5#define C_OUT_OF_MEMORY_ERROR 6#define C_DIVISION_BY_ZERO_ERROR 7#define C_OUT_OF_RANGE_ERROR 8#define C_NOT_A_CLOSURE_ERROR 9#define C_CONTINUATION_CANT_RECEIVE_VALUES_ERROR 10#define C_TOO_DEEP_RECURSION_ERROR 12#define C_CANT_REPRESENT_INEXACT_ERROR 13#define C_NOT_A_PROPER_LIST_ERROR 14#define C_BAD_ARGUMENT_TYPE_NO_FIXNUM_ERROR 15#define C_BAD_ARGUMENT_TYPE_NO_NUMBER_ERROR 16#define C_BAD_ARGUMENT_TYPE_NO_STRING_ERROR 17#define C_BAD_ARGUMENT_TYPE_NO_PAIR_ERROR 18#define C_BAD_ARGUMENT_TYPE_NO_LIST_ERROR 19#define C_BAD_ARGUMENT_TYPE_NO_CHAR_ERROR 20#define C_BAD_ARGUMENT_TYPE_NO_VECTOR_ERROR 21#define C_BAD_ARGUMENT_TYPE_NO_SYMBOL_ERROR 22#define C_STACK_OVERFLOW_ERROR 23#define C_BAD_ARGUMENT_TYPE_BAD_STRUCT_ERROR 24#define C_BAD_ARGUMENT_TYPE_NO_BYTEVECTOR_ERROR 25#define C_LOST_LOCATIVE_ERROR 26#define C_BAD_ARGUMENT_TYPE_NO_BLOCK_ERROR 27#define C_BAD_ARGUMENT_TYPE_NO_NUMBER_VECTOR_ERROR 28#define C_BAD_ARGUMENT_TYPE_NO_INTEGER_ERROR 29#define C_BAD_ARGUMENT_TYPE_NO_UINTEGER_ERROR 30#define C_BAD_ARGUMENT_TYPE_NO_POINTER_ERROR 31#define C_BAD_ARGUMENT_TYPE_NO_TAGGED_POINTER_ERROR 32#define C_RUNTIME_UNSAFE_DLOAD_SAFE_ERROR 33#define C_RUNTIME_SAFE_DLOAD_UNSAFE_ERROR 34#define C_BAD_ARGUMENT_TYPE_NO_FLONUM_ERROR 35#define C_BAD_ARGUMENT_TYPE_NO_CLOSURE_ERROR 36#define CHICKEN_gc_root_ref(root) (((C_GC_ROOT *)(root))->value)#define CHICKEN_gc_root_set(root, x) C_mutate(&((C_GC_ROOT *)(root))->value, (x))#define CHICKEN_global_ref(root) C_u_i_car(((C_GC_ROOT *)(root))->value)#define CHICKEN_global_set(root, x) C_mutate(&C_u_i_car(((C_GC_ROOT *)(root))->value), (x))#define CHICKEN_default_toplevel ((void *)C_default_stub_toplevel)/* Language specifics: */#if defined(__GNUC__) || defined(__INTEL_COMPILER)# ifndef __cplusplus# define C_cblock ({# define C_cblockend })# define C_noret __attribute__ ((noreturn))# define C_noret_decl(name)# define C_aligned __attribute__ ((aligned))# endif# ifdef __i386__# define C_regparm __attribute__ ((regparm(3)))# endif#elif defined(_MSC_VER)# define C_fcall __fastcall#elif defined(__WATCOMC__)# define C_ccall __cdecl#endif#ifndef C_cblock# define C_cblock do{# define C_cblockend }while(0)# define C_noret# define C_noret_decl(name)#endif#ifndef C_regparm# define C_regparm#endif#ifndef C_fcall# define C_fcall#endif#ifndef C_ccall# define C_ccall#endif#ifndef C_aligned# define C_aligned#endif#define C_c_regparm/* Types: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -