diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-02-19 13:42:45 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-02-19 13:42:45 -0800 |
commit | 9f95c7451b940b6644cb6fd6783ea9c17168357e (patch) | |
tree | d1443c9c4dc48bdc6bd67c7e16b43b9185d6d835 /030container.cc | |
parent | b83b2cfd6676e0caa18b39f22f01bdebf41c9d58 (diff) | |
download | mu-9f95c7451b940b6644cb6fd6783ea9c17168357e.tar.gz |
2685
Stack of plans for cleaning up replace_type_ingredients() and a couple of other things, from main problem to subproblems: include type names in the type_tree rather than in the separate properties vector make type_tree and string_tree real cons cells, with separate leaf nodes redo the vocabulary for dumping various objects: do we really need to_string and debug_string? can we have a version with *all* information? can we have to_string not call debug_string? This commit nibbles at the edges of the final task, switching from member method syntax to global function like almost everything else. I'm mostly using methods just for STL in this project.
Diffstat (limited to '030container.cc')
-rw-r--r-- | 030container.cc | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/030container.cc b/030container.cc index 15e6471f..e88b0692 100644 --- a/030container.cc +++ b/030container.cc @@ -133,7 +133,7 @@ put(Recipe_ordinal, "get", GET); :(before "End Primitive Recipe Checks") case GET: { if (SIZE(inst.ingredients) != 2) { - raise_error << maybe(get(Recipe, r).name) << "'get' expects exactly 2 ingredients in '" << inst.to_string() << "'\n" << end(); + raise_error << maybe(get(Recipe, r).name) << "'get' expects exactly 2 ingredients in '" << to_string(inst) << "'\n" << end(); break; } reagent base = inst.ingredients.at(0); // new copy for every invocation @@ -173,7 +173,7 @@ case GET: { // Update GET base in Run long long int base_address = base.value; if (base_address == 0) { - raise_error << maybe(current_recipe_name()) << "tried to access location 0 in '" << current_instruction().to_string() << "'\n" << end(); + raise_error << maybe(current_recipe_name()) << "tried to access location 0 in '" << to_string(current_instruction()) << "'\n" << end(); break; } type_ordinal base_type = base.type->value; @@ -270,7 +270,7 @@ put(Recipe_ordinal, "get-address", GET_ADDRESS); :(before "End Primitive Recipe Checks") case GET_ADDRESS: { if (SIZE(inst.ingredients) != 2) { - raise_error << maybe(get(Recipe, r).name) << "'get-address' expects exactly 2 ingredients in '" << inst.to_string() << "'\n" << end(); + raise_error << maybe(get(Recipe, r).name) << "'get-address' expects exactly 2 ingredients in '" << to_string(inst) << "'\n" << end(); break; } reagent base = inst.ingredients.at(0); @@ -314,7 +314,7 @@ case GET_ADDRESS: { // Update GET_ADDRESS base in Run long long int base_address = base.value; if (base_address == 0) { - raise_error << maybe(current_recipe_name()) << "tried to access location 0 in '" << current_instruction().to_string() << "'\n" << end(); + raise_error << maybe(current_recipe_name()) << "tried to access location 0 in '" << to_string(current_instruction()) << "'\n" << end(); break; } type_ordinal base_type = base.type->value; @@ -550,11 +550,11 @@ void check_or_set_invalid_types(const recipe_ordinal r) { instruction& inst = caller.steps.at(index); for (long long int i = 0; i < SIZE(inst.ingredients); ++i) { check_or_set_invalid_types(inst.ingredients.at(i).type, inst.ingredients.at(i).properties.at(0).second, - maybe(caller.name), "'"+inst.to_string()+"'"); + maybe(caller.name), "'"+to_string(inst)+"'"); } for (long long int i = 0; i < SIZE(inst.products); ++i) { check_or_set_invalid_types(inst.products.at(i).type, inst.products.at(i).properties.at(0).second, - maybe(caller.name), "'"+inst.to_string()+"'"); + maybe(caller.name), "'"+to_string(inst)+"'"); } } // End check_or_set_invalid_types @@ -613,11 +613,11 @@ void check_invalid_types(const recipe_ordinal r) { const instruction& inst = get(Recipe, r).steps.at(index); for (long long int i = 0; i < SIZE(inst.ingredients); ++i) { check_invalid_types(inst.ingredients.at(i).type, - maybe(get(Recipe, r).name), "'"+inst.to_string()+"'"); + maybe(get(Recipe, r).name), "'"+to_string(inst)+"'"); } for (long long int i = 0; i < SIZE(inst.products); ++i) { check_invalid_types(inst.products.at(i).type, - maybe(get(Recipe, r).name), "'"+inst.to_string()+"'"); + maybe(get(Recipe, r).name), "'"+to_string(inst)+"'"); } } } @@ -752,19 +752,19 @@ void check_merge_calls(const recipe_ordinal r) { const instruction& inst = caller.steps.at(i); if (inst.name != "merge") continue; if (SIZE(inst.products) != 1) { - raise_error << maybe(caller.name) << "'merge' should yield a single product in '" << inst.to_string() << "'\n" << end(); + raise_error << maybe(caller.name) << "'merge' should yield a single product in '" << to_string(inst) << "'\n" << end(); continue; } reagent product = inst.products.at(0); // Update product While Type-checking Merge type_ordinal product_type = product.type->value; if (product_type == 0 || !contains_key(Type, product_type)) { - raise_error << maybe(caller.name) << "'merge' should yield a container in '" << inst.to_string() << "'\n" << end(); + raise_error << maybe(caller.name) << "'merge' should yield a container in '" << to_string(inst) << "'\n" << end(); continue; } const type_info& info = get(Type, product_type); if (info.kind != CONTAINER && info.kind != EXCLUSIVE_CONTAINER) { - raise_error << maybe(caller.name) << "'merge' should yield a container in '" << inst.to_string() << "'\n" << end(); + raise_error << maybe(caller.name) << "'merge' should yield a container in '" << to_string(inst) << "'\n" << end(); continue; } check_merge_call(inst.ingredients, product, caller, inst); @@ -779,7 +779,7 @@ void check_merge_call(const vector<reagent>& ingredients, const reagent& product assert(!state.data.empty()); trace(9999, "transform") << ingredient_index << " vs " << SIZE(ingredients) << end(); if (ingredient_index >= SIZE(ingredients)) { - raise_error << maybe(caller.name) << "too few ingredients in '" << inst.to_string() << "'\n" << end(); + raise_error << maybe(caller.name) << "too few ingredients in '" << to_string(inst) << "'\n" << end(); return; } reagent& container = state.data.top().container; @@ -796,7 +796,7 @@ void check_merge_call(const vector<reagent>& ingredients, const reagent& product state.data.pop(); if (state.data.empty()) { if (ingredient_index < SIZE(ingredients)) - raise_error << maybe(caller.name) << "too many ingredients in '" << inst.to_string() << "'\n" << end(); + raise_error << maybe(caller.name) << "too many ingredients in '" << to_string(inst) << "'\n" << end(); return; } ++state.data.top().container_element_index; @@ -812,7 +812,7 @@ void check_merge_call(const vector<reagent>& ingredients, const reagent& product // End valid_merge Cases default: { if (!types_coercible(container, ingredients.at(ingredient_index))) { - raise_error << maybe(caller.name) << "incorrect type of ingredient " << ingredient_index << " in '" << inst.to_string() << "'\n" << end(); + raise_error << maybe(caller.name) << "incorrect type of ingredient " << ingredient_index << " in '" << to_string(inst) << "'\n" << end(); cerr << " expected " << debug_string(container) << '\n'; cerr << " got " << debug_string(ingredients.at(ingredient_index)) << '\n'; return; @@ -823,7 +823,7 @@ void check_merge_call(const vector<reagent>& ingredients, const reagent& product state.data.pop(); if (state.data.empty()) { if (ingredient_index < SIZE(ingredients)) - raise_error << maybe(caller.name) << "too many ingredients in '" << inst.to_string() << "'\n" << end(); + raise_error << maybe(caller.name) << "too many ingredients in '" << to_string(inst) << "'\n" << end(); return; } ++state.data.top().container_element_index; |