{-# LINE 1 "System/Expect/ExpectBindings.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LINE 2 "System/Expect/ExpectBindings.hsc" #-}
module System.Expect.ExpectBindings where

import Foreign
import Foreign.C.Types
import Foreign.C.String
import IO


{-# LINE 10 "System/Expect/ExpectBindings.hsc" #-}


{-# LINE 12 "System/Expect/ExpectBindings.hsc" #-}

newtype ExpType = ExpType { unExpType :: CInt }

data ExpCase = ExpCase { pattern :: CString
     	       	       , regexp :: Ptr ()
		       , exptype :: ExpType
		       , value :: CInt }

instance Storable ExpCase where
  alignment _ = 4
{-# LINE 22 "System/Expect/ExpectBindings.hsc" #-}
  sizeOf _ = (16)
{-# LINE 23 "System/Expect/ExpectBindings.hsc" #-}
  peek ptr = do
    p <- (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 25 "System/Expect/ExpectBindings.hsc" #-}
    r <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr
{-# LINE 26 "System/Expect/ExpectBindings.hsc" #-}
    t <- (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 27 "System/Expect/ExpectBindings.hsc" #-}
    v <- (\hsc_ptr -> peekByteOff hsc_ptr 12) ptr
{-# LINE 28 "System/Expect/ExpectBindings.hsc" #-}
    return $ ExpCase p r (ExpType t) v
  poke ptr (ExpCase p r t v) = do
    ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr p
{-# LINE 31 "System/Expect/ExpectBindings.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr r
{-# LINE 32 "System/Expect/ExpectBindings.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr (unExpType t)
{-# LINE 33 "System/Expect/ExpectBindings.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr v
{-# LINE 34 "System/Expect/ExpectBindings.hsc" #-}

expExact  :: ExpType
expExact  = ExpType 2
expRegexp  :: ExpType
expRegexp  = ExpType 3
expGlob  :: ExpType
expGlob  = ExpType 1
expNull  :: ExpType
expNull  = ExpType 5
expEnd  :: ExpType
expEnd  = ExpType 0

{-# LINE 42 "System/Expect/ExpectBindings.hsc" #-}

foreign import ccall "&" exp_loguser :: Ptr CInt

foreign import ccall exp_popen :: CString -> IO (Ptr CFile)
foreign import ccall exp_fexpectv :: Ptr CFile -> Ptr ExpCase -> IO CInt