vty 4.0.0 → 4.0.0.1
raw patch · 2 files changed
+8/−8 lines, 2 files
Files
- src/Codec/Binary/UTF8/Width.hs +7/−7
- vty.cabal +1/−1
src/Codec/Binary/UTF8/Width.hs view
@@ -1,6 +1,6 @@ -- Copyright 2009 Corey O'Connor {-# OPTIONS_GHC -D_XOPEN_SOURCE -fno-cse #-}-{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE ForeignFunctionInterface, BangPatterns #-} {-# INCLUDE <wchar.h> #-} module Codec.Binary.UTF8.Width ( wcwidth , wcswidth@@ -17,24 +17,24 @@ import System.IO.Unsafe wcwidth :: Char -> Int-wcwidth c = unsafePerformIO (withCWString [c] $ \ws -> do+wcwidth c = unsafePerformIO (withCWString [c] $! \ws -> do wc <- peek ws -- putStr $ "wcwidth(0x" ++ showHex (fromEnum wc) "" ++ ")"- w <- wcwidth' wc >>= return . fromIntegral+ let !w = fromIntegral $! wcwidth' wc -- putStrLn $ " -> " ++ show w return w ) {-# NOINLINE wcwidth #-} -foreign import ccall unsafe "mk_wcwidth" wcwidth' :: CWchar -> IO CInt+foreign import ccall unsafe "mk_wcwidth" wcwidth' :: CWchar -> CInt wcswidth :: String -> Int-wcswidth str = unsafePerformIO (withCWString str $ \ws -> do+wcswidth str = unsafePerformIO (withCWStringLen str $! \(ws, ws_len) -> do -- putStr $ "wcswidth(...)"- w <- wcswidth' ws >>= return . fromIntegral+ let !w = fromIntegral $! wcswidth' ws (fromIntegral ws_len) -- putStrLn $ " -> " ++ show w return w ) {-# NOINLINE wcswidth #-} -foreign import ccall unsafe "mk_wcswidth" wcswidth' :: Ptr CWchar -> IO CInt+foreign import ccall unsafe "mk_wcswidth" wcswidth' :: Ptr CWchar -> CSize -> CInt
vty.cabal view
@@ -1,5 +1,5 @@ Name: vty-Version: 4.0.0+Version: 4.0.0.1 License: BSD3 License-file: LICENSE Author: Stefan O'Rear, Corey O'Connor