module Foundation.Primitive.UTF8.Types
(
Step(..)
, StepBack(..)
, StepASCII(..)
, StepDigit(..)
, isValidStepASCII
, isValidStepDigit
, ValidationFailure(..)
) where
import Foundation.Internal.Base
import Foundation.Primitive.Types.OffsetSize
data Step = Step !Char !(Offset Word8)
data StepBack = StepBack !Char !(Offset Word8)
newtype StepDigit = StepDigit Word8
newtype StepASCII = StepASCII Word8
isValidStepASCII :: StepASCII -> Bool
isValidStepASCII (StepASCII w) = w < 0x80
isValidStepDigit :: StepDigit -> Bool
isValidStepDigit (StepDigit w) = w < 0xa
data ValidationFailure = InvalidHeader
| InvalidContinuation
| MissingByte
| BuildingFailure
deriving (Show,Eq,Typeable)
instance Exception ValidationFailure