import System.IO ( hPutBuf )
#endif
+#if __GLASGOW_HASKELL__ < 503
+import PrelBase ( unpackCString# )
+#else
+import GHC.Base ( unpackCString# )
+#endif
+
import PrimPacked ( strLength )
+#if __GLASGOW_HASKELL__ < 411
+import PrelAddr ( Addr(..) )
+#else
+import Addr ( Addr(..) )
+import Ptr ( Ptr(..) )
+#endif
+
-- Don't import Util( assertPanic ) because it makes a loop in the module structure
infixl 6 <>
ftext s = case lengthFS s of {IBOX(sl) -> textBeside_ (PStr s) sl Empty}
ptext (A# s) = case strLength (A# s) of {IBOX(sl) -> textBeside_ (LStr s sl) sl Empty}
+-- RULE that turns (text "abc") into (ptext (A# "abc"#)) to avoid the
+-- intermediate packing/unpacking of the string.
+{-# RULES
+ "text/str" forall a. text (unpackCString# a) = ptext (A# a)
+ #-}
+
nest IBOX(k) p = mkNest k (reduceDoc p) -- Externally callable version
-- mkNest checks for Nest's invariant that it doesn't have an Empty inside it