| /*===-- 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); | 
 | LLVMBool 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 section_iterator *unwrap(LLVMSectionIteratorRef SI) { | 
 |       return reinterpret_cast<section_iterator*>(SI); | 
 |     } | 
 |  | 
 |     inline LLVMSectionIteratorRef | 
 |     wrap(const section_iterator *SI) { | 
 |       return reinterpret_cast<LLVMSectionIteratorRef> | 
 |         (const_cast<section_iterator*>(SI)); | 
 |     } | 
 |   } | 
 | } | 
 |  | 
 | #endif /* defined(__cplusplus) */ | 
 |  | 
 | #endif | 
 |  |