diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-12-10 14:04:29 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-10 14:04:29 -0500 |
| commit | 4337338ed2d9525b4638f32c6b91ef61b69e41cd (patch) | |
| tree | bade08ed9e1b835a73fe97b5ecb331ae940fee86 /source/core/slang-hex-dump-util.cpp | |
| parent | e4a8251749cf1fbf005b045e26e25f3ef7cccb8b (diff) | |
Building with embedded stdlib (#1634)
* #include an absolute path didn't work - because paths were taken to always be relative.
* Move reflection to reflection-api.
* Slight reorg to pull out potentially Slang internal functions from the reflection API impls.
* Remove visual studio projects
* Fix for slang-binaries copy.
* Add the visual studio projects in build/visual-studio
* Remove miniz project.
* Differentiate the linePath from the filePath.
* Improve comment in premake5.lua + to kick of CI.
* Kick CI.
* Use COM compile request for calls to functions inside api-less-slang.
Add static-slang project.
* Fix const typo issue.
* Don't include 'core' link in 'api-less-slang'
* Removed static-slang lib causes problems on linux with linking.
Embed Slang stdlib
Added StaticBlob
Added dumpSourceBytes
Use ConstArrayView for the archive.
At startup allow loading of zip with stdlib.
Made -save-stdlib -load-stdlib take a name
Added '-save-stdlib-bin-source' to save out serialized stdlib as source.
* Ability enable/disable stdlib embedding.
* Fix problem with moduleDecl not having module pointer set when serialized in.
* Set of debugdir for slang-test and examples.
* Add slang-stdlib-api.cpp
* Update slang filters for VS.
* Try to use pic, and -mcmodel=medium
* Some more efforts ot make premake work.
* WIP premake5.lua from previously working version.
* Remove api-less-slang project.
* Disable dllexport on gcc/clang.
* Embed via slangc-bootstrap.
* Fix slang-profile. Always compiles without stdlib.
* Use pic "On"
* Remove slangc-bootstrap and embed-stdlib-generator if embedding not required. Make bootstrap run the generators.
* Improve comments in premake5.lua.
Kick off another CI build.
* Remove generation of stdlib source from std-lib-serialize.slang
Diffstat (limited to 'source/core/slang-hex-dump-util.cpp')
| -rw-r--r-- | source/core/slang-hex-dump-util.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/source/core/slang-hex-dump-util.cpp b/source/core/slang-hex-dump-util.cpp index cb7187499..b493141a1 100644 --- a/source/core/slang-hex-dump-util.cpp +++ b/source/core/slang-hex-dump-util.cpp @@ -53,6 +53,46 @@ static const char s_hex[] = "0123456789abcdef"; return dump(data.getBuffer(), data.getCount(), maxBytesPerLine, writer); } +SlangResult HexDumpUtil::dumpSourceBytes(const uint8_t* data, size_t dataCount, int maxBytesPerLine, ISlangWriter* writer) +{ + const uint8_t* cur = data; + const uint8_t* end = data + dataCount; + + while (cur < end) + { + size_t count = size_t(end - cur); + count = (count > size_t(maxBytesPerLine)) ? size_t(maxBytesPerLine) : count; + + // each byte is output as "0xAA, " + // Ends with '\n" + const size_t lineBytes = count * (4 + 1 + 1) * count + 1; + + char* startDst = writer->beginAppendBuffer(lineBytes); + char* dst = startDst; + + for (size_t i = 0; i < count; ++i) + { + uint8_t byte = cur[i]; + dst[0] = '0'; + dst[1] = 'x'; + dst[2] = s_hex[byte >> 4]; + dst[3] = s_hex[byte & 0xf]; + dst[4] = ','; + dst[5] = ' '; + + dst += 6; + } + + *dst++ = '\n'; + + SLANG_RETURN_ON_FAIL(writer->endAppendBuffer(startDst, size_t(dst - startDst))); + + cur += count; + } + + return SLANG_OK; +} + /* static */SlangResult HexDumpUtil::dump(const uint8_t* data, size_t dataCount, int maxBytesPerLine, ISlangWriter* writer) { int maxCharsPerLine = 2 * maxBytesPerLine + 1 + maxBytesPerLine + 1; |
