aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/BinaryStreamReader.cpp
diff options
context:
space:
mode:
authorEric Beckmann <ecbeckmann@google.com>2017-05-30 18:19:06 +0000
committerEric Beckmann <ecbeckmann@google.com>2017-05-30 18:19:06 +0000
commit72fb6a87fb2e2f87a192aa9d80eefc484bf3e41a (patch)
tree5bc310d384fcf4991550c9a31a98ea889f6b3c02 /llvm/lib/Support/BinaryStreamReader.cpp
parent4cec434a1bd3d30c263bdb4e07ecb4db32caee6c (diff)
downloadllvm-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.cpp20
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))