Use just a ArrayRef<uint8_t> to store both hex string and binary data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183043 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2013-05-31 21:03:51 +00:00
parent 06120815a2
commit e17388fd34

View File

@ -40,21 +40,21 @@ namespace COFFYAML {
/// string. Using this avoid having to allocate temporary strings.
/// FIXME: not COFF specific.
class BinaryRef {
ArrayRef<uint8_t> BinaryData;
StringRef HexData;
ArrayRef<uint8_t> Data;
bool isBinary;
public:
BinaryRef(ArrayRef<uint8_t> BinaryData)
: BinaryData(BinaryData), isBinary(true) {}
BinaryRef(StringRef HexData) : HexData(HexData), isBinary(false) {}
BinaryRef(ArrayRef<uint8_t> Data) : Data(Data), isBinary(true) {}
BinaryRef(StringRef Data)
: Data(reinterpret_cast<const uint8_t *>(Data.data()), Data.size()),
isBinary(false) {}
BinaryRef() : isBinary(false) {}
StringRef getHex() const {
assert(!isBinary);
return HexData;
return StringRef(reinterpret_cast<const char*>(Data.data()), Data.size());
}
ArrayRef<uint8_t> getBinary() const {
assert(isBinary);
return BinaryData;
return Data;
}
};