content: {-# LANGUAGE
    ForeignFunctionInterface,
    MultiParamTypeClasses,
    UndecidableInstances
    #-}
  -- | FFI functions for handling the LLVM User class
  module LLVM.Internal.FFI.User where
  
  import LLVM.Prelude
  
  import Foreign.Ptr
  import Foreign.C
  
  import LLVM.Internal.FFI.PtrHierarchy
  
  -- | a blind type to correspond to llvm::Use
  data Use
  
  -- | test if a 'Value' is a 'User'
  foreign import ccall unsafe "LLVMIsAUser" isAUser ::
      Ptr Value -> IO (Ptr User)
  
  -- | <http://llvm.org/doxygen/group__LLVMCCoreValueUses.html#ga66a226d3d06ffada5c929656f4d97d35>
  foreign import ccall unsafe "LLVMGetFirstUse" getFirstUse ::
      Ptr User -> IO (Ptr Use)
  
  -- | <http://llvm.org/doxygen/group__LLVMCCoreValueUses.html#ga6ea72661bcca2b77bea57173317ec942>
  foreign import ccall unsafe "LLVMGetNextUse" getNextUse ::
      Ptr Use -> IO (Ptr Use)
  
  -- | <http://llvm.org/doxygen/group__LLVMCCoreValueUser.html#ga2ad633a6afc7906f1afe329f244240f6>
  foreign import ccall unsafe "LLVMGetNumOperands" getNumOperands ::
      Ptr User -> IO CUInt
  
  -- | <http://llvm.org/doxygen/group__LLVMCCoreValueUser.html#ga799d58a361054323cb457945071cbfdb>
  foreign import ccall unsafe "LLVMGetOperand" getOperand ::
      Ptr User -> CUInt -> IO (Ptr Value)
  
  