about summary refs log tree commit diff stats
path: root/089scenario_filesystem.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-10-15 23:55:21 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-10-15 23:55:21 -0700
commit0893d65e27e00e123d8d4f58a4c50dabe32ae7fa (patch)
tree12197d8fe429f87aa6009428eb7db797f3820286 /089scenario_filesystem.cc
parentdd995c617438a28359ba9ecff46c09d9b0b77d25 (diff)
downloadmu-0893d65e27e00e123d8d4f58a4c50dabe32ae7fa.tar.gz
3504
Diffstat (limited to '089scenario_filesystem.cc')
-rw-r--r--089scenario_filesystem.cc116
1 files changed, 58 insertions, 58 deletions
diff --git a/089scenario_filesystem.cc b/089scenario_filesystem.cc
index 95880cce..6f65b06f 100644
--- a/089scenario_filesystem.cc
+++ b/089scenario_filesystem.cc
@@ -1,14 +1,14 @@
 //: Clean syntax to manipulate and check the file system in scenarios.
-//: Instructions 'assume-filesystem' and 'filesystem-should-contain' implicitly create
-//: a variable called 'filesystem' that is accessible to later instructions in
-//: the scenario. 'filesystem-should-contain' can check unicode characters in
-//: the fake filesystem
+//: Instructions 'assume-resources' and 'resources-should-contain' implicitly create
+//: a variable called 'resources' that is accessible to later instructions in
+//: the scenario. 'resources-should-contain' can check unicode characters in
+//: the fake resources
 
 :(scenarios run_mu_scenario)
 :(scenario simple_filesystem)
 scenario simple-filesystem [
   local-scope
-  assume-filesystem [
+  assume-resources [
     # file 'a' containing two lines of data
     [a] <- [
       |a bc|
@@ -20,18 +20,18 @@ scenario simple-filesystem [
       |xyz|
     ]
   ]
-  data:&:@:file-mapping <- get *filesystem, data:offset
-  file1:file-mapping <- index *data, 0
+  data:&:@:resource <- get *resources, data:offset
+  file1:resource <- index *data, 0
   file1-name:text <- get file1, name:offset
   10:@:char/raw <- copy *file1-name
   file1-contents:text <- get file1, contents:offset
   100:@:char/raw <- copy *file1-contents
-  file2:file-mapping <- index *data, 1
+  file2:resource <- index *data, 1
   file2-name:text <- get file2, name:offset
   30:@:char/raw <- copy *file2-name
   file2-contents:text <- get file2, contents:offset
   40:@:char/raw <- copy *file2-contents
-  file3:file-mapping <- index *data, 2
+  file3:resource <- index *data, 2
   file3-name:text <- get file3, name:offset
   50:@:char/raw <- copy *file3-name
   file3-contents:text <- get file3, contents:offset
@@ -52,15 +52,15 @@ de f
 :(scenario escaping_file_contents)
 scenario escaping-file-contents [
   local-scope
-  assume-filesystem [
+  assume-resources [
     # file 'a' containing a '|'
     # need to escape '\' once for each block
     [a] <- [
       |x\\\\|yz|
     ]
   ]
-  data:&:@:file-mapping <- get *filesystem, data:offset
-  file1:file-mapping <- index *data, 0
+  data:&:@:resource <- get *resources, data:offset
+  file1:resource <- index *data, 0
   file1-name:text <- get file1, name:offset
   10:@:char/raw <- copy *file1-name
   file1-contents:text <- get file1, contents:offset
@@ -73,43 +73,43 @@ scenario escaping-file-contents [
 ]
 
 :(before "End Globals")
-extern const int FILESYSTEM = Next_predefined_global_for_scenarios++;
-//: give 'filesystem' a fixed location in scenarios
+extern const int RESOURCES = Next_predefined_global_for_scenarios++;
+//: give 'resources' a fixed location in scenarios
 :(before "End Special Scenario Variable Names(r)")
-Name[r]["filesystem"] = FILESYSTEM;
-//: make 'filesystem' always a raw location in scenarios
+Name[r]["resources"] = RESOURCES;
+//: make 'resources' always a raw location in scenarios
 :(before "End is_special_name Cases")
-if (s == "filesystem") return true;
+if (s == "resources") return true;
 :(before "End Initialize Type Of Special Name In Scenario(r)")
-if (r.name == "filesystem") r.type = new_type_tree("address:filesystem");
+if (r.name == "resources") r.type = new_type_tree("address:resources");
 
 :(before "End initialize_transform_rewrite_literal_string_to_text()")
-recipes_taking_literal_strings.insert("assume-filesystem");
+recipes_taking_literal_strings.insert("assume-resources");
 
 //: screen-should-contain is a regular instruction
 :(before "End Primitive Recipe Declarations")
-ASSUME_FILESYSTEM,
+ASSUME_RESOURCES,
 :(before "End Primitive Recipe Numbers")
-put(Recipe_ordinal, "assume-filesystem", ASSUME_FILESYSTEM);
+put(Recipe_ordinal, "assume-resources", ASSUME_RESOURCES);
 :(before "End Primitive Recipe Checks")
-case ASSUME_FILESYSTEM: {
+case ASSUME_RESOURCES: {
   break;
 }
 :(before "End Primitive Recipe Implementations")
-case ASSUME_FILESYSTEM: {
+case ASSUME_RESOURCES: {
   assert(scalar(ingredients.at(0)));
-  assume_filesystem(current_instruction().ingredients.at(0).name, current_recipe_name());
+  assume_resources(current_instruction().ingredients.at(0).name, current_recipe_name());
   break;
 }
 
 :(code)
-void assume_filesystem(const string& data, const string& caller) {
+void assume_resources(const string& data, const string& caller) {
   map<string, string> contents;
-  parse_filesystem(data, contents, caller);
-  construct_filesystem_object(contents);
+  parse_resources(data, contents, caller);
+  construct_resources_object(contents);
 }
 
-void parse_filesystem(const string& data, map<string, string>& out, const string& caller) {
+void parse_resources(const string& data, map<string, string>& out, const string& caller) {
   istringstream in(data);
   in >> std::noskipws;
   while (true) {
@@ -118,44 +118,44 @@ void parse_filesystem(const string& data, map<string, string>& out, const string
     if (!has_data(in)) break;
     string filename = next_word(in);
     if (*filename.begin() != '[') {
-      raise << caller << ": assume-filesystem: filename '" << filename << "' must begin with a '['\n" << end();
+      raise << caller << ": assume-resources: filename '" << filename << "' must begin with a '['\n" << end();
       break;
     }
     if (*filename.rbegin() != ']') {
-      raise << caller << ": assume-filesystem: filename '" << filename << "' must end with a ']'\n" << end();
+      raise << caller << ": assume-resources: filename '" << filename << "' must end with a ']'\n" << end();
       break;
     }
     filename.erase(0, 1);
     filename.erase(SIZE(filename)-1);
     if (!has_data(in)) {
-      raise << caller << ": assume-filesystem: no data for filename '" << filename << "'\n" << end();
+      raise << caller << ": assume-resources: no data for filename '" << filename << "'\n" << end();
       break;
     }
     string arrow = next_word(in);
     if (arrow != "<-") {
-      raise << caller << ": assume-filesystem: expected '<-' after filename '" << filename << "' but got '" << arrow << "'\n" << end();
+      raise << caller << ": assume-resources: expected '<-' after filename '" << filename << "' but got '" << arrow << "'\n" << end();
       break;
     }
     if (!has_data(in)) {
-      raise << caller << ": assume-filesystem: no data for filename '" << filename << "' after '<-'\n" << end();
+      raise << caller << ": assume-resources: no data for filename '" << filename << "' after '<-'\n" << end();
       break;
     }
     string contents = next_word(in);
     if (*contents.begin() != '[') {
-      raise << caller << ": assume-filesystem: file contents '" << contents << "' for filename '" << filename << "' must begin with a '['\n" << end();
+      raise << caller << ": assume-resources: file contents '" << contents << "' for filename '" << filename << "' must begin with a '['\n" << end();
       break;
     }
     if (*contents.rbegin() != ']') {
-      raise << caller << ": assume-filesystem: file contents '" << contents << "' for filename '" << filename << "' must end with a ']'\n" << end();
+      raise << caller << ": assume-resources: file contents '" << contents << "' for filename '" << filename << "' must end with a ']'\n" << end();
       break;
     }
     contents.erase(0, 1);
     contents.erase(SIZE(contents)-1);
-    put(out, filename, munge_filesystem_contents(contents, filename, caller));
+    put(out, filename, munge_resources_contents(contents, filename, caller));
   }
 }
 
-string munge_filesystem_contents(const string& data, const string& filename, const string& caller) {
+string munge_resources_contents(const string& data, const string& filename, const string& caller) {
   if (data.empty()) return "";
   istringstream in(data);
   in >> std::noskipws;
@@ -166,7 +166,7 @@ string munge_filesystem_contents(const string& data, const string& filename, con
     skip_whitespace(in);
     if (!has_data(in)) break;
     if (in.peek() != '|') {
-      raise << caller << ": assume-filesystem: file contents for filename '" << filename << "' must be delimited in '|'s\n" << end();
+      raise << caller << ": assume-resources: file contents for filename '" << filename << "' must be delimited in '|'s\n" << end();
       break;
     }
     in.get();  // skip leading '|'
@@ -177,7 +177,7 @@ string munge_filesystem_contents(const string& data, const string& filename, con
       if (line.at(i) == '\\') {
         ++i;  // skip
         if (i == SIZE(line)) {
-          raise << caller << ": assume-filesystem: file contents can't end a line with '\\'\n" << end();
+          raise << caller << ": assume-resources: file contents can't end a line with '\\'\n" << end();
           break;
         }
       }
@@ -189,9 +189,9 @@ string munge_filesystem_contents(const string& data, const string& filename, con
   return out.str();
 }
 
-void construct_filesystem_object(const map<string, string>& contents) {
-  int filesystem_data_address = allocate(SIZE(contents)*2 + /*array length*/1);
-  int curr = filesystem_data_address + /*skip refcount and length*/2;
+void construct_resources_object(const map<string, string>& contents) {
+  int resources_data_address = allocate(SIZE(contents)*2 + /*array length*/1);
+  int curr = resources_data_address + /*skip refcount and length*/2;
   for (map<string, string>::const_iterator p = contents.begin(); p != contents.end(); ++p) {
     put(Memory, curr, new_mu_text(p->first));
     trace(9999, "mem") << "storing file name " << get(Memory, curr) << " in location " << curr << end();
@@ -204,29 +204,29 @@ void construct_filesystem_object(const map<string, string>& contents) {
     trace(9999, "mem") << "storing refcount 1 in location " << get(Memory, curr) << end();
     ++curr;
   }
-  curr = filesystem_data_address+/*skip refcount*/1;
+  curr = resources_data_address+/*skip refcount*/1;
   put(Memory, curr, SIZE(contents));  // size of array
-  trace(9999, "mem") << "storing filesystem size " << get(Memory, curr) << " in location " << curr << end();
-  put(Memory, filesystem_data_address, 1);  // initialize refcount
-  trace(9999, "mem") << "storing refcount 1 in location " << filesystem_data_address << end();
-  // wrap the filesystem data in a filesystem object
-  int filesystem_address = allocate(size_of_filesystem());
-  curr = filesystem_address+/*skip refcount*/1;
-  put(Memory, curr, filesystem_data_address);
-  trace(9999, "mem") << "storing filesystem data address " << filesystem_data_address << " in location " << curr << end();
-  put(Memory, filesystem_address, 1);  // initialize refcount
-  trace(9999, "mem") << "storing refcount 1 in location " << filesystem_address << end();
+  trace(9999, "mem") << "storing resources size " << get(Memory, curr) << " in location " << curr << end();
+  put(Memory, resources_data_address, 1);  // initialize refcount
+  trace(9999, "mem") << "storing refcount 1 in location " << resources_data_address << end();
+  // wrap the resources data in a 'resources' object
+  int resources_address = allocate(size_of_resources());
+  curr = resources_address+/*skip refcount*/1;
+  put(Memory, curr, resources_data_address);
+  trace(9999, "mem") << "storing resources data address " << resources_data_address << " in location " << curr << end();
+  put(Memory, resources_address, 1);  // initialize refcount
+  trace(9999, "mem") << "storing refcount 1 in location " << resources_address << end();
   // save in product
-  put(Memory, FILESYSTEM, filesystem_address);
-  trace(9999, "mem") << "storing filesystem address " << filesystem_address << " in location " << FILESYSTEM << end();
+  put(Memory, RESOURCES, resources_address);
+  trace(9999, "mem") << "storing resources address " << resources_address << " in location " << RESOURCES << end();
 }
 
-int size_of_filesystem() {
+int size_of_resources() {
   // memoize result if already computed
   static int result = 0;
   if (result) return result;
-  assert(get(Type_ordinal, "filesystem"));
-  type_tree* type = new type_tree("filesystem");
+  assert(get(Type_ordinal, "resources"));
+  type_tree* type = new type_tree("resources");
   result = size_of(type)+/*refcount*/1;
   delete type;
   return result;