diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2019-10-24 17:58:24 -0400 |
|---|---|---|
| committer | Tim Foley <tfoleyNV@users.noreply.github.com> | 2019-10-24 14:58:24 -0700 |
| commit | 89ddb50eaccc1b7b590dbde55032721762711fb2 (patch) | |
| tree | e61da2c1604e0d52d3a9915363769ccf950b62f3 /source/slang/slang.cpp | |
| parent | 58ad4b1a9ca43098a071c42bd752a4a48405bf0e (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.cpp | 10 |
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 |
