diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-07-13 14:15:09 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-07-13 14:15:09 -0700 |
commit | 469524d6defc0c94c11b7aec9f9a724f01e58407 (patch) | |
tree | 04a5668dea46a0ff03479835129f889394e305a7 /029debug.cc | |
parent | d5d908dda655c791329563522faad42d7e4ee618 (diff) | |
download | mu-469524d6defc0c94c11b7aec9f9a724f01e58407.tar.gz |
1767
Diffstat (limited to '029debug.cc')
-rw-r--r-- | 029debug.cc | 105 |
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; +} |