diff options
author | Michael J. Spencer <bigcheesegs@gmail.com> | 2011-06-25 17:54:29 +0000 |
---|---|---|
committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2011-06-25 17:54:29 +0000 |
commit | b02c95d43ef3926275cf4ba2886880ff008c6792 (patch) | |
tree | e23300af80452105bc9a435e7599490cf8401640 /llvm/lib/Object/Binary.cpp | |
parent | e4446923cf6a1b146f6577a28b25b4e0d8f3a2bf (diff) | |
download | bcm5719-llvm-b02c95d43ef3926275cf4ba2886880ff008c6792.tar.gz bcm5719-llvm-b02c95d43ef3926275cf4ba2886880ff008c6792.zip |
Add Binary class. This is a cleaner parent than ObjectFile.
llvm-svn: 133869
Diffstat (limited to 'llvm/lib/Object/Binary.cpp')
-rw-r--r-- | llvm/lib/Object/Binary.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/llvm/lib/Object/Binary.cpp b/llvm/lib/Object/Binary.cpp new file mode 100644 index 00000000000..75f5a58ac08 --- /dev/null +++ b/llvm/lib/Object/Binary.cpp @@ -0,0 +1,50 @@ +//===- Binary.cpp - A generic binary file -----------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines the Binary class. +// +//===----------------------------------------------------------------------===// + +#include "llvm/Object/Binary.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/MemoryBuffer.h" +#include "llvm/Support/Path.h" + +using namespace llvm; +using namespace object; + +Binary::~Binary() { + delete Data; +} + +Binary::Binary(unsigned int Type, MemoryBuffer *Source) + : TypeID(Type) + , Data(Source) {} + +StringRef Binary::getData() const { + return Data->getBuffer(); +} + +StringRef Binary::getFileName() const { + return Data->getBufferIdentifier(); +} + +error_code object::createBinary(MemoryBuffer *Source, + OwningPtr<Binary> &Result) { + // We don't support any at the moment. + delete Source; + return object_error::invalid_file_type; +} + +error_code object::createBinary(StringRef Path, OwningPtr<Binary> &Result) { + OwningPtr<MemoryBuffer> File; + if (error_code ec = MemoryBuffer::getFile(Path, File)) + return ec; + return createBinary(File.take(), Result); +} |