]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - exec.c
Nicer -trace output in qcvm/exec
[xonotic/gmqcc.git] / exec.c
diff --git a/exec.c b/exec.c
index 52ce15e0529e04cfd059f9931242b1ccafb3fbd8..ea226c9bc59d1eb57c9568ef2310848bbb29e977 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -338,7 +338,11 @@ static void trace_print_global(qc_program *prog, unsigned int glob, int vtype)
     value = (qcany*)(&prog->globals[glob]);
 
     if (def) {
-        len = printf("[%s] ", prog_getstring(prog, def->name));
+        const char *name = prog_getstring(prog, def->name);
+        if (name[0] == '#')
+            len = printf("$");
+        else
+            len = printf("%s ", name);
         vtype = def->type;
     }
     else
@@ -350,7 +354,7 @@ static void trace_print_global(qc_program *prog, unsigned int glob, int vtype)
         case TYPE_FIELD:
         case TYPE_FUNCTION:
         case TYPE_POINTER:
-            len += printf("%i,", value->_int);
+            len += printf("(%i),", value->_int);
             break;
         case TYPE_VECTOR:
             len += printf("'%g %g %g',", value->vector[0],
@@ -610,6 +614,8 @@ cleanup:
  */
 
 #if defined(QCVM_EXECUTOR)
+#include <math.h>
+
 const char *type_name[TYPE_COUNT] = {
     "void",
     "string",
@@ -703,14 +709,27 @@ static int qc_kill(qc_program *prog)
     return 0;
 }
 
+static int qc_vlen(qc_program *prog)
+{
+    qcany *vec, len;
+    CheckArgs(1);
+    vec = GetArg(0);
+    len._float = sqrt(vec->vector[0] * vec->vector[0] + 
+                      vec->vector[1] * vec->vector[1] +
+                      vec->vector[2] * vec->vector[2]);
+    Return(len);
+    return 0;
+}
+
 static prog_builtin qc_builtins[] = {
     NULL,
-    &qc_print,
-    &qc_ftos,
-    &qc_spawn,
-    &qc_kill,
-    &qc_vtos,
-    &qc_error
+    &qc_print, /*   1   */
+    &qc_ftos,  /*   2   */
+    &qc_spawn, /*   3   */
+    &qc_kill,  /*   4   */
+    &qc_vtos,  /*   5   */
+    &qc_error, /*   6   */
+    &qc_vlen   /*   7   */
 };
 static size_t qc_builtins_count = sizeof(qc_builtins) / sizeof(qc_builtins[0]);