diff options
Diffstat (limited to 'cpp/012run')
-rw-r--r-- | cpp/012run | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/cpp/012run b/cpp/012run index 5d0e28cf..63ffdff1 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 = Type[x.types[0]].size; + size_t size = size_of(x.types[0]); 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; @@ -74,3 +74,9 @@ int to_int(string n) { assert(*end == '\0'); return result; } + +int size_of(type_number x) { + type_info t = Type[x]; + if (!t.is_record && !t.is_array) return t.size; + return t.size; // TODO +} |