*** empty log message ***
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: misc.h,v 1.5 2005-06-08 16:00:51 bacon Exp $
|
||||
* $Id: misc.h,v 1.6 2005-06-08 16:05:41 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_STX_MISC_H_
|
||||
@ -31,21 +31,6 @@
|
||||
#include <xp/bas/assert.h>
|
||||
#include <xp/bas/stdarg.h>
|
||||
#include <xp/bas/ctype.h>
|
||||
|
||||
/*
|
||||
#define xp_assert xp_assert
|
||||
#define xp_malloc xp_malloc
|
||||
#define xp_realloc xp_realloc
|
||||
#define xp_free xp_free
|
||||
#define xp_va_list xp_va_list
|
||||
#define xp_va_start xp_va_start
|
||||
#define xp_va_end xp_va_end
|
||||
#define xp_va_arg xp_va_arg
|
||||
#define xp_isspace xp_isspace
|
||||
#define xp_isdigit xp_isdigit
|
||||
#define xp_isalpha xp_isalpha
|
||||
#define xp_isalnum xp_isalnum
|
||||
*/
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: object.c,v 1.23 2005-05-23 15:51:03 bacon Exp $
|
||||
* $Id: object.c,v 1.24 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/stx/object.h>
|
||||
@ -9,19 +9,19 @@
|
||||
#include <xp/stx/misc.h>
|
||||
|
||||
/* n: number of instance variables */
|
||||
xp_stx_word_t xp_stx_alloc_word_object (xp_stx_t* stx, xp_stx_word_t n)
|
||||
xp_word_t xp_stx_alloc_word_object (xp_stx_t* stx, xp_word_t n)
|
||||
{
|
||||
xp_stx_word_t idx;
|
||||
xp_word_t idx;
|
||||
xp_stx_word_object_t* obj;
|
||||
|
||||
/* bytes to allocidxed =
|
||||
* number of instance variables * word_size
|
||||
*/
|
||||
idx = xp_stx_memory_alloc (&stx->memory,
|
||||
n * xp_sizeof(xp_stx_word_t) + xp_sizeof(xp_stx_object_t));
|
||||
n * xp_sizeof(xp_word_t) + xp_sizeof(xp_stx_object_t));
|
||||
if (idx >= stx->memory.capacity) return idx; /* failed */
|
||||
|
||||
xp_stx_assert (stx->nil == XP_STX_NIL);
|
||||
xp_assert (stx->nil == XP_STX_NIL);
|
||||
|
||||
/*
|
||||
XP_STX_CLASS(stx,idx) = stx->nil;
|
||||
@ -37,16 +37,16 @@ xp_stx_word_t xp_stx_alloc_word_object (xp_stx_t* stx, xp_stx_word_t n)
|
||||
}
|
||||
|
||||
/* n: number of bytes */
|
||||
xp_stx_word_t xp_stx_alloc_byte_object (xp_stx_t* stx, xp_stx_word_t n)
|
||||
xp_word_t xp_stx_alloc_byte_object (xp_stx_t* stx, xp_word_t n)
|
||||
{
|
||||
xp_stx_word_t idx;
|
||||
xp_word_t idx;
|
||||
xp_stx_byte_object_t* obj;
|
||||
|
||||
idx = xp_stx_memory_alloc (
|
||||
&stx->memory, n + xp_sizeof(xp_stx_object_t));
|
||||
if (idx >= stx->memory.capacity) return idx; /* failed */
|
||||
|
||||
xp_stx_assert (stx->nil == XP_STX_NIL);
|
||||
xp_assert (stx->nil == XP_STX_NIL);
|
||||
|
||||
/*
|
||||
XP_STX_CLASS(stx,idx) = stx->nil;
|
||||
@ -61,84 +61,84 @@ xp_stx_word_t xp_stx_alloc_byte_object (xp_stx_t* stx, xp_stx_word_t n)
|
||||
return idx;
|
||||
}
|
||||
|
||||
xp_stx_word_t xp_stx_alloc_char_object (
|
||||
xp_stx_t* stx, const xp_stx_char_t* str)
|
||||
xp_word_t xp_stx_alloc_char_object (
|
||||
xp_stx_t* stx, const xp_char_t* str)
|
||||
{
|
||||
return xp_stx_alloc_char_objectx (stx, str, xp_stx_strlen(str));
|
||||
}
|
||||
|
||||
xp_stx_word_t xp_stx_alloc_char_objectx (
|
||||
xp_stx_t* stx, const xp_stx_char_t* str, xp_stx_word_t n)
|
||||
xp_word_t xp_stx_alloc_char_objectx (
|
||||
xp_stx_t* stx, const xp_char_t* str, xp_word_t n)
|
||||
{
|
||||
xp_stx_word_t idx;
|
||||
xp_word_t idx;
|
||||
xp_stx_char_object_t* obj;
|
||||
|
||||
idx = xp_stx_memory_alloc (&stx->memory,
|
||||
(n + 1) * xp_sizeof(xp_stx_char_t) + xp_sizeof(xp_stx_object_t));
|
||||
(n + 1) * xp_sizeof(xp_char_t) + xp_sizeof(xp_stx_object_t));
|
||||
if (idx >= stx->memory.capacity) return idx; /* failed */
|
||||
|
||||
xp_stx_assert (stx->nil == XP_STX_NIL);
|
||||
xp_assert (stx->nil == XP_STX_NIL);
|
||||
|
||||
/*
|
||||
XP_STX_CLASS(stx,idx) = stx->nil;
|
||||
XP_STX_ACCESS(stx,idx) = (n << 2) | XP_STX_CHAR_INDEXED;
|
||||
XP_STX_CHARAT(stx,idx,n) = XP_STX_CHAR('\0');
|
||||
XP_STX_ACCESS(stx,idx) = (n << 2) | XP_CHAR_INDEXED;
|
||||
XP_STX_CHARAT(stx,idx,n) = XP_CHAR('\0');
|
||||
while (n-- > 0) XP_STX_CHARAT(stx,idx,n) = str[n];
|
||||
*/
|
||||
obj = XP_STX_CHAR_OBJECT(stx,idx);
|
||||
obj = XP_CHAR_OBJECT(stx,idx);
|
||||
obj->header.class = stx->nil;
|
||||
obj->header.access = (n << 2) | XP_STX_CHAR_INDEXED;
|
||||
obj->data[n] = XP_STX_CHAR('\0');
|
||||
obj->header.access = (n << 2) | XP_CHAR_INDEXED;
|
||||
obj->data[n] = XP_CHAR('\0');
|
||||
while (n-- > 0) obj->data[n] = str[n];
|
||||
|
||||
return idx;
|
||||
}
|
||||
|
||||
xp_stx_word_t xp_stx_allocn_char_object (xp_stx_t* stx, ...)
|
||||
xp_word_t xp_stx_allocn_char_object (xp_stx_t* stx, ...)
|
||||
{
|
||||
xp_stx_word_t idx, n = 0;
|
||||
const xp_stx_char_t* p;
|
||||
xp_stx_va_list ap;
|
||||
xp_word_t idx, n = 0;
|
||||
const xp_char_t* p;
|
||||
xp_va_list ap;
|
||||
xp_stx_char_object_t* obj;
|
||||
|
||||
xp_stx_va_start (ap, stx);
|
||||
while ((p = xp_stx_va_arg(ap, const xp_stx_char_t*)) != XP_NULL) {
|
||||
xp_va_start (ap, stx);
|
||||
while ((p = xp_va_arg(ap, const xp_char_t*)) != XP_NULL) {
|
||||
n += xp_stx_strlen(p);
|
||||
}
|
||||
xp_stx_va_end (ap);
|
||||
xp_va_end (ap);
|
||||
|
||||
idx = xp_stx_memory_alloc (&stx->memory,
|
||||
(n + 1) * xp_sizeof(xp_stx_char_t) + xp_sizeof(xp_stx_object_t));
|
||||
(n + 1) * xp_sizeof(xp_char_t) + xp_sizeof(xp_stx_object_t));
|
||||
if (idx >= stx->memory.capacity) return idx; /* failed */
|
||||
|
||||
xp_stx_assert (stx->nil == XP_STX_NIL);
|
||||
xp_assert (stx->nil == XP_STX_NIL);
|
||||
|
||||
/*
|
||||
XP_STX_CLASS(stx,idx) = stx->nil;
|
||||
XP_STX_ACCESS(stx,idx) = (n << 2) | XP_STX_CHAR_INDEXED;
|
||||
XP_STX_CHARAT(stx,idx,n) = XP_STX_CHAR('\0');
|
||||
XP_STX_ACCESS(stx,idx) = (n << 2) | XP_CHAR_INDEXED;
|
||||
XP_STX_CHARAT(stx,idx,n) = XP_CHAR('\0');
|
||||
*/
|
||||
obj = XP_STX_CHAR_OBJECT(stx,idx);
|
||||
obj = XP_CHAR_OBJECT(stx,idx);
|
||||
obj->header.class = stx->nil;
|
||||
obj->header.access = (n << 2) | XP_STX_CHAR_INDEXED;
|
||||
obj->data[n] = XP_STX_CHAR('\0');
|
||||
obj->header.access = (n << 2) | XP_CHAR_INDEXED;
|
||||
obj->data[n] = XP_CHAR('\0');
|
||||
|
||||
xp_stx_va_start (ap, stx);
|
||||
xp_va_start (ap, stx);
|
||||
n = 0;
|
||||
while ((p = xp_stx_va_arg(ap, const xp_stx_char_t*)) != XP_NULL) {
|
||||
while (*p != XP_STX_CHAR('\0')) {
|
||||
while ((p = xp_va_arg(ap, const xp_char_t*)) != XP_NULL) {
|
||||
while (*p != XP_CHAR('\0')) {
|
||||
/*XP_STX_CHARAT(stx,idx,n++) = *p++;*/
|
||||
obj->data[n++] = *p++;
|
||||
}
|
||||
}
|
||||
xp_stx_va_end (ap);
|
||||
xp_va_end (ap);
|
||||
|
||||
return idx;
|
||||
}
|
||||
|
||||
xp_stx_word_t xp_stx_hash_char_object (xp_stx_t* stx, xp_stx_word_t idx)
|
||||
xp_word_t xp_stx_hash_char_object (xp_stx_t* stx, xp_word_t idx)
|
||||
{
|
||||
xp_stx_assert (XP_STX_TYPE(stx,idx) == XP_STX_CHAR_INDEXED);
|
||||
xp_assert (XP_STX_TYPE(stx,idx) == XP_CHAR_INDEXED);
|
||||
return xp_stx_strxhash (
|
||||
XP_STX_DATA(stx,idx), XP_STX_SIZE(stx,idx));
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: object.h,v 1.17 2005-05-23 15:51:03 bacon Exp $
|
||||
* $Id: object.h,v 1.18 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_STX_OBJECT_H_
|
||||
@ -15,17 +15,17 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
xp_stx_word_t xp_stx_alloc_word_object (xp_stx_t* stx, xp_stx_word_t n);
|
||||
xp_stx_word_t xp_stx_alloc_byte_object (xp_stx_t* stx, xp_stx_word_t n);
|
||||
xp_stx_word_t xp_stx_alloc_char_object (
|
||||
xp_stx_t* stx, const xp_stx_char_t* str);
|
||||
xp_stx_word_t xp_stx_alloc_char_objectx (
|
||||
xp_stx_t* stx, const xp_stx_char_t* str, xp_stx_word_t n);
|
||||
xp_stx_word_t xp_stx_allocn_char_object (xp_stx_t* stx, ...);
|
||||
xp_word_t xp_stx_alloc_word_object (xp_stx_t* stx, xp_word_t n);
|
||||
xp_word_t xp_stx_alloc_byte_object (xp_stx_t* stx, xp_word_t n);
|
||||
xp_word_t xp_stx_alloc_char_object (
|
||||
xp_stx_t* stx, const xp_char_t* str);
|
||||
xp_word_t xp_stx_alloc_char_objectx (
|
||||
xp_stx_t* stx, const xp_char_t* str, xp_word_t n);
|
||||
xp_word_t xp_stx_allocn_char_object (xp_stx_t* stx, ...);
|
||||
|
||||
xp_stx_word_t xp_stx_hash_char_object (xp_stx_t* stx, xp_stx_word_t idx);
|
||||
xp_word_t xp_stx_hash_char_object (xp_stx_t* stx, xp_word_t idx);
|
||||
int xp_stx_lookup_global (
|
||||
xp_stx_t* stx, xp_stx_word_t key, xp_stx_word_t* value);
|
||||
xp_stx_t* stx, xp_word_t key, xp_word_t* value);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: parser.c,v 1.23 2005-06-08 15:49:35 bacon Exp $
|
||||
* $Id: parser.c,v 1.24 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/stx/parser.h>
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
static int __parse_method (
|
||||
xp_stx_parser_t* parser,
|
||||
xp_stx_word_t method_class, void* input);
|
||||
xp_word_t method_class, void* input);
|
||||
static int __parse_message_pattern (xp_stx_parser_t* parser);
|
||||
static int __parse_temporaries (xp_stx_parser_t* parser);
|
||||
static int __parse_statements (xp_stx_parser_t* parser);
|
||||
@ -30,21 +30,21 @@ xp_stx_parser_t* xp_stx_parser_open (xp_stx_parser_t* parser, xp_stx_t* stx)
|
||||
{
|
||||
if (parser == XP_NULL) {
|
||||
parser = (xp_stx_parser_t*)
|
||||
xp_stx_malloc (xp_sizeof(xp_stx_parser_t));
|
||||
xp_malloc (xp_sizeof(xp_stx_parser_t));
|
||||
if (parser == XP_NULL) return XP_NULL;
|
||||
parser->__malloced = xp_true;
|
||||
}
|
||||
else parser->__malloced = xp_false;
|
||||
|
||||
if (xp_stx_token_open (&parser->token, 256) == XP_NULL) {
|
||||
if (parser->__malloced) xp_stx_free (parser);
|
||||
if (parser->__malloced) xp_free (parser);
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
parser->stx = stx;
|
||||
|
||||
parser->error_code = XP_STX_PARSER_ERROR_NONE;
|
||||
parser->curc = XP_STX_CHAR_EOF;
|
||||
parser->curc = XP_CHAR_EOF;
|
||||
parser->ungotc_count = 0;
|
||||
|
||||
parser->input_owner = XP_NULL;
|
||||
@ -55,7 +55,7 @@ xp_stx_parser_t* xp_stx_parser_open (xp_stx_parser_t* parser, xp_stx_t* stx)
|
||||
void xp_stx_parser_close (xp_stx_parser_t* parser)
|
||||
{
|
||||
xp_stx_token_close (&parser->token);
|
||||
if (parser->__malloced) xp_stx_free (parser);
|
||||
if (parser->__malloced) xp_free (parser);
|
||||
}
|
||||
|
||||
#define GET_CHAR(parser) \
|
||||
@ -73,7 +73,7 @@ void xp_stx_parser_close (xp_stx_parser_t* parser)
|
||||
} while (0)
|
||||
|
||||
int xp_stx_parser_parse_method (
|
||||
xp_stx_parser_t* parser, xp_stx_word_t method_class, void* input)
|
||||
xp_stx_parser_t* parser, xp_word_t method_class, void* input)
|
||||
{
|
||||
int n;
|
||||
|
||||
@ -90,7 +90,7 @@ int xp_stx_parser_parse_method (
|
||||
}
|
||||
|
||||
static int __parse_method (
|
||||
xp_stx_parser_t* parser, xp_stx_word_t method_class, void* input)
|
||||
xp_stx_parser_t* parser, xp_word_t method_class, void* input)
|
||||
{
|
||||
/*
|
||||
* <method definition> ::=
|
||||
@ -124,7 +124,7 @@ static int __parse_message_pattern (xp_stx_parser_t* parser)
|
||||
}
|
||||
else if (parser->token.type == XP_STX_TOKEN_KEYWORD) {
|
||||
/* keyword pattern */
|
||||
xp_stx_char_t* selector;
|
||||
xp_char_t* selector;
|
||||
}
|
||||
else {
|
||||
parser->error_code = XP_STX_PARSER_ERROR_MESSAGE_SELECTOR;
|
||||
@ -160,14 +160,14 @@ static inline xp_bool_t __is_binary_char (xp_cint_t c)
|
||||
*/
|
||||
|
||||
return
|
||||
c == XP_STX_CHAR('!') || c == XP_STX_CHAR('%') ||
|
||||
c == XP_STX_CHAR('&') || c == XP_STX_CHAR('*') ||
|
||||
c == XP_STX_CHAR('+') || c == XP_STX_CHAR(',') ||
|
||||
c == XP_STX_CHAR('/') || c == XP_STX_CHAR('<') ||
|
||||
c == XP_STX_CHAR('=') || c == XP_STX_CHAR('>') ||
|
||||
c == XP_STX_CHAR('?') || c == XP_STX_CHAR('@') ||
|
||||
c == XP_STX_CHAR('\\') || c == XP_STX_CHAR('|') ||
|
||||
c == XP_STX_CHAR('~') || c == XP_STX_CHAR('-');
|
||||
c == XP_CHAR('!') || c == XP_CHAR('%') ||
|
||||
c == XP_CHAR('&') || c == XP_CHAR('*') ||
|
||||
c == XP_CHAR('+') || c == XP_CHAR(',') ||
|
||||
c == XP_CHAR('/') || c == XP_CHAR('<') ||
|
||||
c == XP_CHAR('=') || c == XP_CHAR('>') ||
|
||||
c == XP_CHAR('?') || c == XP_CHAR('@') ||
|
||||
c == XP_CHAR('\\') || c == XP_CHAR('|') ||
|
||||
c == XP_CHAR('~') || c == XP_CHAR('-');
|
||||
}
|
||||
|
||||
static int __get_token (xp_stx_parser_t* parser)
|
||||
@ -176,7 +176,7 @@ static int __get_token (xp_stx_parser_t* parser)
|
||||
|
||||
do {
|
||||
if (__skip_spaces(parser) == -1) return -1;
|
||||
if (parser->curc == XP_STX_CHAR('"')) {
|
||||
if (parser->curc == XP_CHAR('"')) {
|
||||
GET_CHAR (parser);
|
||||
if (__skip_comment(parser) == -1) return -1;
|
||||
}
|
||||
@ -186,56 +186,56 @@ static int __get_token (xp_stx_parser_t* parser)
|
||||
c = parser->curc;
|
||||
xp_stx_token_clear (&parser->token);
|
||||
|
||||
if (c == XP_STX_CHAR_EOF) {
|
||||
if (c == XP_CHAR_EOF) {
|
||||
parser->token.type = XP_STX_TOKEN_END;
|
||||
}
|
||||
else if (xp_stx_isalpha(c)) {
|
||||
else if (xp_isalpha(c)) {
|
||||
if (__get_ident(parser) == -1) return -1;
|
||||
}
|
||||
else if (xp_stx_isdigit(c)) {
|
||||
else if (xp_isdigit(c)) {
|
||||
if (__get_numlit(parser, xp_false) == -1) return -1;
|
||||
}
|
||||
else if (c == XP_STX_CHAR('$')) {
|
||||
else if (c == XP_CHAR('$')) {
|
||||
GET_CHAR (parser);
|
||||
if (__get_charlit(parser) == -1) return -1;
|
||||
}
|
||||
else if (c == XP_STX_CHAR('\'')) {
|
||||
else if (c == XP_CHAR('\'')) {
|
||||
GET_CHAR (parser);
|
||||
if (__get_strlit(parser) == -1) return -1;
|
||||
}
|
||||
else if (c == XP_STX_CHAR(':')) {
|
||||
else if (c == XP_CHAR(':')) {
|
||||
parser->token.type = XP_STX_TOKEN_COLON;
|
||||
ADD_TOKEN_CHAR(parser, c);
|
||||
GET_CHAR (parser);
|
||||
|
||||
c = parser->curc;
|
||||
if (c == XP_STX_CHAR('=')) {
|
||||
if (c == XP_CHAR('=')) {
|
||||
parser->token.type = XP_STX_TOKEN_ASSIGN;
|
||||
ADD_TOKEN_CHAR(parser, c);
|
||||
GET_CHAR (parser);
|
||||
}
|
||||
}
|
||||
else if (c == XP_STX_CHAR('^')) {
|
||||
else if (c == XP_CHAR('^')) {
|
||||
parser->token.type = XP_STX_TOKEN_RETURN;
|
||||
ADD_TOKEN_CHAR(parser, c);
|
||||
GET_CHAR (parser);
|
||||
}
|
||||
else if (c == XP_STX_CHAR('|')) {
|
||||
else if (c == XP_CHAR('|')) {
|
||||
parser->token.type = XP_STX_TOKEN_BAR;
|
||||
ADD_TOKEN_CHAR(parser, c);
|
||||
GET_CHAR (parser);
|
||||
}
|
||||
else if (c == XP_STX_CHAR('[')) {
|
||||
else if (c == XP_CHAR('[')) {
|
||||
parser->token.type = XP_STX_TOKEN_LBRACKET;
|
||||
ADD_TOKEN_CHAR(parser, c);
|
||||
GET_CHAR (parser);
|
||||
}
|
||||
else if (c == XP_STX_CHAR(']')) {
|
||||
else if (c == XP_CHAR(']')) {
|
||||
parser->token.type = XP_STX_TOKEN_RBRACKET;
|
||||
ADD_TOKEN_CHAR(parser, c);
|
||||
GET_CHAR (parser);
|
||||
}
|
||||
else if (c == XP_STX_CHAR('.')) {
|
||||
else if (c == XP_CHAR('.')) {
|
||||
parser->token.type = XP_STX_TOKEN_PERIOD;
|
||||
ADD_TOKEN_CHAR(parser, c);
|
||||
GET_CHAR (parser);
|
||||
@ -265,9 +265,9 @@ static int __get_ident (xp_stx_parser_t* parser)
|
||||
ADD_TOKEN_CHAR(parser, c);
|
||||
GET_CHAR (parser);
|
||||
c = parser->curc;
|
||||
} while (xp_stx_isalnum(c));
|
||||
} while (xp_isalnum(c));
|
||||
|
||||
if (c == XP_STX_CHAR(':')) {
|
||||
if (c == XP_CHAR(':')) {
|
||||
parser->token.type = XP_STX_TOKEN_KEYWORD;
|
||||
GET_CHAR (parser);
|
||||
}
|
||||
@ -302,7 +302,7 @@ static int __get_numlit (xp_stx_parser_t* parser, xp_bool_t negated)
|
||||
ADD_TOKEN_CHAR(parser, c);
|
||||
GET_CHAR (parser);
|
||||
c = parser->curc;
|
||||
} while (xp_stx_isalnum(c));
|
||||
} while (xp_isalnum(c));
|
||||
|
||||
/* TODO; more */
|
||||
return 0;
|
||||
@ -316,7 +316,7 @@ static int __get_charlit (xp_stx_parser_t* parser)
|
||||
*/
|
||||
|
||||
xp_cint_t c = parser->curc; /* even a new-line or white space would be taken */
|
||||
if (c == XP_STX_CHAR_EOF) {
|
||||
if (c == XP_CHAR_EOF) {
|
||||
parser->error_code = XP_STX_PARSER_ERROR_CHARLIT;
|
||||
return -1;
|
||||
}
|
||||
@ -346,15 +346,15 @@ static int __get_strlit (xp_stx_parser_t* parser)
|
||||
GET_CHAR (parser);
|
||||
c = parser->curc;
|
||||
|
||||
if (c == XP_STX_CHAR_EOF) {
|
||||
if (c == XP_CHAR_EOF) {
|
||||
parser->error_code = XP_STX_PARSER_ERROR_STRLIT;
|
||||
return -1;
|
||||
}
|
||||
} while (c != XP_STX_CHAR('\''));
|
||||
} while (c != XP_CHAR('\''));
|
||||
|
||||
GET_CHAR (parser);
|
||||
c = parser->curc;
|
||||
} while (c == XP_STX_CHAR('\''));
|
||||
} while (c == XP_CHAR('\''));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -369,9 +369,9 @@ static int __get_binary (xp_stx_parser_t* parser)
|
||||
|
||||
ADD_TOKEN_CHAR (parser, c);
|
||||
|
||||
if (c == XP_STX_CHAR('<')) {
|
||||
if (c == XP_CHAR('<')) {
|
||||
/*
|
||||
const xp_stx_char_t* p = XP_TEXT("primitive:");
|
||||
const xp_char_t* p = XP_TEXT("primitive:");
|
||||
|
||||
do {
|
||||
GET_CHAR (parser);
|
||||
@ -380,10 +380,10 @@ static int __get_binary (xp_stx_parser_t* parser)
|
||||
} while (*c)
|
||||
*/
|
||||
}
|
||||
else if (c == XP_STX_CHAR('-')) {
|
||||
else if (c == XP_CHAR('-')) {
|
||||
GET_CHAR (parser);
|
||||
c = parser->curc;
|
||||
if (xp_stx_isdigit(c)) return __get_numlit(parser,xp_true);
|
||||
if (xp_isdigit(c)) return __get_numlit(parser,xp_true);
|
||||
}
|
||||
else {
|
||||
GET_CHAR (parser);
|
||||
@ -401,13 +401,13 @@ static int __get_binary (xp_stx_parser_t* parser)
|
||||
|
||||
static int __skip_spaces (xp_stx_parser_t* parser)
|
||||
{
|
||||
while (xp_stx_isspace(parser->curc)) GET_CHAR (parser);
|
||||
while (xp_isspace(parser->curc)) GET_CHAR (parser);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __skip_comment (xp_stx_parser_t* parser)
|
||||
{
|
||||
while (parser->curc != XP_STX_CHAR('"')) GET_CHAR (parser);
|
||||
while (parser->curc != XP_CHAR('"')) GET_CHAR (parser);
|
||||
GET_CHAR (parser);
|
||||
return 0;
|
||||
}
|
||||
@ -448,7 +448,7 @@ static int __open_input (xp_stx_parser_t* parser, void* input)
|
||||
}
|
||||
|
||||
parser->error_code = XP_STX_PARSER_ERROR_NONE;
|
||||
parser->curc = XP_STX_CHAR_EOF;
|
||||
parser->curc = XP_CHAR_EOF;
|
||||
parser->ungotc_count = 0;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: parser.h,v 1.13 2005-06-08 03:19:31 bacon Exp $
|
||||
* $Id: parser.h,v 1.14 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_STX_PARSER_H_
|
||||
@ -44,8 +44,8 @@ struct xp_stx_parser_t
|
||||
int error_code;
|
||||
xp_stx_token_t token;
|
||||
|
||||
xp_stx_cint_t curc;
|
||||
xp_stx_cint_t ungotc[5];
|
||||
xp_cint_t curc;
|
||||
xp_cint_t ungotc[5];
|
||||
xp_size_t ungotc_count;
|
||||
|
||||
void* input_owner;
|
||||
@ -62,7 +62,7 @@ xp_stx_parser_t* xp_stx_parser_open (xp_stx_parser_t* parser, xp_stx_t* stx);
|
||||
void xp_stx_parser_close (xp_stx_parser_t* parser);
|
||||
|
||||
int xp_stx_parser_parse_method (
|
||||
xp_stx_parser_t* parser, xp_stx_word_t method_class, void* input);
|
||||
xp_stx_parser_t* parser, xp_word_t method_class, void* input);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -1,22 +1,22 @@
|
||||
/*
|
||||
* $Id: stx.c,v 1.29 2005-05-25 16:44:05 bacon Exp $
|
||||
* $Id: stx.c,v 1.30 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/stx/stx.h>
|
||||
#include <xp/stx/memory.h>
|
||||
#include <xp/stx/misc.h>
|
||||
|
||||
xp_stx_t* xp_stx_open (xp_stx_t* stx, xp_stx_word_t capacity)
|
||||
xp_stx_t* xp_stx_open (xp_stx_t* stx, xp_word_t capacity)
|
||||
{
|
||||
if (stx == XP_NULL) {
|
||||
stx = (xp_stx_t*)xp_stx_malloc (xp_sizeof(stx));
|
||||
stx = (xp_stx_t*)xp_malloc (xp_sizeof(stx));
|
||||
if (stx == XP_NULL) return XP_NULL;
|
||||
stx->__malloced = xp_true;
|
||||
}
|
||||
else stx->__malloced = xp_false;
|
||||
|
||||
if (xp_stx_memory_open (&stx->memory, capacity) == XP_NULL) {
|
||||
if (stx->__malloced) xp_stx_free (stx);
|
||||
if (stx->__malloced) xp_free (stx);
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
@ -43,6 +43,6 @@ xp_stx_t* xp_stx_open (xp_stx_t* stx, xp_stx_word_t capacity)
|
||||
void xp_stx_close (xp_stx_t* stx)
|
||||
{
|
||||
xp_stx_memory_close (&stx->memory);
|
||||
if (stx->__malloced) xp_stx_free (stx);
|
||||
if (stx->__malloced) xp_free (stx);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: stx.h,v 1.25 2005-06-08 15:49:35 bacon Exp $
|
||||
* $Id: stx.h,v 1.26 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_STX_STX_H_
|
||||
@ -8,11 +8,6 @@
|
||||
#include <xp/types.h>
|
||||
#include <xp/macros.h>
|
||||
|
||||
typedef xp_byte_t xp_byte_t;
|
||||
typedef xp_char_t xp_char_t;
|
||||
typedef xp_cint_t xp_stx_cint_t;
|
||||
typedef xp_word_t xp_word_t;
|
||||
|
||||
typedef struct xp_stx_objhdr_t xp_stx_objhdr_t;
|
||||
typedef struct xp_stx_object_t xp_stx_object_t;
|
||||
typedef struct xp_stx_word_object_t xp_stx_word_object_t;
|
||||
@ -21,10 +16,6 @@ typedef struct xp_stx_char_object_t xp_stx_char_object_t;
|
||||
typedef struct xp_stx_memory_t xp_stx_memory_t;
|
||||
typedef struct xp_stx_t xp_stx_t;
|
||||
|
||||
#define XP_STX_CHAR(x) XP_CHAR(x)
|
||||
#define XP_STX_TEXT(x) XP_TEXT(x)
|
||||
#define XP_STX_CHAR_EOF XP_CHAR_EOF
|
||||
|
||||
/* common object structure */
|
||||
struct xp_stx_objhdr_t
|
||||
{
|
||||
@ -90,8 +81,6 @@ struct xp_stx_t
|
||||
xp_bool_t __wantabort; /* TODO: make it a function pointer */
|
||||
};
|
||||
|
||||
typedef xp_stx_cint_t (*xp_stx_getc_t) (void*);
|
||||
|
||||
#define XP_STX_NIL 0
|
||||
#define XP_STX_TRUE 1
|
||||
#define XP_STX_FALSE 2
|
||||
@ -105,13 +94,13 @@ typedef xp_stx_cint_t (*xp_stx_getc_t) (void*);
|
||||
#define XP_STX_SIZE(stx,idx) (XP_STX_ACCESS(stx,idx) >> 0x02)
|
||||
#define XP_STX_WORD_INDEXED (0x00)
|
||||
#define XP_STX_BYTE_INDEXED (0x01)
|
||||
#define XP_STX_CHAR_INDEXED (0x02)
|
||||
#define XP_CHAR_INDEXED (0x02)
|
||||
|
||||
#define XP_STX_WORD_OBJECT(stx,idx) \
|
||||
((xp_stx_word_object_t*)XP_STX_OBJECT(stx,idx))
|
||||
#define XP_STX_BYTE_OBJECT(stx,idx) \
|
||||
((xp_stx_byte_object_t*)XP_STX_OBJECT(stx,idx))
|
||||
#define XP_STX_CHAR_OBJECT(stx,idx) \
|
||||
#define XP_CHAR_OBJECT(stx,idx) \
|
||||
((xp_stx_char_object_t*)XP_STX_OBJECT(stx,idx))
|
||||
|
||||
#define XP_STX_WORDAT(stx,idx,n) \
|
||||
|
@ -1,14 +1,14 @@
|
||||
/*
|
||||
* $Id: symbol.c,v 1.8 2005-05-29 16:51:16 bacon Exp $
|
||||
* $Id: symbol.c,v 1.9 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/stx/symbol.h>
|
||||
#include <xp/stx/object.h>
|
||||
#include <xp/stx/misc.h>
|
||||
|
||||
xp_stx_word_t xp_stx_new_symlink (xp_stx_t* stx, xp_stx_word_t sym)
|
||||
xp_word_t xp_stx_new_symlink (xp_stx_t* stx, xp_word_t sym)
|
||||
{
|
||||
xp_stx_word_t x;
|
||||
xp_word_t x;
|
||||
|
||||
x = xp_stx_alloc_word_object (stx, XP_STX_SYMLINK_SIZE);
|
||||
XP_STX_CLASS(stx,x) = stx->class_symlink;
|
||||
@ -18,9 +18,9 @@ xp_stx_word_t xp_stx_new_symlink (xp_stx_t* stx, xp_stx_word_t sym)
|
||||
return x;
|
||||
}
|
||||
|
||||
xp_stx_word_t xp_stx_new_symbol (xp_stx_t* stx, const xp_stx_char_t* name)
|
||||
xp_word_t xp_stx_new_symbol (xp_stx_t* stx, const xp_char_t* name)
|
||||
{
|
||||
xp_stx_word_t x, hash, table, link, next;
|
||||
xp_word_t x, hash, table, link, next;
|
||||
|
||||
table = stx->symbol_table;
|
||||
hash = xp_stx_strhash(name) % XP_STX_SIZE(stx,table);
|
||||
@ -34,7 +34,7 @@ xp_stx_word_t xp_stx_new_symbol (xp_stx_t* stx, const xp_stx_char_t* name)
|
||||
else {
|
||||
do {
|
||||
x = XP_STX_WORDAT(stx,link,XP_STX_SYMLINK_SYMBOL);
|
||||
xp_stx_assert (XP_STX_CLASS(stx,x) == stx->class_symbol);
|
||||
xp_assert (XP_STX_CLASS(stx,x) == stx->class_symbol);
|
||||
|
||||
if (xp_stx_strxcmp (
|
||||
&XP_STX_CHARAT(stx,x,0),
|
||||
@ -56,10 +56,10 @@ xp_stx_word_t xp_stx_new_symbol (xp_stx_t* stx, const xp_stx_char_t* name)
|
||||
return x;
|
||||
}
|
||||
|
||||
xp_stx_word_t xp_stx_new_symbolx (
|
||||
xp_stx_t* stx, const xp_stx_char_t* name, xp_stx_word_t len)
|
||||
xp_word_t xp_stx_new_symbolx (
|
||||
xp_stx_t* stx, const xp_char_t* name, xp_word_t len)
|
||||
{
|
||||
xp_stx_word_t x, hash, table, link, next;
|
||||
xp_word_t x, hash, table, link, next;
|
||||
|
||||
table = stx->symbol_table;
|
||||
hash = xp_stx_strhash(name) % XP_STX_SIZE(stx,table);
|
||||
@ -73,7 +73,7 @@ xp_stx_word_t xp_stx_new_symbolx (
|
||||
else {
|
||||
do {
|
||||
x = XP_STX_WORDAT(stx,link,XP_STX_SYMLINK_SYMBOL);
|
||||
xp_stx_assert (XP_STX_CLASS(stx,x) == stx->class_symbol);
|
||||
xp_assert (XP_STX_CLASS(stx,x) == stx->class_symbol);
|
||||
|
||||
if (xp_stx_strxcmp (
|
||||
&XP_STX_CHARAT(stx,x,0),
|
||||
@ -95,11 +95,11 @@ xp_stx_word_t xp_stx_new_symbolx (
|
||||
return x;
|
||||
}
|
||||
|
||||
xp_stx_word_t xp_stx_new_symbol_pp (
|
||||
xp_stx_t* stx, const xp_stx_char_t* name,
|
||||
const xp_stx_char_t* prefix, const xp_stx_char_t* postfix)
|
||||
xp_word_t xp_stx_new_symbol_pp (
|
||||
xp_stx_t* stx, const xp_char_t* name,
|
||||
const xp_char_t* prefix, const xp_char_t* postfix)
|
||||
{
|
||||
xp_stx_word_t x, hash, table, link, next;
|
||||
xp_word_t x, hash, table, link, next;
|
||||
|
||||
table = stx->symbol_table;
|
||||
hash = xp_stx_strhash(name) % XP_STX_SIZE(stx,table);
|
||||
@ -113,7 +113,7 @@ xp_stx_word_t xp_stx_new_symbol_pp (
|
||||
else {
|
||||
do {
|
||||
x = XP_STX_WORDAT(stx,link,XP_STX_SYMLINK_SYMBOL);
|
||||
xp_stx_assert (XP_STX_CLASS(stx,x) == stx->class_symbol);
|
||||
xp_assert (XP_STX_CLASS(stx,x) == stx->class_symbol);
|
||||
|
||||
if (xp_stx_strxcmp (
|
||||
&XP_STX_CHARAT(stx,x,0),
|
||||
@ -137,11 +137,11 @@ xp_stx_word_t xp_stx_new_symbol_pp (
|
||||
}
|
||||
|
||||
void xp_stx_traverse_symbol_table (
|
||||
xp_stx_t* stx, void (*func) (xp_stx_t*,xp_stx_word_t))
|
||||
xp_stx_t* stx, void (*func) (xp_stx_t*,xp_word_t))
|
||||
{
|
||||
xp_stx_word_t link;
|
||||
xp_stx_word_t size;
|
||||
xp_stx_word_t table;
|
||||
xp_word_t link;
|
||||
xp_word_t size;
|
||||
xp_word_t table;
|
||||
|
||||
table = stx->symbol_table;
|
||||
size = XP_STX_SIZE(stx,table);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: symbol.h,v 1.5 2005-05-23 15:51:03 bacon Exp $
|
||||
* $Id: symbol.h,v 1.6 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_STX_SYMBOL_H_
|
||||
@ -14,8 +14,8 @@
|
||||
struct xp_stx_symlink_t
|
||||
{
|
||||
xp_stx_objhdr_t header;
|
||||
xp_stx_word_t link;
|
||||
xp_stx_word_t symbol;
|
||||
xp_word_t link;
|
||||
xp_word_t symbol;
|
||||
};
|
||||
|
||||
typedef struct xp_stx_symlink_t xp_stx_symlink_t;
|
||||
@ -24,18 +24,18 @@ typedef struct xp_stx_symlink_t xp_stx_symlink_t;
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
xp_stx_word_t xp_stx_new_symbol_link (xp_stx_t* stx, xp_stx_word_t sym);
|
||||
xp_word_t xp_stx_new_symbol_link (xp_stx_t* stx, xp_word_t sym);
|
||||
|
||||
xp_stx_word_t xp_stx_new_symbol (
|
||||
xp_stx_t* stx, const xp_stx_char_t* name);
|
||||
xp_stx_word_t xp_stx_new_symbolx (
|
||||
xp_stx_t* stx, const xp_stx_char_t* name, xp_stx_word_t len);
|
||||
xp_word_t xp_stx_new_symbol (
|
||||
xp_stx_t* stx, const xp_char_t* name);
|
||||
xp_word_t xp_stx_new_symbolx (
|
||||
xp_stx_t* stx, const xp_char_t* name, xp_word_t len);
|
||||
|
||||
xp_stx_word_t xp_stx_new_symbol_pp (
|
||||
xp_stx_t* stx, const xp_stx_char_t* name,
|
||||
const xp_stx_char_t* prefix, const xp_stx_char_t* postfix);
|
||||
xp_word_t xp_stx_new_symbol_pp (
|
||||
xp_stx_t* stx, const xp_char_t* name,
|
||||
const xp_char_t* prefix, const xp_char_t* postfix);
|
||||
void xp_stx_traverse_symbol_table (
|
||||
xp_stx_t* stx, void (*func) (xp_stx_t*,xp_stx_word_t));
|
||||
xp_stx_t* stx, void (*func) (xp_stx_t*,xp_word_t));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -1,27 +1,27 @@
|
||||
/*
|
||||
* $Id: token.c,v 1.4 2005-05-30 15:01:01 bacon Exp $
|
||||
* $Id: token.c,v 1.5 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <xp/stx/token.h>
|
||||
#include <xp/stx/misc.h>
|
||||
|
||||
xp_stx_token_t* xp_stx_token_open (
|
||||
xp_stx_token_t* token, xp_stx_word_t capacity)
|
||||
xp_stx_token_t* token, xp_word_t capacity)
|
||||
{
|
||||
xp_stx_assert (capacity > 0);
|
||||
xp_assert (capacity > 0);
|
||||
|
||||
if (token == XP_NULL) {
|
||||
token = (xp_stx_token_t*)
|
||||
xp_stx_malloc (xp_sizeof(xp_stx_token_t));
|
||||
xp_malloc (xp_sizeof(xp_stx_token_t));
|
||||
if (token == XP_NULL) return XP_NULL;
|
||||
token->__malloced = xp_true;
|
||||
}
|
||||
else token->__malloced = xp_false;
|
||||
|
||||
token->buffer = (xp_stx_char_t*)
|
||||
xp_stx_malloc ((capacity + 1) * xp_sizeof(xp_stx_char_t));
|
||||
token->buffer = (xp_char_t*)
|
||||
xp_malloc ((capacity + 1) * xp_sizeof(xp_char_t));
|
||||
if (token->buffer == XP_NULL) {
|
||||
if (token->__malloced) xp_stx_free (token);
|
||||
if (token->__malloced) xp_free (token);
|
||||
return XP_NULL;
|
||||
}
|
||||
|
||||
@ -32,30 +32,30 @@ xp_stx_token_t* xp_stx_token_open (
|
||||
|
||||
token->size = 0;
|
||||
token->capacity = capacity;
|
||||
token->buffer[0] = XP_STX_CHAR('\0');
|
||||
token->buffer[0] = XP_CHAR('\0');
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
void xp_stx_token_close (xp_stx_token_t* token)
|
||||
{
|
||||
xp_stx_free (token->buffer);
|
||||
if (token->__malloced) xp_stx_free (token);
|
||||
xp_free (token->buffer);
|
||||
if (token->__malloced) xp_free (token);
|
||||
}
|
||||
|
||||
int xp_stx_token_addc (xp_stx_token_t* token, xp_stx_cint_t c)
|
||||
int xp_stx_token_addc (xp_stx_token_t* token, xp_cint_t c)
|
||||
{
|
||||
if (token->size >= token->capacity) {
|
||||
/* double the capacity. */
|
||||
xp_stx_char_t* space = (xp_stx_char_t*)xp_stx_realloc (
|
||||
token->buffer, (token->capacity * 2 + 1) * xp_sizeof(xp_stx_char_t));
|
||||
xp_char_t* space = (xp_char_t*)xp_realloc (
|
||||
token->buffer, (token->capacity * 2 + 1) * xp_sizeof(xp_char_t));
|
||||
if (space == XP_NULL) return -1;
|
||||
token->buffer = space;
|
||||
token->capacity = token->capacity * 2;
|
||||
}
|
||||
|
||||
token->buffer[token->size++] = c;
|
||||
token->buffer[token->size] = XP_STX_CHAR('\0');
|
||||
token->buffer[token->size] = XP_CHAR('\0');
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -67,30 +67,30 @@ void xp_stx_token_clear (xp_stx_token_t* token)
|
||||
*/
|
||||
|
||||
token->size = 0;
|
||||
token->buffer[0] = XP_STX_CHAR('\0');
|
||||
token->buffer[0] = XP_CHAR('\0');
|
||||
}
|
||||
|
||||
xp_stx_char_t* xp_stx_token_yield (xp_stx_token_t* token, xp_stx_word_t capacity)
|
||||
xp_char_t* xp_stx_token_yield (xp_stx_token_t* token, xp_word_t capacity)
|
||||
{
|
||||
xp_stx_char_t* old_buffer, * new_buffer;
|
||||
xp_char_t* old_buffer, * new_buffer;
|
||||
|
||||
new_buffer = (xp_stx_char_t*)
|
||||
xp_stx_malloc((capacity + 1) * xp_sizeof(xp_stx_char_t));
|
||||
new_buffer = (xp_char_t*)
|
||||
xp_malloc((capacity + 1) * xp_sizeof(xp_char_t));
|
||||
if (new_buffer == XP_NULL) return XP_NULL;
|
||||
|
||||
old_buffer = token->buffer;
|
||||
token->buffer = new_buffer;
|
||||
token->size = 0;
|
||||
token->capacity = capacity;
|
||||
token->buffer[0] = XP_STX_CHAR('\0');
|
||||
token->buffer[0] = XP_CHAR('\0');
|
||||
|
||||
return old_buffer;
|
||||
}
|
||||
|
||||
int xp_stx_token_compare (xp_stx_token_t* token, const xp_stx_char_t* str)
|
||||
int xp_stx_token_compare (xp_stx_token_t* token, const xp_char_t* str)
|
||||
{
|
||||
xp_stx_char_t* p = token->buffer;
|
||||
xp_stx_word_t index = 0;
|
||||
xp_char_t* p = token->buffer;
|
||||
xp_word_t index = 0;
|
||||
|
||||
while (index < token->size) {
|
||||
if (*p > *str) return 1;
|
||||
@ -98,5 +98,5 @@ int xp_stx_token_compare (xp_stx_token_t* token, const xp_stx_char_t* str)
|
||||
index++; p++; str++;
|
||||
}
|
||||
|
||||
return (*str == XP_STX_CHAR('\0'))? 0: -1;
|
||||
return (*str == XP_CHAR('\0'))? 0: -1;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: token.h,v 1.8 2005-06-08 15:49:35 bacon Exp $
|
||||
* $Id: token.h,v 1.9 2005-06-08 16:00:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _XP_STX_TOKEN_H_
|
||||
@ -35,9 +35,9 @@ struct xp_stx_token_t
|
||||
xp_stx_real_t fvalue;
|
||||
*/
|
||||
|
||||
xp_stx_word_t capacity;
|
||||
xp_stx_word_t size;
|
||||
xp_stx_char_t* buffer;
|
||||
xp_word_t capacity;
|
||||
xp_word_t size;
|
||||
xp_char_t* buffer;
|
||||
|
||||
xp_bool_t __malloced;
|
||||
};
|
||||
@ -49,13 +49,13 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
xp_stx_token_t* xp_stx_token_open (
|
||||
xp_stx_token_t* token, xp_stx_word_t capacity);
|
||||
xp_stx_token_t* token, xp_word_t capacity);
|
||||
void xp_stx_token_close (xp_stx_token_t* token);
|
||||
|
||||
int xp_stx_token_addc (xp_stx_token_t* token, xp_stx_cint_t c);
|
||||
int xp_stx_token_addc (xp_stx_token_t* token, xp_cint_t c);
|
||||
void xp_stx_token_clear (xp_stx_token_t* token);
|
||||
xp_stx_char_t* xp_stx_token_yield (xp_stx_token_t* token, xp_stx_word_t capacity);
|
||||
int xp_stx_token_compare (xp_stx_token_t* token, const xp_stx_char_t* str);
|
||||
xp_char_t* xp_stx_token_yield (xp_stx_token_t* token, xp_word_t capacity);
|
||||
int xp_stx_token_compare (xp_stx_token_t* token, const xp_char_t* str);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
Reference in New Issue
Block a user