about summary refs log tree commit diff stats
path: root/029debug.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-07-13 14:15:09 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-07-13 14:15:09 -0700
commit469524d6defc0c94c11b7aec9f9a724f01e58407 (patch)
tree04a5668dea46a0ff03479835129f889394e305a7 /029debug.cc
parentd5d908dda655c791329563522faad42d7e4ee618 (diff)
downloadmu-469524d6defc0c94c11b7aec9f9a724f01e58407.tar.gz
1767
Diffstat (limited to '029debug.cc')
-rw-r--r--029debug.cc105
1 files changed, 105 insertions, 0 deletions
diff --git a/029debug.cc b/029debug.cc
new file mode 100644
index 00000000..301cd01a
--- /dev/null
+++ b/029debug.cc
@@ -0,0 +1,105 @@
+//: Recipe to look at elements of containers.
+
+:(before "End Primitive Recipe Declarations")
+_PRINT,
+:(before "End Primitive Recipe Numbers")
+Recipe_ordinal["$print"] = _PRINT;
+:(before "End Primitive Recipe Implementations")
+case _PRINT: {
+  for (long long int i = 0; i < SIZE(ingredients); ++i) {
+    if (is_literal(current_instruction().ingredients.at(i))) {
+      trace(Primitive_recipe_depth, "run") << "$print: " << current_instruction().ingredients.at(i).name;
+      cout << current_instruction().ingredients.at(i).name;
+    }
+    else {
+      for (long long int j = 0; j < SIZE(ingredients.at(i)); ++j) {
+        trace(Primitive_recipe_depth, "run") << "$print: " << ingredients.at(i).at(j);
+        if (j > 0) cout << " ";
+        cout << ingredients.at(i).at(j);
+      }
+    }
+  }
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+_START_TRACING,
+:(before "End Primitive Recipe Numbers")
+Recipe_ordinal["$start-tracing"] = _START_TRACING;
+:(before "End Primitive Recipe Implementations")
+case _START_TRACING: {
+  if (current_instruction().ingredients.empty())
+    Trace_stream->dump_layer = "all";
+  else
+    Trace_stream->dump_layer = current_instruction().ingredients.at(0).name;
+//?   cout << Trace_stream << ": " << Trace_stream->dump_layer << '\n'; //? 1
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+_STOP_TRACING,
+:(before "End Primitive Recipe Numbers")
+Recipe_ordinal["$stop-tracing"] = _STOP_TRACING;
+:(before "End Primitive Recipe Implementations")
+case _STOP_TRACING: {
+  Trace_stream->dump_layer = "";
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+_CLOSE_TRACE,
+:(before "End Primitive Recipe Numbers")
+Recipe_ordinal["$close-trace"] = _CLOSE_TRACE;
+:(before "End Primitive Recipe Implementations")
+case _CLOSE_TRACE: {
+  if (Trace_stream) {
+    delete Trace_stream;
+    Trace_stream = NULL;
+  }
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+_EXIT,
+:(before "End Primitive Recipe Numbers")
+Recipe_ordinal["$exit"] = _EXIT;
+:(before "End Primitive Recipe Implementations")
+case _EXIT: {
+  exit(0);
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+_DUMP_TRACE,
+:(before "End Primitive Recipe Numbers")
+Recipe_ordinal["$dump-trace"] = _DUMP_TRACE;
+:(before "End Primitive Recipe Implementations")
+case _DUMP_TRACE: {
+  if (ingredients.empty()) {
+    DUMP("");
+  }
+  else {
+    DUMP(current_instruction().ingredients.at(0).name);
+  }
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+_CLEAR_TRACE,
+:(before "End Primitive Recipe Numbers")
+Recipe_ordinal["$clear-trace"] = _CLEAR_TRACE;
+:(before "End Primitive Recipe Implementations")
+case _CLEAR_TRACE: {
+  CLEAR_TRACE;
+  break;
+}
+
+:(before "End Primitive Recipe Declarations")
+_DUMP_MEMORY,
+:(before "End Primitive Recipe Numbers")
+Recipe_ordinal["$dump-memory"] = _DUMP_MEMORY;
+:(before "End Primitive Recipe Implementations")
+case _DUMP_MEMORY: {
+  dump_memory();
+  break;
+}