static qcint prog_enterfunction(qc_program *prog, prog_section_function *func)
{
qc_exec_stack st;
- size_t p, parampos;
+ size_t parampos;
+ int32_t p;
/* back up locals */
st.localsp = vec_size(prog->localstack);
return 0;
}
+static int qc_stof(qc_program *prog)
+{
+ char buffer[512];
+ qcany *str;
+ qcany num;
+ CheckArgs(1);
+ str = GetArg(0);
+ num._float = strtof(prog_getstring(prog, str->string), NULL);
+ Return(num);
+ return 0;
+}
+
static int qc_vtos(qc_program *prog)
{
char buffer[512];
qcany *vec, len;
CheckArgs(1);
vec = GetArg(0);
- len._float = sqrt(vec->vector[0] * vec->vector[0] +
+ len._float = sqrt(vec->vector[0] * vec->vector[0] +
vec->vector[1] * vec->vector[1] +
vec->vector[2] * vec->vector[2]);
Return(len);
&qc_vtos, /* 5 */
&qc_error, /* 6 */
&qc_vlen, /* 7 */
- &qc_etos /* 8 */
+ &qc_etos, /* 8 */
+ &qc_stof /* 9 */
};
static size_t qc_builtins_count = sizeof(qc_builtins) / sizeof(qc_builtins[0]);
size_t xflags = VMXF_DEFAULT;
bool opts_printfields = false;
bool opts_printdefs = false;
+ bool opts_printfuns = false;
bool opts_disasm = false;
bool opts_info = false;
++argv;
opts_printdefs = true;
}
+ else if (!strcmp(argv[1], "-printfuns")) {
+ --argc;
+ ++argv;
+ opts_printfuns = true;
+ }
else if (!strcmp(argv[1], "-printfields")) {
--argc;
++argv;
prog->builtins_count = qc_builtins_count;
if (opts_info) {
- printf("Program's system-checksum = 0x%04x\n", (int)prog->crc16);
- printf("Entity field space: %i\n", (int)prog->entityfields);
+ printf("Program's system-checksum = 0x%04x\n", (unsigned int)prog->crc16);
+ printf("Entity field space: %u\n", (unsigned int)prog->entityfields);
+ printf("Globals: %u\n", (unsigned int)vec_size(prog->globals));
}
for (i = 1; i < vec_size(prog->functions); ++i) {
(unsigned int)prog->fields[i].offset);
}
}
+ else if (opts_printfuns) {
+ for (i = 0; i < vec_size(prog->functions); ++i) {
+ int32_t a;
+ printf("Function: %-16s taking %i parameters:",
+ prog_getstring(prog, prog->functions[i].name),
+ (unsigned int)prog->functions[i].nargs);
+ for (a = 0; a < prog->functions[i].nargs; ++a) {
+ printf(" %i", prog->functions[i].argsize[a]);
+ }
+ printf(" firstlocal: %i\n", prog->functions[i].firstlocal);
+ }
+ }
else
{
if (fnmain > 0)