- /*===-- llvm-c/Disassembler.h - Disassembler Public C Interface ---*- C -*-===*\ 
- |*                                                                            *| 
- |* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *| 
- |* Exceptions.                                                                *| 
- |* See https://llvm.org/LICENSE.txt for license information.                  *| 
- |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *| 
- |*                                                                            *| 
- |*===----------------------------------------------------------------------===*| 
- |*                                                                            *| 
- |* This header provides a public interface to a disassembler library.         *| 
- |* LLVM provides an implementation of this interface.                         *| 
- |*                                                                            *| 
- \*===----------------------------------------------------------------------===*/ 
-   
- #ifndef LLVM_C_DISASSEMBLER_H 
- #define LLVM_C_DISASSEMBLER_H 
-   
- #include "llvm-c/DisassemblerTypes.h" 
- #include "llvm-c/ExternC.h" 
-   
- /** 
-  * @defgroup LLVMCDisassembler Disassembler 
-  * @ingroup LLVMC 
-  * 
-  * @{ 
-  */ 
-   
- LLVM_C_EXTERN_C_BEGIN 
-   
- /** 
-  * Create a disassembler for the TripleName.  Symbolic disassembly is supported 
-  * by passing a block of information in the DisInfo parameter and specifying the 
-  * TagType and callback functions as described above.  These can all be passed 
-  * as NULL.  If successful, this returns a disassembler context.  If not, it 
-  * returns NULL. This function is equivalent to calling 
-  * LLVMCreateDisasmCPUFeatures() with an empty CPU name and feature set. 
-  */ 
- LLVMDisasmContextRef LLVMCreateDisasm(const char *TripleName, void *DisInfo, 
-                                       int TagType, LLVMOpInfoCallback GetOpInfo, 
-                                       LLVMSymbolLookupCallback SymbolLookUp); 
-   
- /** 
-  * Create a disassembler for the TripleName and a specific CPU.  Symbolic 
-  * disassembly is supported by passing a block of information in the DisInfo 
-  * parameter and specifying the TagType and callback functions as described 
-  * above.  These can all be passed * as NULL.  If successful, this returns a 
-  * disassembler context.  If not, it returns NULL. This function is equivalent 
-  * to calling LLVMCreateDisasmCPUFeatures() with an empty feature set. 
-  */ 
- LLVMDisasmContextRef LLVMCreateDisasmCPU(const char *Triple, const char *CPU, 
-                                          void *DisInfo, int TagType, 
-                                          LLVMOpInfoCallback GetOpInfo, 
-                                          LLVMSymbolLookupCallback SymbolLookUp); 
-   
- /** 
-  * Create a disassembler for the TripleName, a specific CPU and specific feature 
-  * string.  Symbolic disassembly is supported by passing a block of information 
-  * in the DisInfo parameter and specifying the TagType and callback functions as 
-  * described above.  These can all be passed * as NULL.  If successful, this 
-  * returns a disassembler context.  If not, it returns NULL. 
-  */ 
- LLVMDisasmContextRef 
- LLVMCreateDisasmCPUFeatures(const char *Triple, const char *CPU, 
-                             const char *Features, void *DisInfo, int TagType, 
-                             LLVMOpInfoCallback GetOpInfo, 
-                             LLVMSymbolLookupCallback SymbolLookUp); 
-   
- /** 
-  * Set the disassembler's options.  Returns 1 if it can set the Options and 0 
-  * otherwise. 
-  */ 
- int LLVMSetDisasmOptions(LLVMDisasmContextRef DC, uint64_t Options); 
-   
- /* The option to produce marked up assembly. */ 
- #define LLVMDisassembler_Option_UseMarkup 1 
- /* The option to print immediates as hex. */ 
- #define LLVMDisassembler_Option_PrintImmHex 2 
- /* The option use the other assembler printer variant */ 
- #define LLVMDisassembler_Option_AsmPrinterVariant 4 
- /* The option to set comment on instructions */ 
- #define LLVMDisassembler_Option_SetInstrComments 8 
-   /* The option to print latency information alongside instructions */ 
- #define LLVMDisassembler_Option_PrintLatency 16 
-   
- /** 
-  * Dispose of a disassembler context. 
-  */ 
- void LLVMDisasmDispose(LLVMDisasmContextRef DC); 
-   
- /** 
-  * Disassemble a single instruction using the disassembler context specified in 
-  * the parameter DC.  The bytes of the instruction are specified in the 
-  * parameter Bytes, and contains at least BytesSize number of bytes.  The 
-  * instruction is at the address specified by the PC parameter.  If a valid 
-  * instruction can be disassembled, its string is returned indirectly in 
-  * OutString whose size is specified in the parameter OutStringSize.  This 
-  * function returns the number of bytes in the instruction or zero if there was 
-  * no valid instruction. 
-  */ 
- size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, uint8_t *Bytes, 
-                              uint64_t BytesSize, uint64_t PC, 
-                              char *OutString, size_t OutStringSize); 
-   
- /** 
-  * @} 
-  */ 
-   
- LLVM_C_EXTERN_C_END 
-   
- #endif /* LLVM_C_DISASSEMBLER_H */ 
-