summaryrefslogtreecommitdiffstats
path: root/source/slang/slang.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-10-24 17:58:24 -0400
committerTim Foley <tfoleyNV@users.noreply.github.com>2019-10-24 14:58:24 -0700
commit89ddb50eaccc1b7b590dbde55032721762711fb2 (patch)
treee61da2c1604e0d52d3a9915363769ccf950b62f3 /source/slang/slang.cpp
parent58ad4b1a9ca43098a071c42bd752a4a48405bf0e (diff)
OffsetContainer serialization (#1093)
* OffsetContainer with unit tests. * State serialization working with OffsetContainer. * Fixes to make work with OffsetContainer. * Added OffsetContainer documentation. * Remove RelativeContainer. * Fix problem with + on Offset32Ptr on windows x86 target. * * Made OffsetBase a base class of OffsetContainer. * Added MemoryOffsetBase to just handle being a chunk of memory. * * Use operator[] to access contents of OffsetContainer * Fix the type hash to work across different size_t sizes. * Fixed some Offset type related comments. * Fix bug around using asBase, because it returns a reference just using 'auto' will means it becomes a value type. Remove assignment and copy ctor from OffsetBase. * Evaluation order of assignment can lead to wrong behavior with Offset32Ptr/raw pointers. Document the fact, and fix in StateSerializeUtil.
Diffstat (limited to 'source/slang/slang.cpp')
-rw-r--r--source/slang/slang.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index 8479d3202..3053b60c0 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -3465,9 +3465,12 @@ SLANG_API SlangResult spLoadRepro(
List<uint8_t> buffer;
SLANG_RETURN_ON_FAIL(StateSerializeUtil::loadState((const uint8_t*)data, size, buffer));
+ MemoryOffsetBase base;
+ base.set(buffer.getBuffer(), buffer.getCount());
+
StateSerializeUtil::RequestState* requestState = StateSerializeUtil::getRequest(buffer);
- SLANG_RETURN_ON_FAIL(StateSerializeUtil::load(requestState, fileSystem, request));
+ SLANG_RETURN_ON_FAIL(StateSerializeUtil::load(base, requestState, fileSystem, request));
return SLANG_OK;
}
@@ -3512,8 +3515,11 @@ SLANG_API SlangResult spExtractRepro(SlangSession* session, const void* reproDat
SLANG_RETURN_ON_FAIL(StateSerializeUtil::loadState(&memoryStream, buffer));
}
+ MemoryOffsetBase base;
+ base.set(buffer.getBuffer(), buffer.getCount());
+
StateSerializeUtil::RequestState* requestState = StateSerializeUtil::getRequest(buffer);
- return StateSerializeUtil::extractFiles(requestState, fileSystem);
+ return StateSerializeUtil::extractFiles(base, requestState, fileSystem);
}
// Reflection API