51 |
|
|
52 |
/* SCM_SYMBOL_LENGTH(SYM) is the length of SYM's name in characters, and |
/* SCM_SYMBOL_LENGTH(SYM) is the length of SYM's name in characters, and |
53 |
* SCM_SYMBOL_CHARS(SYM) is the address of the first character of SYM's name. |
* SCM_SYMBOL_CHARS(SYM) is the address of the first character of SYM's name. |
54 |
|
* |
55 |
|
* SCM_SYMBOL_HASH is a hash value for the symbol. It is also used to |
56 |
|
* encode whether the symbol is interned or not. See |
57 |
|
* SCM_SYMBOL_INTERNED_P. |
58 |
*/ |
*/ |
59 |
|
|
60 |
#define SCM_SYMBOLP(x) (!SCM_IMP (x) && (SCM_TYP7 (x) == scm_tc7_symbol)) |
#define SCM_SYMBOLP(x) (!SCM_IMP (x) && (SCM_TYP7 (x) == scm_tc7_symbol)) |
64 |
#define SCM_SYMBOL_CHARS(x) ((char *) (SCM_CELL_WORD_1 (x))) |
#define SCM_SYMBOL_CHARS(x) ((char *) (SCM_CELL_WORD_1 (x))) |
65 |
#define SCM_SET_SYMBOL_CHARS(s, c) (SCM_SET_CELL_WORD_1 ((s), (c))) |
#define SCM_SET_SYMBOL_CHARS(s, c) (SCM_SET_CELL_WORD_1 ((s), (c))) |
66 |
#define SCM_SYMBOL_HASH(X) ((unsigned long) SCM_CELL_WORD_2 (X)) |
#define SCM_SYMBOL_HASH(X) ((unsigned long) SCM_CELL_WORD_2 (X)) |
67 |
#define SCM_SET_SYMBOL_HASH(X, v) (SCM_SET_CELL_WORD_2 ((X), (v))) |
#define SCM_SYMBOL_INTERNED_P(X) (SCM_SYMBOL_HASH(X) <= (SCM_T_BITS_MAX/2)) |
68 |
|
|
69 |
#define SCM_PROP_SLOTS(X) (SCM_CELL_OBJECT_3 (X)) |
#define SCM_PROP_SLOTS(X) (SCM_CELL_OBJECT_3 (X)) |
70 |
#define SCM_SET_PROP_SLOTS(X, v) (SCM_SET_CELL_OBJECT_3 ((X), (v))) |
#define SCM_SET_PROP_SLOTS(X, v) (SCM_SET_CELL_OBJECT_3 ((X), (v))) |