about summary refs log tree commit diff stats
path: root/022boolean.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-09-28 23:36:39 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-09-28 23:36:39 -0700
commitbb58e1797e8a813891d2ba8ceabcfb518c6f8050 (patch)
tree38ac76c87f12339766189621db31ec01017d9539 /022boolean.cc
parent86a6c9cd8952b4600f648519a64a86156d1a3e10 (diff)
downloadmu-bb58e1797e8a813891d2ba8ceabcfb518c6f8050.tar.gz
2214
Diffstat (limited to '022boolean.cc')
-rw-r--r--022boolean.cc123
1 files changed, 0 insertions, 123 deletions
diff --git a/022boolean.cc b/022boolean.cc
deleted file mode 100644
index ead678cf..00000000
--- a/022boolean.cc
+++ /dev/null
@@ -1,123 +0,0 @@
-//: Boolean primitives
-
-:(before "End Primitive Recipe Declarations")
-AND,
-:(before "End Primitive Recipe Numbers")
-Recipe_ordinal["and"] = AND;
-:(before "End Primitive Recipe Implementations")
-case AND: {
-  bool result = true;
-  for (long long int i = 0; i < SIZE(ingredients); ++i) {
-    if (!scalar(ingredients.at(i))) {
-      raise << current_recipe_name() << ": 'and' requires boolean ingredients, but got " << current_instruction().ingredients.at(i).original_string << '\n' << end();
-      goto finish_instruction;
-    }
-    result = result && ingredients.at(i).at(0);
-  }
-  products.resize(1);
-  products.at(0).push_back(result);
-  break;
-}
-
-:(scenario and)
-recipe main [
-  1:boolean <- copy 1
-  2:boolean <- copy 0
-  3:boolean <- and 1:boolean, 2:boolean
-]
-+mem: storing 0 in location 3
-
-:(scenario and_2)
-recipe main [
-  1:boolean <- and 1, 1
-]
-+mem: storing 1 in location 1
-
-:(scenario and_multiple)
-recipe main [
-  1:boolean <- and 1, 1, 0
-]
-+mem: storing 0 in location 1
-
-:(scenario and_multiple_2)
-recipe main [
-  1:boolean <- and 1, 1, 1
-]
-+mem: storing 1 in location 1
-
-:(before "End Primitive Recipe Declarations")
-OR,
-:(before "End Primitive Recipe Numbers")
-Recipe_ordinal["or"] = OR;
-:(before "End Primitive Recipe Implementations")
-case OR: {
-  bool result = false;
-  for (long long int i = 0; i < SIZE(ingredients); ++i) {
-    if (!scalar(ingredients.at(i))) {
-      raise << current_recipe_name() << ": 'or' requires boolean ingredients, but got " << current_instruction().ingredients.at(i).original_string << '\n' << end();
-      goto finish_instruction;
-    }
-    result = result || ingredients.at(i).at(0);
-  }
-  products.resize(1);
-  products.at(0).push_back(result);
-  break;
-}
-
-:(scenario or)
-recipe main [
-  1:boolean <- copy 1
-  2:boolean <- copy 0
-  3:boolean <- or 1:boolean, 2:boolean
-]
-+mem: storing 1 in location 3
-
-:(scenario or_2)
-recipe main [
-  1:boolean <- or 0, 0
-]
-+mem: storing 0 in location 1
-
-:(scenario or_multiple)
-recipe main [
-  1:boolean <- and 0, 0, 0
-]
-+mem: storing 0 in location 1
-
-:(scenario or_multiple_2)
-recipe main [
-  1:boolean <- or 0, 0, 1
-]
-+mem: storing 1 in location 1
-
-:(before "End Primitive Recipe Declarations")
-NOT,
-:(before "End Primitive Recipe Numbers")
-Recipe_ordinal["not"] = NOT;
-:(before "End Primitive Recipe Implementations")
-case NOT: {
-  products.resize(SIZE(ingredients));
-  for (long long int i = 0; i < SIZE(ingredients); ++i) {
-    if (!scalar(ingredients.at(i))) {
-      raise << current_recipe_name() << ": 'not' requires boolean ingredients, but got " << current_instruction().ingredients.at(i).original_string << '\n' << end();
-      goto finish_instruction;
-    }
-    products.at(i).push_back(!ingredients.at(i).at(0));
-  }
-  break;
-}
-
-:(scenario not)
-recipe main [
-  1:boolean <- copy 1
-  2:boolean <- not 1:boolean
-]
-+mem: storing 0 in location 2
-
-:(scenario not_multiple)
-recipe main [
-  1:boolean, 2:boolean, 3:boolean <- not 1, 0, 1
-]
-+mem: storing 0 in location 1
-+mem: storing 1 in location 2
-+mem: storing 0 in location 3