#define array_count_pair(type, ...) (const type []){__VA_ARGS__}, sizeof((const type []){__VA_ARGS__})/sizeof(type)
static void test_read_cstring(void) {
#define array_count_pair(type, ...) (const type []){__VA_ARGS__}, sizeof((const type []){__VA_ARGS__})/sizeof(type)
static void test_read_cstring(void) {
#define cs (*csp)
#define verify_quotechar(correct, correct_continuation_offset, quotechar) do { \
const size_t s = sizeof(correct)-1; \
#define cs (*csp)
#define verify_quotechar(correct, correct_continuation_offset, quotechar) do { \
const size_t s = sizeof(correct)-1; \
//Check a series of hex escapes
verify("\x50\x35\x12\xEF\xFE\x12\x45", 32);
//Check a series of hex escapes
verify("\x50\x35\x12\xEF\xFE\x12\x45", 32);
ok(i==e, "Is message queue correct?");
ok(!queue_count(mq), "Message queue should be empty now.");
}
ok(i==e, "Is message queue correct?");
ok(!queue_count(mq), "Message queue should be empty now.");
}
};
#define T(txt, ...) {txt, sizeof(txt)-1, array_count_pair(struct token, __VA_ARGS__)}
};
#define T(txt, ...) {txt, sizeof(txt)-1, array_count_pair(struct token, __VA_ARGS__)}
#define opkw(v) {.opkw = (v)}
#define txt(t) .txt = (t), .txt_size = sizeof(t)-1
#define integer(...) {.integer={__VA_ARGS__}}
#define floating(...) {.floating={__VA_ARGS__}}
#define space {.type = TOK_WHITE, .txt = " ", .txt_size = 1}
#define startline {.type = TOK_STARTLINE}
#define opkw(v) {.opkw = (v)}
#define txt(t) .txt = (t), .txt_size = sizeof(t)-1
#define integer(...) {.integer={__VA_ARGS__}}
#define floating(...) {.floating={__VA_ARGS__}}
#define space {.type = TOK_WHITE, .txt = " ", .txt_size = 1}
#define startline {.type = TOK_STARTLINE}
#define M(...) array_count_pair(const char *, __VA_ARGS__)
struct tokenizer_test tokenizer_tests[] = {
#define M(...) array_count_pair(const char *, __VA_ARGS__)
struct tokenizer_test tokenizer_tests[] = {
if (tl->orig != txt || tl->orig_size != txt_size)
failed("tokenize() did not replicate orig/orig_size from arguments");
if (tl->orig != txt || tl->orig_size != txt_size)
failed("tokenize() did not replicate orig/orig_size from arguments");
- if (tok_gen->string.size != tok_correct->string.size ||
- memcmp(tok_gen->string.item, tok_correct->string.item,
- tok_gen->string.size) ||
- tok_gen->string.item[tok_gen->string.size] != 0 )
+ if (tok_gen->string->size != tok_correct->string->size ||
+ memcmp(tok_gen->string->item, tok_correct->string->item,
+ tok_gen->string->size) ||
+ tok_gen->string->item[tok_gen->string->size] != 0 )
static void test_tokenizer_file(const char *file_name, tok_message_queue *mq) {
FILE *f = fopen(file_name, "rb");
static void test_tokenizer_file(const char *file_name, tok_message_queue *mq) {
FILE *f = fopen(file_name, "rb");
- array_realloc(text, text.size+inc+1);
- read_len = fread(text.item+text.size, 1, inc, f);
- text.size += read_len;
- text.item[text.size] = 0;
+ darray_realloc(*text, text->size+inc+1);
+ read_len = fread(text->item+text->size, 1, inc, f);
+ text->size += read_len;
+ text->item[text->size] = 0;
tl->filename = file_name;
//printf("File '%s' has %zu tokens\n", file_name, token_list_count(tl));
tl->filename = file_name;
//printf("File '%s' has %zu tokens\n", file_name, token_list_count(tl));