+namespace simgrid {
+namespace mc {
+
+Snapshot::Snapshot(Process* process, int _num_state)
+ : AddressSpace(process)
+ , num_state(_num_state)
+ , heap_bytes_used(0)
+ , enabled_processes()
+ , privatization_index(0)
+ , hash(0)
+{
+
+}
+
+Snapshot::~Snapshot()
+{
+
+}
+
+const void* Snapshot::read_bytes(void* buffer, std::size_t size,
+ RemotePtr<void> address, int process_index,
+ ReadOptions options) const
+{
+ mc_mem_region_t region = mc_get_snapshot_region((void*)address.address(), this, process_index);
+ if (region) {
+ const void* res = MC_region_read(region, buffer, (void*)address.address(), size);
+ if (buffer == res || options & ReadOptions::lazy())
+ return res;
+ else {
+ memcpy(buffer, res, size);
+ return buffer;
+ }
+ }
+ else
+ return this->process()->read_bytes(
+ buffer, size, address, process_index, options);
+}
+
+}
+}
+
+}
+