2004-07-16 02:26:21 -04:00
|
|
|
typedef struct {
|
|
|
|
/* always tag_header(SBUF_TYPE) */
|
|
|
|
CELL header;
|
|
|
|
/* untagged */
|
|
|
|
CELL top;
|
2004-11-27 22:26:05 -05:00
|
|
|
/* tagged */
|
|
|
|
CELL string;
|
2004-12-10 21:46:42 -05:00
|
|
|
} F_SBUF;
|
2004-07-16 02:26:21 -04:00
|
|
|
|
2004-12-10 21:46:42 -05:00
|
|
|
INLINE F_SBUF* untag_sbuf(CELL tagged)
|
2004-07-16 02:26:21 -04:00
|
|
|
{
|
|
|
|
type_check(SBUF_TYPE,tagged);
|
2004-12-10 21:46:42 -05:00
|
|
|
return (F_SBUF*)UNTAG(tagged);
|
2004-07-16 02:26:21 -04:00
|
|
|
}
|
|
|
|
|
2004-12-10 21:46:42 -05:00
|
|
|
F_SBUF* sbuf(F_FIXNUM capacity);
|
2004-07-16 02:26:21 -04:00
|
|
|
|
|
|
|
void primitive_sbuf(void);
|
|
|
|
void primitive_sbuf_length(void);
|
|
|
|
void primitive_set_sbuf_length(void);
|
|
|
|
void primitive_sbuf_nth(void);
|
2004-12-10 21:46:42 -05:00
|
|
|
void sbuf_ensure_capacity(F_SBUF* sbuf, F_FIXNUM top);
|
|
|
|
void set_sbuf_nth(F_SBUF* sbuf, CELL index, uint16_t value);
|
2004-07-16 02:26:21 -04:00
|
|
|
void primitive_set_sbuf_nth(void);
|
2004-12-10 21:46:42 -05:00
|
|
|
void sbuf_append_string(F_SBUF* sbuf, F_STRING* string);
|
2004-07-16 02:26:21 -04:00
|
|
|
void primitive_sbuf_append(void);
|
|
|
|
void primitive_sbuf_to_string(void);
|
2004-08-25 20:51:19 -04:00
|
|
|
void primitive_sbuf_reverse(void);
|
|
|
|
void primitive_sbuf_clone(void);
|
2004-12-10 21:46:42 -05:00
|
|
|
bool sbuf_eq(F_SBUF* s1, F_SBUF* s2);
|
2004-08-12 01:07:22 -04:00
|
|
|
void primitive_sbuf_eq(void);
|
2004-09-26 21:34:25 -04:00
|
|
|
void primitive_sbuf_hashcode(void);
|
2004-12-10 21:46:42 -05:00
|
|
|
void fixup_sbuf(F_SBUF* sbuf);
|
|
|
|
void collect_sbuf(F_SBUF* sbuf);
|