diff options
Diffstat (limited to 'llvm/lib/Support/DataExtractor.cpp')
-rw-r--r-- | llvm/lib/Support/DataExtractor.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Support/DataExtractor.cpp b/llvm/lib/Support/DataExtractor.cpp index a98297c..3d19b4d 100644 --- a/llvm/lib/Support/DataExtractor.cpp +++ b/llvm/lib/Support/DataExtractor.cpp @@ -171,6 +171,21 @@ StringRef DataExtractor::getCStrRef(uint64_t *offset_ptr) const { return StringRef(); } +StringRef DataExtractor::getFixedLengthString(uint64_t *OffsetPtr, + uint64_t Length, + StringRef TrimChars) const { + StringRef Bytes(getBytes(OffsetPtr, Length)); + return Bytes.trim(TrimChars); +} + +StringRef DataExtractor::getBytes(uint64_t *OffsetPtr, uint64_t Length) const { + if (!isValidOffsetForDataOfSize(*OffsetPtr, Length)) + return StringRef(); + StringRef Result = Data.substr(*OffsetPtr, Length); + *OffsetPtr += Length; + return Result; +} + uint64_t DataExtractor::getULEB128(uint64_t *offset_ptr, llvm::Error *Err) const { assert(*offset_ptr <= Data.size()); |