diff options
| author | Graydon Hoare <[email protected]> | 2011-03-21 23:06:42 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-03-21 23:06:42 -0700 |
| commit | 7ac885ee8cb18fc2cb974cff06190532680cf29b (patch) | |
| tree | f1a354cd2a763949a29856bac7e158d0f4f77b3b /src/rustllvm/include/llvm-c/Object.h | |
| parent | Make floating-point operations work (neg, add, sub, mul, div, rem, (diff) | |
| download | rust-7ac885ee8cb18fc2cb974cff06190532680cf29b.tar.xz rust-7ac885ee8cb18fc2cb974cff06190532680cf29b.zip | |
Repair some fallout from pcwalton's last few build changes.
Diffstat (limited to 'src/rustllvm/include/llvm-c/Object.h')
| -rw-r--r-- | src/rustllvm/include/llvm-c/Object.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/rustllvm/include/llvm-c/Object.h b/src/rustllvm/include/llvm-c/Object.h new file mode 100644 index 00000000..1103d7dd --- /dev/null +++ b/src/rustllvm/include/llvm-c/Object.h @@ -0,0 +1,77 @@ +/*===-- llvm-c/Object.h - Object Lib C Iface --------------------*- C++ -*-===*/ +/* */ +/* The LLVM Compiler Infrastructure */ +/* */ +/* This file is distributed under the University of Illinois Open Source */ +/* License. See LICENSE.TXT for details. */ +/* */ +/*===----------------------------------------------------------------------===*/ +/* */ +/* This header declares the C interface to libLLVMObject.a, which */ +/* implements object file reading and writing. */ +/* */ +/* Many exotic languages can interoperate with C code but have a harder time */ +/* with C++ due to name mangling. So in addition to C, this interface enables */ +/* tools written in such languages. */ +/* */ +/*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_OBJECT_H +#define LLVM_C_OBJECT_H + +#include "llvm-c/Core.h" +#include "llvm/Config/llvm-config.h" + +#ifdef __cplusplus +#include "llvm/Object/ObjectFile.h" + +extern "C" { +#endif + + +typedef struct LLVMOpaqueObjectFile *LLVMObjectFileRef; + +typedef struct LLVMOpaqueSectionIterator *LLVMSectionIteratorRef; + +LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf); +void LLVMDisposeObjectFile(LLVMObjectFileRef ObjectFile); + +LLVMSectionIteratorRef LLVMGetSections(LLVMObjectFileRef ObjectFile); +void LLVMDisposeSectionIterator(LLVMSectionIteratorRef SI); +bool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef ObjectFile, + LLVMSectionIteratorRef SI); +void LLVMMoveToNextSection(LLVMSectionIteratorRef SI); +const char *LLVMGetSectionName(LLVMSectionIteratorRef SI); +uint64_t LLVMGetSectionSize(LLVMSectionIteratorRef SI); +const char *LLVMGetSectionContents(LLVMSectionIteratorRef SI); + + +#ifdef __cplusplus +} + +namespace llvm { + namespace object { + inline ObjectFile *unwrap(LLVMObjectFileRef OF) { + return reinterpret_cast<ObjectFile*>(OF); + } + + inline LLVMObjectFileRef wrap(const ObjectFile *OF) { + return reinterpret_cast<LLVMObjectFileRef>(const_cast<ObjectFile*>(OF)); + } + + inline ObjectFile::section_iterator *unwrap(LLVMSectionIteratorRef SI) { + return reinterpret_cast<ObjectFile::section_iterator*>(SI); + } + + inline LLVMSectionIteratorRef + wrap(const ObjectFile::section_iterator *SI) { + return reinterpret_cast<LLVMSectionIteratorRef> + (const_cast<ObjectFile::section_iterator*>(SI)); + } + } +} + +#endif /* defined(__cplusplus) */ + +#endif + |