-- GENERATED by C->Haskell Compiler, version 0.28.1 Switcheroo, 1 April 2016 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}
-----------------------------------------------------------
-- |
-- module:                      MXNet.NNVM.Base.Internal.Raw
-- copyright:                   (c) 2016 Tao He
-- license:                     MIT
-- maintainer:                  sighingnow@gmail.com
--
-- Direct C FFI bindings for <mxnet/c_api.h>.
--
{-# LANGUAGE Safe #-}
{-# LANGUAGE ForeignFunctionInterface #-}

module MXNet.NNVM.Base.Internal.Raw where
import qualified Foreign.C.String as C2HSImp
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp



import Foreign.C.String
import Foreign.C.Types
import Foreign.Marshal.Alloc
import Foreign.Marshal.Array
import Foreign.Marshal.Utils ( with )
import Foreign.Ptr
import Foreign.Storable

import C2HS.C.Extra.Marshal

import MXNet.NNVM.Internal.Types.Raw
{-# LINE 29 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}




nnAPISetLastError :: (String) -> IO ()
nnAPISetLastError a1 =
  C2HSImp.withCString a1 $ \a1' -> 
  nnAPISetLastError'_ a1' >>
  return ()

{-# LINE 35 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnGetLastError :: IO ((String))
nnGetLastError =
  nnGetLastError'_ >>= \res ->
  C2HSImp.peekCString res >>= \res' ->
  return (res')

{-# LINE 39 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnListAllOpNamesImpl :: IO ((Int), (NNUInt), (Ptr (Ptr CChar)))
nnListAllOpNamesImpl =
  alloca $ \a1' -> 
  alloca $ \a2' -> 
  nnListAllOpNamesImpl'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a1'>>= \a1'' -> 
  peek  a2'>>= \a2'' -> 
  return (res', a1'', a2'')

{-# LINE 44 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnListAllOpNames :: IO (Int, NNUInt, [String])
nnListAllOpNames = do
    (res, n, p) <- nnListAllOpNamesImpl
    ss <- peekStringArray n p
    return (res, n, ss)

nnGetOpHandle :: (String) -> IO ((Int), (OpHandle))
nnGetOpHandle a1 =
  C2HSImp.withCString a1 $ \a1' -> 
  alloca $ \a2' -> 
  nnGetOpHandle'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a2'>>= \a2'' -> 
  return (res', a2'')

{-# LINE 55 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnListUniqueOpsImpl :: IO ((Int), (NNUInt), (Ptr OpHandle))
nnListUniqueOpsImpl =
  alloca $ \a1' -> 
  alloca $ \a2' -> 
  nnListUniqueOpsImpl'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a1'>>= \a1'' -> 
  peek  a2'>>= \a2'' -> 
  return (res', a1'', a2'')

{-# LINE 60 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnListUniqueOps :: IO (Int, NNUInt, [OpHandle])
nnListUniqueOps = do
    (res, n, p) <- nnListUniqueOpsImpl
    ops <- peekArray (fromIntegral n) p
    return (res, n, ops)

nnGetOpInfoImpl :: (OpHandle) -> IO ((Int), (String), (String), (NNUInt), (Ptr (Ptr CChar)), (Ptr (Ptr CChar)), (Ptr (Ptr CChar)), (String))
nnGetOpInfoImpl a1 =
  let {a1' = id a1} in 
  alloca $ \a2' -> 
  alloca $ \a3' -> 
  alloca $ \a4' -> 
  alloca $ \a5' -> 
  alloca $ \a6' -> 
  alloca $ \a7' -> 
  alloca $ \a8' -> 
  nnGetOpInfoImpl'_ a1' a2' a3' a4' a5' a6' a7' a8' >>= \res ->
  let {res' = fromIntegral res} in
  peekString  a2'>>= \a2'' -> 
  peekString  a3'>>= \a3'' -> 
  peek  a4'>>= \a4'' -> 
  peek  a5'>>= \a5'' -> 
  peek  a6'>>= \a6'' -> 
  peek  a7'>>= \a7'' -> 
  peekString  a8'>>= \a8'' -> 
  return (res', a2'', a3'', a4'', a5'', a6'', a7'', a8'')

{-# LINE 77 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnGetOpInfo :: OpHandle
            -> IO (Int, String, String, NNUInt, [String], [String], [String], String)
nnGetOpInfo handle = do
    (res, name, desc, argc, pargv, pargt, pargdesc, rettype) <- nnGetOpInfoImpl handle
    argv <- peekStringArray argc pargv
    argt <- peekStringArray argc pargt
    argdesc <- peekStringArray argc pargdesc
    return (res, name, desc, argc, argv, argt, argdesc, rettype)

nnSymbolCreateAtomicSymbol :: (OpHandle) -> (NNUInt) -> ([String]) -> ([String]) -> IO ((Int), (SymbolHandle))
nnSymbolCreateAtomicSymbol a1 a2 a3 a4 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  withStringArray a3 $ \a3' -> 
  withStringArray a4 $ \a4' -> 
  alloca $ \a5' -> 
  nnSymbolCreateAtomicSymbol'_ a1' a2' a3' a4' a5' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a5'>>= \a5'' -> 
  return (res', a5'')

{-# LINE 94 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolCreateVariable :: (String) -> IO ((Int), (SymbolHandle))
nnSymbolCreateVariable a1 =
  C2HSImp.withCString a1 $ \a1' -> 
  alloca $ \a2' -> 
  nnSymbolCreateVariable'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a2'>>= \a2'' -> 
  return (res', a2'')

{-# LINE 99 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolCreateGroup :: (NNUInt) -> ([SymbolHandle]) -> IO ((Int), (SymbolHandle))
nnSymbolCreateGroup a1 a2 =
  let {a1' = id a1} in 
  withArray a2 $ \a2' -> 
  alloca $ \a3' -> 
  nnSymbolCreateGroup'_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a3'>>= \a3'' -> 
  return (res', a3'')

{-# LINE 105 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnAddControlDeps :: (SymbolHandle) -- ^ The symbol to add dependency edges on.
 -> (SymbolHandle) -- ^ The source handles.
 -> IO ((Int))
nnAddControlDeps a1 a2 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  nnAddControlDeps'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 110 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolFree :: (SymbolHandle) -> IO ((Int))
nnSymbolFree a1 =
  let {a1' = id a1} in 
  nnSymbolFree'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 114 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolCopy :: (SymbolHandle) -> IO ((Int), (SymbolHandle))
nnSymbolCopy a1 =
  let {a1' = id a1} in 
  alloca $ \a2' -> 
  nnSymbolCopy'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a2'>>= \a2'' -> 
  return (res', a2'')

{-# LINE 119 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolPrint :: (SymbolHandle) -> IO ((Int), (String))
nnSymbolPrint a1 =
  let {a1' = id a1} in 
  alloca $ \a2' -> 
  nnSymbolPrint'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  peekString  a2'>>= \a2'' -> 
  return (res', a2'')

{-# LINE 124 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolGetAttr :: (SymbolHandle) -- ^ symbol handle
 -> (String) -- ^ key
 -> IO ((Int), (String), (Int))
nnSymbolGetAttr a1 a2 =
  let {a1' = id a1} in 
  C2HSImp.withCString a2 $ \a2' -> 
  alloca $ \a3' -> 
  alloca $ \a4' -> 
  nnSymbolGetAttr'_ a1' a2' a3' a4' >>= \res ->
  let {res' = fromIntegral res} in
  peekString  a3'>>= \a3'' -> 
  peekIntegral  a4'>>= \a4'' -> 
  return (res', a3'', a4'')

{-# LINE 131 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolSetAttrs :: (SymbolHandle) -> (NNUInt) -> ([String]) -- ^ attribute keys
 -> ([String]) -- ^ attribute values
 -> IO ((Int))
nnSymbolSetAttrs a1 a2 a3 a4 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  withStringArray a3 $ \a3' -> 
  withStringArray a4 $ \a4' -> 
  nnSymbolSetAttrs'_ a1' a2' a3' a4' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 138 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolListAttrsImpl :: (SymbolHandle) -> (Int) -- ^ 0 for recursive, 1 for shallow
 -> IO ((Int), (NNUInt), (Ptr (Ptr CChar)))
nnSymbolListAttrsImpl a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  alloca $ \a3' -> 
  alloca $ \a4' -> 
  nnSymbolListAttrsImpl'_ a1' a2' a3' a4' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a3'>>= \a3'' -> 
  peek  a4'>>= \a4'' -> 
  return (res', a3'', a4'')

{-# LINE 145 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolListAttrs :: SymbolHandle -> Int -> IO (Int, NNUInt, [String])
nnSymbolListAttrs sym recursive = do
    (res, n, p) <- nnSymbolListAttrsImpl sym recursive
    ss <- peekStringArray n p
    return (res, n, ss)

nnSymbolListInputVariablesImpl :: (SymbolHandle) -> (Int) -> IO ((Int), (NNUInt), (Ptr SymbolHandle))
nnSymbolListInputVariablesImpl a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  alloca $ \a3' -> 
  alloca $ \a4' -> 
  nnSymbolListInputVariablesImpl'_ a1' a2' a3' a4' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a3'>>= \a3'' -> 
  peek  a4'>>= \a4'' -> 
  return (res', a3'', a4'')

{-# LINE 158 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolListInputVariables :: SymbolHandle -> Int -> IO (Int, NNUInt, [SymbolHandle])
nnSymbolListInputVariables sym opt = do
    (res, n, p) <- nnSymbolListInputVariablesImpl sym opt
    vs <- peekArray (fromIntegral n) p
    return (res, n, vs)

nnSymbolListInputNamesImpl :: (SymbolHandle) -> (Int) -> IO ((Int), (NNUInt), (Ptr (Ptr CChar)))
nnSymbolListInputNamesImpl a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  alloca $ \a3' -> 
  alloca $ \a4' -> 
  nnSymbolListInputNamesImpl'_ a1' a2' a3' a4' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a3'>>= \a3'' -> 
  peek  a4'>>= \a4'' -> 
  return (res', a3'', a4'')

{-# LINE 171 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolListInputNames :: SymbolHandle -> Int -> IO (Int, NNUInt, [String])
nnSymbolListInputNames sym opt = do
    (res, n, p) <- nnSymbolListInputNamesImpl sym opt
    ss <- peekStringArray n p
    return (res, n, ss)

nnSymbolListOutputNamesImpl :: (SymbolHandle) -> IO ((Int), (NNUInt), (Ptr (Ptr CChar)))
nnSymbolListOutputNamesImpl a1 =
  let {a1' = id a1} in 
  alloca $ \a2' -> 
  alloca $ \a3' -> 
  nnSymbolListOutputNamesImpl'_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a2'>>= \a2'' -> 
  peek  a3'>>= \a3'' -> 
  return (res', a2'', a3'')

{-# LINE 183 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolListOutputNames :: SymbolHandle -> IO (Int, NNUInt, [String])
nnSymbolListOutputNames sym = do
    (res, n, p) <- nnSymbolListOutputNamesImpl sym
    ss <- peekStringArray n p
    return (res, n, ss)

nnSymbolGetInternals :: (SymbolHandle) -> IO ((Int), (SymbolHandle))
nnSymbolGetInternals a1 =
  let {a1' = id a1} in 
  alloca $ \a2' -> 
  nnSymbolGetInternals'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a2'>>= \a2'' -> 
  return (res', a2'')

{-# LINE 194 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolGetOutput :: (SymbolHandle) -> (NNUInt) -> IO ((Int), (SymbolHandle))
nnSymbolGetOutput a1 a2 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  alloca $ \a3' -> 
  nnSymbolGetOutput'_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a3'>>= \a3'' -> 
  return (res', a3'')

{-# LINE 200 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnSymbolCompose :: (SymbolHandle) -> (String) -> (NNUInt) -> ([String]) -> IO ((Int), (SymbolHandle))
nnSymbolCompose a1 a2 a3 a4 =
  let {a1' = id a1} in 
  C2HSImp.withCString a2 $ \a2' -> 
  let {a3' = id a3} in 
  withStringArray a4 $ \a4' -> 
  alloca $ \a5' -> 
  nnSymbolCompose'_ a1' a2' a3' a4' a5' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a5'>>= \a5'' -> 
  return (res', a5'')

{-# LINE 208 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnGraphCreate :: (SymbolHandle) -> IO ((Int), (GraphHandle))
nnGraphCreate a1 =
  let {a1' = id a1} in 
  alloca $ \a2' -> 
  nnGraphCreate'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a2'>>= \a2'' -> 
  return (res', a2'')

{-# LINE 213 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnGraphFree :: (GraphHandle) -> IO ((Int))
nnGraphFree a1 =
  let {a1' = id a1} in 
  nnGraphFree'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 217 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnGraphGetSymbol :: (GraphHandle) -- ^ the graph handle.
 -> IO ((Int), (SymbolHandle))
nnGraphGetSymbol a1 =
  let {a1' = id a1} in 
  alloca $ \a2' -> 
  nnGraphGetSymbol'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a2'>>= \a2'' -> 
  return (res', a2'')

{-# LINE 222 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnGraphSetJSONAttr :: (GraphHandle) -> (String) -> (String) -> IO ((Int))
nnGraphSetJSONAttr a1 a2 a3 =
  let {a1' = id a1} in 
  C2HSImp.withCString a2 $ \a2' -> 
  C2HSImp.withCString a3 $ \a3' -> 
  nnGraphSetJSONAttr'_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 228 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnGraphGetJSONAttr :: (SymbolHandle) -> (String) -> IO ((Int), (String), (Int))
nnGraphGetJSONAttr a1 a2 =
  let {a1' = id a1} in 
  C2HSImp.withCString a2 $ \a2' -> 
  alloca $ \a3' -> 
  alloca $ \a4' -> 
  nnGraphGetJSONAttr'_ a1' a2' a3' a4' >>= \res ->
  let {res' = fromIntegral res} in
  peekString  a3'>>= \a3'' -> 
  peekIntegral  a4'>>= \a4'' -> 
  return (res', a3'', a4'')

{-# LINE 235 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnGraphSetNodeEntryListAttr_ :: (GraphHandle) -> (String) -> (SymbolHandle) -> IO ((Int))
nnGraphSetNodeEntryListAttr_ a1 a2 a3 =
  let {a1' = id a1} in 
  C2HSImp.withCString a2 $ \a2' -> 
  let {a3' = id a3} in 
  nnGraphSetNodeEntryListAttr_'_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 241 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


nnGraphApplyPasses :: (GraphHandle) -> (NNUInt) -> ([String]) -> IO ((Int), (GraphHandle))
nnGraphApplyPasses a1 a2 a3 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  withStringArray a3 $ \a3' -> 
  alloca $ \a4' -> 
  nnGraphApplyPasses'_ a1' a2' a3' a4' >>= \res ->
  let {res' = fromIntegral res} in
  peek  a4'>>= \a4'' -> 
  return (res', a4'')

{-# LINE 248 "src/MXNet/NNVM/Base/Internal/Raw.chs" #-}


foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNAPISetLastError"
  nnAPISetLastError'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> (IO ()))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGetLastError"
  nnGetLastError'_ :: (IO (C2HSImp.Ptr C2HSImp.CChar))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNListAllOpNames"
  nnListAllOpNamesImpl'_ :: ((C2HSImp.Ptr C2HSImp.CUInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar))) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGetOpHandle"
  nnGetOpHandle'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr (OpHandle)) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNListUniqueOps"
  nnListUniqueOpsImpl'_ :: ((C2HSImp.Ptr C2HSImp.CUInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr (OpHandle))) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGetOpInfo"
  nnGetOpInfoImpl'_ :: ((OpHandle) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr C2HSImp.CUInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar))) -> ((C2HSImp.Ptr (C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar))) -> ((C2HSImp.Ptr (C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar))) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CInt)))))))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolCreateAtomicSymbol"
  nnSymbolCreateAtomicSymbol'_ :: ((OpHandle) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr (SymbolHandle)) -> (IO C2HSImp.CInt))))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolCreateVariable"
  nnSymbolCreateVariable'_ :: ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr (SymbolHandle)) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolCreateGroup"
  nnSymbolCreateGroup'_ :: (C2HSImp.CUInt -> ((C2HSImp.Ptr (SymbolHandle)) -> ((C2HSImp.Ptr (SymbolHandle)) -> (IO C2HSImp.CInt))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNAddControlDeps"
  nnAddControlDeps'_ :: ((SymbolHandle) -> ((SymbolHandle) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolFree"
  nnSymbolFree'_ :: ((SymbolHandle) -> (IO C2HSImp.CInt))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolCopy"
  nnSymbolCopy'_ :: ((SymbolHandle) -> ((C2HSImp.Ptr (SymbolHandle)) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolPrint"
  nnSymbolPrint'_ :: ((SymbolHandle) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolGetAttr"
  nnSymbolGetAttr'_ :: ((SymbolHandle) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolSetAttrs"
  nnSymbolSetAttrs'_ :: ((SymbolHandle) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> (IO C2HSImp.CInt)))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolListAttrs"
  nnSymbolListAttrsImpl'_ :: ((SymbolHandle) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CUInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar))) -> (IO C2HSImp.CInt)))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolListInputVariables"
  nnSymbolListInputVariablesImpl'_ :: ((SymbolHandle) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CUInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr (SymbolHandle))) -> (IO C2HSImp.CInt)))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolListInputNames"
  nnSymbolListInputNamesImpl'_ :: ((SymbolHandle) -> (C2HSImp.CInt -> ((C2HSImp.Ptr C2HSImp.CUInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar))) -> (IO C2HSImp.CInt)))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolListOutputNames"
  nnSymbolListOutputNamesImpl'_ :: ((SymbolHandle) -> ((C2HSImp.Ptr C2HSImp.CUInt) -> ((C2HSImp.Ptr (C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar))) -> (IO C2HSImp.CInt))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolGetInternals"
  nnSymbolGetInternals'_ :: ((SymbolHandle) -> ((C2HSImp.Ptr (SymbolHandle)) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolGetOutput"
  nnSymbolGetOutput'_ :: ((SymbolHandle) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (SymbolHandle)) -> (IO C2HSImp.CInt))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNSymbolCompose"
  nnSymbolCompose'_ :: ((SymbolHandle) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr (SymbolHandle)) -> (IO C2HSImp.CInt))))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGraphCreate"
  nnGraphCreate'_ :: ((SymbolHandle) -> ((C2HSImp.Ptr (GraphHandle)) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGraphFree"
  nnGraphFree'_ :: ((GraphHandle) -> (IO C2HSImp.CInt))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGraphGetSymbol"
  nnGraphGetSymbol'_ :: ((GraphHandle) -> ((C2HSImp.Ptr (SymbolHandle)) -> (IO C2HSImp.CInt)))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGraphSetJSONAttr"
  nnGraphSetJSONAttr'_ :: ((GraphHandle) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (IO C2HSImp.CInt))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGraphGetJSONAttr"
  nnGraphGetJSONAttr'_ :: ((SymbolHandle) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr C2HSImp.CInt) -> (IO C2HSImp.CInt)))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGraphSetNodeEntryListAttr_"
  nnGraphSetNodeEntryListAttr_'_ :: ((GraphHandle) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((SymbolHandle) -> (IO C2HSImp.CInt))))

foreign import ccall safe "MXNet/NNVM/Base/Internal/Raw.chs.h NNGraphApplyPasses"
  nnGraphApplyPasses'_ :: ((GraphHandle) -> (C2HSImp.CUInt -> ((C2HSImp.Ptr (C2HSImp.Ptr C2HSImp.CChar)) -> ((C2HSImp.Ptr (GraphHandle)) -> (IO C2HSImp.CInt)))))