-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Simple monadic parser for ASN1 stream types.
--   
--   Simple monadic parser for ASN1 stream types, when ASN1 pattern
--   matching is not convenient.
@package asn1-parse
@version 0.9.4


-- | A parser combinator for ASN1 Stream.
module Data.ASN1.Parse
data ParseASN1 a

-- | run the parse monad over a stream and returns the result and the
--   remaining ASN1 Stream.
runParseASN1State :: ParseASN1 a -> [ASN1] -> Either String (a, [ASN1])

-- | run the parse monad over a stream and returns the result.
--   
--   If there's still some asn1 object in the state after calling f, an
--   error will be raised.
runParseASN1 :: ParseASN1 a -> [ASN1] -> Either String a

-- | throw a parse error
throwParseError :: String -> ParseASN1 a

-- | run a function of the next elements of a container of specified type
onNextContainer :: ASN1ConstructionType -> ParseASN1 a -> ParseASN1 a

-- | just like onNextContainer, except it doesn't throw an error if the
--   container doesn't exists.
onNextContainerMaybe :: ASN1ConstructionType -> ParseASN1 a -> ParseASN1 (Maybe a)

-- | get next container of specified type and return all its elements
getNextContainer :: ASN1ConstructionType -> ParseASN1 [ASN1]

-- | just like getNextContainer, except it doesn't throw an error if the
--   container doesn't exists.
getNextContainerMaybe :: ASN1ConstructionType -> ParseASN1 (Maybe [ASN1])

-- | get next element from the stream
getNext :: ParseASN1 ASN1

-- | get next element from the stream maybe
getNextMaybe :: (ASN1 -> Maybe a) -> ParseASN1 (Maybe a)

-- | returns if there's more elements in the stream.
hasNext :: ParseASN1 Bool

-- | get next object
getObject :: ASN1Object a => ParseASN1 a

-- | get many elements until there's nothing left
getMany :: ParseASN1 a -> ParseASN1 [a]
instance GHC.Base.Functor Data.ASN1.Parse.ParseASN1
instance GHC.Base.Applicative Data.ASN1.Parse.ParseASN1
instance GHC.Base.Monad Data.ASN1.Parse.ParseASN1
