diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-02-21 21:53:41 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-02-21 21:53:41 -0800 |
commit | fe67d47aa4598497e295510cf27f702a3e118632 (patch) | |
tree | da8d72108543168dc6c0ceee252fa82158639582 /cpp | |
parent | 35e535712d43031d97a5da5fcbc38fb946c0b9dd (diff) | |
download | mu-fe67d47aa4598497e295510cf27f702a3e118632.tar.gz |
810
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/010vm | 3 | ||||
-rw-r--r-- | cpp/012run | 6 | ||||
-rw-r--r-- | cpp/018address | 4 |
3 files changed, 7 insertions, 6 deletions
diff --git a/cpp/010vm b/cpp/010vm index cf064581..2f2268ba 100644 --- a/cpp/010vm +++ b/cpp/010vm @@ -99,7 +99,8 @@ struct type_info { bool is_record; bool is_array; vector<type_number> target; // only if is_address - vector<vector<type_number> > elements; // only if is_record or is_array + vector<vector<type_number> > elements; // only if is_record + vector<type_number> element; // only if is_array type_info() :size(0), is_address(false), is_record(false), is_array(false) {} }; diff --git a/cpp/012run b/cpp/012run index 63ffdff1..946b01d1 100644 --- a/cpp/012run +++ b/cpp/012run @@ -59,7 +59,7 @@ vector<int> read_memory(reagent x) { void write_memory(reagent x, vector<int> data) { int base = to_int(x.name); - size_t size = size_of(x.types[0]); + size_t size = size_of(x); if (size != data.size()) raise << "size mismatch in storing to " << x.to_string(); for (size_t offset = 0; offset < size; ++offset) { trace("mem") << "storing in location " << base+offset; @@ -75,8 +75,8 @@ int to_int(string n) { return result; } -int size_of(type_number x) { - type_info t = Type[x]; +int size_of(reagent r) { + type_info t = Type[r.types[0]]; if (!t.is_record && !t.is_array) return t.size; return t.size; // TODO } diff --git a/cpp/018address b/cpp/018address index bb173f94..32214761 100644 --- a/cpp/018address +++ b/cpp/018address @@ -20,7 +20,7 @@ vector<int> read_memory(reagent x) { } x = canonize(x); int base = to_int(x.name); - size_t size = size_of(x.types[0]); + size_t size = size_of(x); for (size_t offset = 0; offset < size; ++offset) { int val = Memory[base+offset]; trace("mem") << "location " << base+offset << " is " << val; @@ -43,7 +43,7 @@ recipe main [ void write_memory(reagent x, vector<int> data) { x = canonize(x); int base = to_int(x.name); - size_t size = size_of(x.types[0]); + size_t size = size_of(x); if (size != data.size()) raise << "size mismatch in storing to " << x.to_string(); for (size_t offset = 0; offset < size; ++offset) { trace("mem") << "storing in location " << base+offset; |