module JSONBytesBuilder.Private.ByteString.BoundedPrim where import JSONBytesBuilder.Private.Prelude hiding ((>$<)) import Data.ByteString.Builder.Prim {-# INLINE null #-} null :: BoundedPrim () null = ascii4 ('n', ('u', ('l', 'l'))) {-# INLINE boolean #-} boolean :: BoundedPrim Bool boolean = condB id (ascii4 ('t', ('r', ('u', 'e')))) (ascii5 ('f', ('a', ('l', ('s', 'e'))))) {-# INLINE emptyArray #-} emptyArray :: BoundedPrim () emptyArray = ascii2 ('[', ']') {-# INLINE emptyObject #-} emptyObject :: BoundedPrim () emptyObject = ascii2 ('{', '}') {-# INLINE stringEncodedByte #-} stringEncodedByte :: BoundedPrim Word8 stringEncodedByte = condB (== (fromIntegral . ord) '\\') (ascii2 ('\\', '\\')) $ condB (== (fromIntegral . ord) '\"') (ascii2 ('\\', '"')) $ condB (>= (fromIntegral . ord) '\x20') (liftFixedToBounded word8) $ condB (== (fromIntegral . ord) '\n') (ascii2 ('\\', 'n')) $ condB (== (fromIntegral . ord) '\r') (ascii2 ('\\', 'r')) $ condB (== (fromIntegral . ord) '\t') (ascii2 ('\\', 't')) $ hexEncodedByte {-# INLINE hexEncodedByte #-} hexEncodedByte :: BoundedPrim Word8 hexEncodedByte = liftFixedToBounded ((\c -> ('\\', ('u', fromIntegral c))) >$< char8 >*< char8 >*< word16HexFixed) {-# INLINE ascii2 #-} ascii2 :: (Char, Char) -> BoundedPrim a ascii2 cs = liftFixedToBounded $ const cs >$< char8 >*< char8 {-# INLINE ascii4 #-} ascii4 :: (Char, (Char, (Char, Char))) -> BoundedPrim a ascii4 cs = liftFixedToBounded $ const cs >$< char8 >*< char8 >*< char8 >*< char8 {-# INLINE ascii5 #-} ascii5 :: (Char, (Char, (Char, (Char, Char)))) -> BoundedPrim a ascii5 cs = liftFixedToBounded $ const cs >$< char8 >*< char8 >*< char8 >*< char8 >*< char8 {-# INLINE ascii6 #-} ascii6 :: (Char, (Char, (Char, (Char, (Char, Char))))) -> BoundedPrim a ascii6 cs = liftFixedToBounded $ const cs >$< char8 >*< char8 >*< char8 >*< char8 >*< char8 >*< char8 {-# INLINE ascii8 #-} ascii8 :: (Char, (Char, (Char, (Char, (Char, (Char, (Char, Char))))))) -> BoundedPrim a ascii8 cs = liftFixedToBounded $ const cs >$< char8 >*< char8 >*< char8 >*< char8 >*< char8 >*< char8 >*< char8 >*< char8