|
|
@ -13,11 +13,56 @@ int get_type_by_name(struct context* ctx, const char* name); |
|
|
|
static void list_words(struct context* ctx) { |
|
|
|
struct native_fn* nit; |
|
|
|
struct fn* dit; |
|
|
|
int i; |
|
|
|
for(nit = ctx->native_words; nit != ctx->native_words + ctx->native_words_top; ++nit) { |
|
|
|
fprintf(stdout, "%s\n", nit->name); |
|
|
|
const struct ink_array* name = ink_get_value(ctx, nit->name); |
|
|
|
for (i = 0; i < name->top; ++i) { |
|
|
|
const struct elem a = name->elements[i]; |
|
|
|
if(a.value <= 0x7F) { |
|
|
|
ctx->putchar(ctx, a.value); |
|
|
|
} else if(a.value <= 0x7FF) { |
|
|
|
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 192); |
|
|
|
ctx->putchar(ctx, (a.value & 0x3F) | 128); |
|
|
|
} else if(a.value <= 0xFFFF) { |
|
|
|
ctx->putchar(ctx, ((a.value & 0x3F000) >> 12) | 224); |
|
|
|
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 128); |
|
|
|
ctx->putchar(ctx, (a.value & 0x3F) | 128); |
|
|
|
} else if(a.value <= 0x10FFFF) { |
|
|
|
ctx->putchar(ctx, ((a.value & 0x3C0000) >> 18) | 240); |
|
|
|
ctx->putchar(ctx, ((a.value & 0x3F000) >> 12) | 128); |
|
|
|
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 128); |
|
|
|
ctx->putchar(ctx, (a.value & 0x3F) | 128); |
|
|
|
} else { |
|
|
|
ctx->panic = -9472; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
ctx->putchar(ctx, '\n'); |
|
|
|
} |
|
|
|
for(dit = ctx->words; dit != ctx->words + ctx->words_top; ++dit) { |
|
|
|
fprintf(stdout, "%s\n", dit->name); |
|
|
|
const struct ink_array* name = ink_get_value(ctx, dit->name); |
|
|
|
for (i = 0; i < name->top; ++i) { |
|
|
|
const struct elem a = name->elements[i]; |
|
|
|
if(a.value <= 0x7F) { |
|
|
|
ctx->putchar(ctx, a.value); |
|
|
|
} else if(a.value <= 0x7FF) { |
|
|
|
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 192); |
|
|
|
ctx->putchar(ctx, (a.value & 0x3F) | 128); |
|
|
|
} else if(a.value <= 0xFFFF) { |
|
|
|
ctx->putchar(ctx, ((a.value & 0x3F000) >> 12) | 224); |
|
|
|
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 128); |
|
|
|
ctx->putchar(ctx, (a.value & 0x3F) | 128); |
|
|
|
} else if(a.value <= 0x10FFFF) { |
|
|
|
ctx->putchar(ctx, ((a.value & 0x3C0000) >> 18) | 240); |
|
|
|
ctx->putchar(ctx, ((a.value & 0x3F000) >> 12) | 128); |
|
|
|
ctx->putchar(ctx, ((a.value & 0xFC0) >> 6) | 128); |
|
|
|
ctx->putchar(ctx, (a.value & 0x3F) | 128); |
|
|
|
} else { |
|
|
|
ctx->panic = -9472; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
ctx->putchar(ctx, '\n'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|