&qc_sqrt, /* 13 */
&qc_floor /* 14 */
};
-static size_t qc_builtins_count = sizeof(qc_builtins) / sizeof(qc_builtins[0]);
static const char *arg0 = NULL;
}
}
-static void escapestring(char* dest, const char* src) {
- char c;
- while ((c = *(src++))) {
- switch(c) {
- case '\t':
- *(dest++) = '\\', *(dest++) = 't';
- break;
- case '\n':
- *(dest++) = '\\', *(dest++) = 'n';
- break;
- case '\r':
- *(dest++) = '\\', *(dest++) = 'r';
- break;
- case '\\':
- *(dest++) = '\\', *(dest++) = '\\';
- break;
- case '\"':
- *(dest++) = '\\', *(dest++) = '\"';
- break;
- default:
- *(dest++) = c;
- }
- }
- *dest = '\0';
-}
-
void prog_disasm_function(qc_program_t *prog, size_t id);
int main(int argc, char **argv) {
}
prog->builtins = qc_builtins;
- prog->builtins_count = qc_builtins_count;
+ prog->builtins_count = GMQCC_ARRAY_COUNT(qc_builtins);
if (opts_info) {
printf("Program's system-checksum = 0x%04x\n", (unsigned int)prog->crc16);
return 0;
}
if (opts_printdefs) {
- char *escape = NULL;
const char *getstring = NULL;
-
for (i = 0; i < vec_size(prog->defs); ++i) {
printf("Global: %8s %-16s at %u%s",
type_name[prog->defs[i].type & DEF_TYPEMASK],
break;
case TYPE_STRING:
getstring = prog_getstring(prog, ((qcany_t*)(prog->globals + prog->defs[i].offset))->string);
- escape = (char*)mem_a(strlen(getstring) * 2 + 1); /* will be enough */
- escapestring(escape, getstring);
- printf(" [init: `%s`]", escape);
-
- mem_d(escape); /* free */
+ printf(" [init: `");
+ print_escaped_string(getstring, strlen(getstring));
+ printf("`]\n");
break;
default:
break;
# define FLOAT_IS_TRUE_FOR_INT(x) ( (x) & 0x7FFFFFFF )
#endif
-while (1) {
+while (prog->vmerror == 0) {
prog_section_function_t *newf;
qcany_t *ed;
qcany_t *ptr;