From fda4f09181db880dc5199d191161d75d8b9ad2b4 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sat, 19 Mar 2016 09:14:25 -0700 Subject: 2795 - quick hacks for Caleb It turns out that my extensible stash doesn't yet work well in all situations. If you try to stash an array, you end up trying to create an array local that's not statically sized -- a no-no. Bah, just throw it all out. --- 071rewrite_stash.cc | 50 -------------------------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 071rewrite_stash.cc (limited to '071rewrite_stash.cc') diff --git a/071rewrite_stash.cc b/071rewrite_stash.cc deleted file mode 100644 index ea7c140f..00000000 --- a/071rewrite_stash.cc +++ /dev/null @@ -1,50 +0,0 @@ -//: when encountering other types, try to convert them to strings using -//: 'to-text' - -:(scenarios transform) -:(scenario rewrite_stashes_to_text) -recipe main [ - local-scope - n:number <- copy 34 - stash n -] -+transform: stash_2_0:address:shared:array:character <- to-text-line n -+transform: stash stash_2_0:address:shared:array:character - -:(before "End Instruction Inserting/Deleting Transforms") -Transform.push_back(rewrite_stashes_to_text); - -:(code) -void rewrite_stashes_to_text(recipe_ordinal r) { - recipe& caller = get(Recipe, r); - trace(9991, "transform") << "--- rewrite 'stash' instructions in recipe " << caller.name << end(); - // in recipes without named locations, 'stash' is still not extensible - if (contains_numeric_locations(caller)) return; - rewrite_stashes_to_text(caller); -} - -void rewrite_stashes_to_text(recipe& caller) { - vector new_instructions; - for (int i = 0; i < SIZE(caller.steps); ++i) { - instruction& inst = caller.steps.at(i); - if (inst.name == "stash") { - for (int j = 0; j < SIZE(inst.ingredients); ++j) { - if (is_literal(inst.ingredients.at(j))) continue; - if (is_mu_string(inst.ingredients.at(j))) continue; - instruction def; - def.name = "to-text-line"; - def.ingredients.push_back(inst.ingredients.at(j)); - ostringstream ingredient_name; - ingredient_name << "stash_" << i << '_' << j << ":address:shared:array:character"; - def.products.push_back(reagent(ingredient_name.str())); - trace(9993, "transform") << to_string(def) << end(); - new_instructions.push_back(def); - inst.ingredients.at(j).clear(); // reclaim old memory - inst.ingredients.at(j) = reagent(ingredient_name.str()); - } - } - trace(9993, "transform") << to_string(inst) << end(); - new_instructions.push_back(inst); - } - caller.steps.swap(new_instructions); -} -- cgit 1.4.1-2-gfad0 cc?h=main&id=d36ae5651435a477e34d9e1338ee3ca79d949b1c'>085scenario_console.cc