diff options
author | Eric Beckmann <ecbeckmann@google.com> | 2017-05-30 18:19:06 +0000 |
---|---|---|
committer | Eric Beckmann <ecbeckmann@google.com> | 2017-05-30 18:19:06 +0000 |
commit | 72fb6a87fb2e2f87a192aa9d80eefc484bf3e41a (patch) | |
tree | 5bc310d384fcf4991550c9a31a98ea889f6b3c02 /llvm/lib/Support/BinaryStreamReader.cpp | |
parent | 4cec434a1bd3d30c263bdb4e07ecb4db32caee6c (diff) | |
download | llvm-72fb6a87fb2e2f87a192aa9d80eefc484bf3e41a.zip llvm-72fb6a87fb2e2f87a192aa9d80eefc484bf3e41a.tar.gz llvm-72fb6a87fb2e2f87a192aa9d80eefc484bf3e41a.tar.bz2 |
Adding parsing ability for .res file.
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D33566
llvm-svn: 304225
Diffstat (limited to 'llvm/lib/Support/BinaryStreamReader.cpp')
-rw-r--r-- | llvm/lib/Support/BinaryStreamReader.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Support/BinaryStreamReader.cpp b/llvm/lib/Support/BinaryStreamReader.cpp index 8622329..bfb658c 100644 --- a/llvm/lib/Support/BinaryStreamReader.cpp +++ b/llvm/lib/Support/BinaryStreamReader.cpp @@ -69,6 +69,26 @@ Error BinaryStreamReader::readCString(StringRef &Dest) { return Error::success(); } +Error BinaryStreamReader::readWideString(ArrayRef<UTF16> &Dest) { + uint32_t Length = 0; + uint32_t OriginalOffset = getOffset(); + const UTF16 *C; + while (true) { + if (auto EC = readObject(C)) + return EC; + if (*C == 0x0000) + break; + ++Length; + } + uint32_t NewOffset = getOffset(); + setOffset(OriginalOffset); + + if (auto EC = readArray(Dest, Length)) + return EC; + setOffset(NewOffset); + return Error::success(); +} + Error BinaryStreamReader::readFixedString(StringRef &Dest, uint32_t Length) { ArrayRef<uint8_t> Bytes; if (auto EC = readBytes(Bytes, Length)) |