From 4690ce81e079fc58cae8d6d583e5e3eb3ed81a83 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Wed, 9 Mar 2016 02:56:27 -0800 Subject: 2743 Looks like "TOhtml | " doesn't work on Mac OS X for some reason.. --- html/035call_ingredient.cc.html | 108 +++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 58 deletions(-) (limited to 'html/035call_ingredient.cc.html') diff --git a/html/035call_ingredient.cc.html b/html/035call_ingredient.cc.html index 94021c56..bbfef56a 100644 --- a/html/035call_ingredient.cc.html +++ b/html/035call_ingredient.cc.html @@ -3,65 +3,58 @@ Mu - 035call_ingredient.cc - - + + - - + - - -
+
 //: Calls can take ingredients just like primitives. To access a recipe's
 //: ingredients, use 'next-ingredient'.
 
 :(scenario next_ingredient)
-recipe main [
+def main [
   f 2
 ]
-recipe f [
+def f [
   12:number <- next-ingredient
   13:number <- add 1, 12:number
 ]
 +mem: storing 3 in location 13
 
 :(scenario next_ingredient_missing)
-recipe main [
+def main [
   f
 ]
-recipe f [
+def f [
   _, 12:number <- next-ingredient
 ]
 +mem: storing 0 in location 12
 
 :(before "End call Fields")
-vector<vector<double> > ingredient_atoms;
+vector<vector<double> > ingredient_atoms;
 vector<reagent> ingredients;
-long long int next_ingredient_to_process;
+long long int next_ingredient_to_process;
 :(before "End call Constructor")
 next_ingredient_to_process = 0;
 
 :(before "End Call Housekeeping")
-for (long long int i = 0; i < SIZE(ingredients); ++i) {
+for (long long int i = 0; i < SIZE(ingredients); ++i) {
   current_call().ingredient_atoms.push_back(ingredients.at(i));
   reagent ingredient = call_instruction.ingredients.at(i);
   canonize_type(ingredient);
@@ -73,28 +66,28 @@ NEXT_INGREDIENT,
 :(before "End Primitive Recipe Numbers")
 put(Recipe_ordinal, "next-ingredient", NEXT_INGREDIENT);
 :(before "End Primitive Recipe Checks")
-case NEXT_INGREDIENT: {
-  if (!inst.ingredients.empty()) {
-    raise_error << maybe(get(Recipe, r).name) << "'next-ingredient' didn't expect any ingredients in '" << to_string(inst) << "'\n" << end();
+case NEXT_INGREDIENT: {
+  if (!inst.ingredients.empty()) {
+    raise << maybe(get(Recipe, r).name) << "'next-ingredient' didn't expect any ingredients in '" << to_string(inst) << "'\n" << end();
     break;
   }
   break;
 }
 :(before "End Primitive Recipe Implementations")
-case NEXT_INGREDIENT: {
+case NEXT_INGREDIENT: {
   assert(!Current_routine->calls.empty());
-  if (current_call().next_ingredient_to_process < SIZE(current_call().ingredient_atoms)) {
+  if (current_call().next_ingredient_to_process < SIZE(current_call().ingredient_atoms)) {
     reagent product = current_instruction().products.at(0);
     canonize_type(product);
-    if (current_recipe_name() == "main") {
+    if (current_recipe_name() == "main") {
       // no ingredient types since the call might be implicit; assume ingredients are always strings
       // todo: how to test this?
-      if (!is_mu_string(product))
-        raise_error << "main: wrong type for ingredient " << product.original_string << '\n' << end();
+      if (!is_mu_string(product))
+        raise << "main: wrong type for ingredient " << product.original_string << '\n' << end();
     }
-    else if (!types_coercible(product,
+    else if (!types_coercible(product,
                               current_call().ingredients.at(current_call().next_ingredient_to_process))) {
-      raise_error << maybe(current_recipe_name()) << "wrong type for ingredient " << product.original_string << '\n' << end();
+      raise << maybe(current_recipe_name()) << "wrong type for ingredient " << product.original_string << '\n' << end();
       // End next-ingredient Type Mismatch Error
     }
     products.push_back(
@@ -103,14 +96,14 @@ case NEXT_INGREDIENT: {
     products.at(1).push_back(1);
     ++current_call().next_ingredient_to_process;
   }
-  else {
-    if (SIZE(current_instruction().products) < 2)
-      raise_error << maybe(current_recipe_name()) << "no ingredient to save in " << current_instruction().products.at(0).original_string << '\n' << end();
-    if (current_instruction().products.empty()) break;
+  else {
+    if (SIZE(current_instruction().products) < 2)
+      raise << maybe(current_recipe_name()) << "no ingredient to save in " << current_instruction().products.at(0).original_string << '\n' << end();
+    if (current_instruction().products.empty()) break;
     products.resize(2);
     // pad the first product with sufficient zeros to match its type
-    long long int size = size_of(current_instruction().products.at(0));
-    for (long long int i = 0; i < size; ++i)
+    long long int size = size_of(current_instruction().products.at(0));
+    for (long long int i = 0; i < size; ++i)
       products.at(0).push_back(0);
     products.at(1).push_back(0);
   }
@@ -119,19 +112,19 @@ case NEXT_INGREDIENT: {
 
 :(scenario next_ingredient_fail_on_missing)
 % Hide_errors = true;
-recipe main [
+def main [
   f
 ]
-recipe f [
+def f [
   11:number <- next-ingredient
 ]
 +error: f: no ingredient to save in 11:number
 
 :(scenario rewind_ingredients)
-recipe main [
+def main [
   f 2
 ]
-recipe f [
+def f [
   12:number <- next-ingredient  # consume ingredient
   _, 1:boolean <- next-ingredient  # will not find any ingredients
   rewind-ingredients
@@ -147,20 +140,20 @@ REWIND_INGREDIENTS,
 :(before "End Primitive Recipe Numbers")
 put(Recipe_ordinal, "rewind-ingredients", REWIND_INGREDIENTS);
 :(before "End Primitive Recipe Checks")
-case REWIND_INGREDIENTS: {
+case REWIND_INGREDIENTS: {
   break;
 }
 :(before "End Primitive Recipe Implementations")
-case REWIND_INGREDIENTS: {
+case REWIND_INGREDIENTS: {
   current_call().next_ingredient_to_process = 0;
   break;
 }
 
 :(scenario ingredient)
-recipe main [
+def main [
   f 1, 2
 ]
-recipe f [
+def f [
   12:number <- ingredient 1  # consume second ingredient first
   13:number, 1:boolean <- next-ingredient  # next-ingredient tries to scan past that
 ]
@@ -172,20 +165,20 @@ INGREDIENT,
 :(before "End Primitive Recipe Numbers")
 put(Recipe_ordinal, "ingredient", INGREDIENT);
 :(before "End Primitive Recipe Checks")
-case INGREDIENT: {
-  if (SIZE(inst.ingredients) != 1) {
-    raise_error << maybe(get(Recipe, r).name) << "'ingredient' expects exactly one ingredient, but got '" << to_string(inst) << "'\n" << end();
+case INGREDIENT: {
+  if (SIZE(inst.ingredients) != 1) {
+    raise << maybe(get(Recipe, r).name) << "'ingredient' expects exactly one ingredient, but got '" << to_string(inst) << "'\n" << end();
     break;
   }
-  if (!is_literal(inst.ingredients.at(0)) && !is_mu_number(inst.ingredients.at(0))) {
-    raise_error << maybe(get(Recipe, r).name) << "'ingredient' expects a literal ingredient, but got " << inst.ingredients.at(0).original_string << '\n' << end();
+  if (!is_literal(inst.ingredients.at(0)) && !is_mu_number(inst.ingredients.at(0))) {
+    raise << maybe(get(Recipe, r).name) << "'ingredient' expects a literal ingredient, but got " << inst.ingredients.at(0).original_string << '\n' << end();
     break;
   }
   break;
 }
 :(before "End Primitive Recipe Implementations")
-case INGREDIENT: {
-  if (static_cast<long long int>(ingredients.at(0).at(0)) < SIZE(current_call().ingredient_atoms)) {
+case INGREDIENT: {
+  if (static_cast<long long int>(ingredients.at(0).at(0)) < SIZE(current_call().ingredient_atoms)) {
     current_call().next_ingredient_to_process = ingredients.at(0).at(0);
     products.push_back(
         current_call().ingredient_atoms.at(current_call().next_ingredient_to_process));
@@ -193,8 +186,8 @@ case INGREDIENT: {
     products.at(1).push_back(1);
     ++current_call().next_ingredient_to_process;
   }
-  else {
-    if (SIZE(current_instruction().products) > 1) {
+  else {
+    if (SIZE(current_instruction().products) > 1) {
       products.resize(2);
       products.at(0).push_back(0);  // todo: will fail noisily if we try to read a compound value
       products.at(1).push_back(0);
@@ -205,4 +198,3 @@ case INGREDIENT: {
 
- -- cgit 1.4.1-2-gfad0