Commit fb8bf853 authored by Ian Lynagh's avatar Ian Lynagh

Remove the GHC 6.4 unicode compat stuff; we can now just use Data.Char

parent b55b4a3e
#if __GLASGOW_HASKELL__ < 605
#if __GLASGOW_HASKELL__ != 604 || __GHC_PATCHLEVEL__ == 0
#include "WCsubst.c"
#endif
#endif
......@@ -109,8 +109,6 @@ Library
c-sources:
parser/cutils.c
utils/md5.c
-- For GHC < 6.5:
cbits/unicode.c
if flag(dynlibs)
c-sources:
......@@ -422,7 +420,6 @@ Library
Serialized
State
StringBuffer
Unicode
UniqFM
UniqSet
Util
......
......@@ -70,11 +70,9 @@ import Util ( maybePrefixMatch, readRational )
import Control.Monad
import Data.Bits
import Data.Char ( chr, ord, isSpace )
import Data.Char
import Data.Ratio
import Debug.Trace
import Unicode ( GeneralCategory(..), generalCategory, isPrint, isUpper )
}
$unispace = \x05 -- Trick Alex into handling Unicode. See alexGetChar.
......
{-# OPTIONS -cpp #-}
module Unicode (
GeneralCategory(..), generalCategory, isPrint, isUpper
) where
#if __GLASGOW_HASKELL__ > 604
import Data.Char (GeneralCategory(..), generalCategory,isPrint,isUpper)
#else
import Foreign.C ( CInt )
import Data.Char ( ord )
-- | Unicode General Categories (column 2 of the UnicodeData table)
-- in the order they are listed in the Unicode standard.
data GeneralCategory
= UppercaseLetter -- Lu Letter, Uppercase
| LowercaseLetter -- Ll Letter, Lowercase
| TitlecaseLetter -- Lt Letter, Titlecase
| ModifierLetter -- Lm Letter, Modifier
| OtherLetter -- Lo Letter, Other
| NonSpacingMark -- Mn Mark, Non-Spacing
| SpacingCombiningMark -- Mc Mark, Spacing Combining
| EnclosingMark -- Me Mark, Enclosing
| DecimalNumber -- Nd Number, Decimal
| LetterNumber -- Nl Number, Letter
| OtherNumber -- No Number, Other
| ConnectorPunctuation -- Pc Punctuation, Connector
| DashPunctuation -- Pd Punctuation, Dash
| OpenPunctuation -- Ps Punctuation, Open
| ClosePunctuation -- Pe Punctuation, Close
| InitialQuote -- Pi Punctuation, Initial quote
| FinalQuote -- Pf Punctuation, Final quote
| OtherPunctuation -- Po Punctuation, Other
| MathSymbol -- Sm Symbol, Math
| CurrencySymbol -- Sc Symbol, Currency
| ModifierSymbol -- Sk Symbol, Modifier
| OtherSymbol -- So Symbol, Other
| Space -- Zs Separator, Space
| LineSeparator -- Zl Separator, Line
| ParagraphSeparator -- Zp Separator, Paragraph
| Control -- Cc Other, Control
| Format -- Cf Other, Format
| Surrogate -- Cs Other, Surrogate
| PrivateUse -- Co Other, Private Use
| NotAssigned -- Cn Other, Not Assigned
deriving (Eq, Ord, Enum, Read, Show, Bounded)
-- | Retrieves the general Unicode category of the character.
generalCategory :: Char -> GeneralCategory
generalCategory c = toEnum $ fromIntegral $ wgencat $ fromIntegral $ ord c
foreign import ccall unsafe "u_gencat"
wgencat :: CInt -> CInt
isPrint :: Char -> Bool
isPrint c = iswprint (fromIntegral (ord c)) /= 0
isUpper :: Char -> Bool
isUpper c = iswupper (fromIntegral (ord c)) /= 0
foreign import ccall unsafe "u_iswprint"
iswprint :: CInt -> CInt
foreign import ccall unsafe "u_iswupper"
iswupper :: CInt -> CInt
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment