about summary refs log tree commit diff stats
path: root/cpp/027call_reply
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-04-17 11:00:56 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-04-17 11:00:56 -0700
commitc495d2ac7ca0d7f1c1a9bbb7d1ad5072a7eface5 (patch)
tree95db0f8d742a87eba6c15833d0ac9b982e98174d /cpp/027call_reply
parent353a452e691a8b55e28d7b3b1d09cf294265eba0 (diff)
downloadmu-c495d2ac7ca0d7f1c1a9bbb7d1ad5072a7eface5.tar.gz
1075
Diffstat (limited to 'cpp/027call_reply')
-rw-r--r--cpp/027call_reply70
1 files changed, 0 insertions, 70 deletions
diff --git a/cpp/027call_reply b/cpp/027call_reply
deleted file mode 100644
index b44552cc..00000000
--- a/cpp/027call_reply
+++ /dev/null
@@ -1,70 +0,0 @@
-//: Calls can also generate results, using 'reply'.
-:(scenario "reply")
-recipe main [
-  3:integer, 4:integer <- f 2:literal
-]
-recipe f [
-  12:integer <- next-ingredient
-  13:integer <- add 1:literal, 12:integer
-  reply 12:integer, 13:integer
-]
-+run: instruction main/0
-+run: result 0 is 2
-+mem: storing 2 in location 3
-+run: result 1 is 3
-+mem: storing 3 in location 4
-
-:(before "End Primitive Recipe Declarations")
-REPLY,
-:(before "End Primitive Recipe Numbers")
-Recipe_number["reply"] = REPLY;
-:(before "End Primitive Recipe Implementations")
-case REPLY: {
-  vector<vector<int> > callee_results;
-  for (size_t i = 0; i < instructions[pc].ingredients.size(); ++i) {
-    callee_results.push_back(read_memory(instructions[pc].ingredients[i]));
-  }
-  rr.calls.pop();
-  assert(!rr.calls.empty());
-  size_t& caller_pc = rr.calls.top().pc;
-  instruction& caller_instruction = Recipe[rr.calls.top().running_recipe].steps[caller_pc];
-  assert(caller_instruction.products.size() <= callee_results.size());
-  for (size_t i = 0; i < caller_instruction.products.size(); ++i) {
-    trace("run") << "result " << i << " is " << to_string(callee_results[i]);
-    write_memory(caller_instruction.products[i], callee_results[i]);
-  }
-  ++caller_pc;
-  break;
-}
-
-//: Results can include containers and exclusive containers, addresses and arrays.
-:(scenario "reply_container")
-recipe main [
-  3:point <- f 2:literal
-]
-recipe f [
-  12:integer <- next-ingredient
-  13:integer <- copy 35:literal
-  reply 12:point
-]
-+run: instruction main/0
-+run: result 0 is [2, 35]
-+mem: storing 2 in location 3
-+mem: storing 35 in location 4
-
-:(code)
-string to_string(const vector<int>& in) {
-  if (in.empty()) return "[]";
-  ostringstream out;
-  if (in.size() == 1) {
-    out << in[0];
-    return out.str();
-  }
-  out << "[";
-  for (size_t i = 0; i < in.size(); ++i) {
-    if (i > 0) out << ", ";
-    out << in[i];
-  }
-  out << "]";
-  return out.str();
-}