module LLVM.Internal.FFI.Metadata where
import LLVM.Prelude
import Foreign.Ptr
import Foreign.C
import LLVM.Internal.FFI.Context
import LLVM.Internal.FFI.PtrHierarchy
import LLVM.Internal.FFI.LLVMCTypes
foreign import ccall unsafe "LLVM_Hs_IsAMDString" isAMDString ::
Ptr Metadata -> IO (Ptr MDString)
foreign import ccall unsafe "LLVM_Hs_IsAMDNode" isAMDNode ::
Ptr Metadata -> IO (Ptr MDNode)
foreign import ccall unsafe "LLVM_Hs_IsAMDValue" isAMDValue ::
Ptr Metadata -> IO (Ptr MDValue)
foreign import ccall unsafe "LLVM_Hs_IsAMetadataOperand" isAMetadataOperand ::
Ptr Value -> IO (Ptr MetadataAsVal)
foreign import ccall unsafe "LLVM_Hs_GetMDValue" getMDValue ::
Ptr MDValue -> IO (Ptr Value)
foreign import ccall unsafe "LLVM_Hs_GetMetadataOperand" getMetadataOperand ::
Ptr MetadataAsVal -> IO (Ptr Metadata)
foreign import ccall unsafe "LLVMGetMDKindIDInContext" getMDKindIDInContext' ::
Ptr Context -> Ptr CChar -> CUInt -> IO MDKindID
getMDKindIDInContext :: Ptr Context -> (Ptr CChar, CUInt) -> IO MDKindID
getMDKindIDInContext ctx (c, n) = getMDKindIDInContext' ctx c n
foreign import ccall unsafe "LLVM_Hs_GetMDKindNames" getMDKindNames ::
Ptr Context -> Ptr (Ptr CChar) -> Ptr CUInt -> CUInt -> IO CUInt
foreign import ccall unsafe "LLVM_Hs_MDStringInContext" mdStringInContext' ::
Ptr Context -> CString -> CUInt -> IO (Ptr MDString)
foreign import ccall unsafe "LLVM_Hs_MDValue" mdValue ::
Ptr Value -> IO (Ptr MDValue)
foreign import ccall unsafe "LLVM_Hs_MetadataOperand" metadataOperand ::
Ptr Context -> Ptr Metadata -> IO (Ptr Value)
mdStringInContext :: Ptr Context -> (CString, CUInt) -> IO (Ptr MDString)
mdStringInContext ctx (p, n) = mdStringInContext' ctx p n
foreign import ccall unsafe "LLVM_Hs_GetMDString" getMDString ::
Ptr MDString -> Ptr CUInt -> IO CString
foreign import ccall unsafe "LLVM_Hs_MDNodeInContext" createMDNodeInContext' ::
Ptr Context -> Ptr (Ptr Metadata) -> CUInt -> IO (Ptr MDNode)
createMDNodeInContext :: Ptr Context -> (CUInt, Ptr (Ptr Metadata)) -> IO (Ptr MDNode)
createMDNodeInContext ctx (n, vs) = createMDNodeInContext' ctx vs n
foreign import ccall unsafe "LLVM_Hs_CreateTemporaryMDNodeInContext" createTemporaryMDNodeInContext ::
Ptr Context -> IO (Ptr MDNode)
foreign import ccall unsafe "LLVM_Hs_DestroyTemporaryMDNode" destroyTemporaryMDNode ::
Ptr MDNode -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetMDNodeNumOperands" getMDNodeNumOperands ::
Ptr MDNode -> IO CUInt
foreign import ccall unsafe "LLVM_Hs_GetMDNodeOperands" getMDNodeOperands ::
Ptr MDNode -> Ptr (Ptr Metadata) -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetNamedMetadataName" getNamedMetadataName ::
Ptr NamedMetadata -> Ptr CUInt -> IO (Ptr CChar)
foreign import ccall unsafe "LLVM_Hs_GetNamedMetadataNumOperands" getNamedMetadataNumOperands ::
Ptr NamedMetadata -> IO CUInt
foreign import ccall unsafe "LLVM_Hs_GetNamedMetadataOperands" getNamedMetadataOperands ::
Ptr NamedMetadata -> Ptr (Ptr MDNode) -> IO ()
foreign import ccall unsafe "LLVM_Hs_NamedMetadataAddOperands" namedMetadataAddOperands' ::
Ptr NamedMetadata -> Ptr (Ptr MDNode) -> CUInt -> IO ()
foreign import ccall unsafe "LLVM_Hs_MetadataReplaceAllUsesWith" metadataReplaceAllUsesWith ::
Ptr MDNode -> Ptr Metadata -> IO ()
namedMetadataAddOperands :: Ptr NamedMetadata -> (CUInt, Ptr (Ptr MDNode)) -> IO ()
namedMetadataAddOperands nm (n, vs) = namedMetadataAddOperands' nm vs n