{-# LINE 1 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE Trustworthy #-}
module System.Win32.NLS (
module System.Win32.NLS,
{-# LINE 20 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
CodePage,
{-# LINE 22 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
LCID, LANGID, SortID, SubLANGID, PrimaryLANGID,
mAKELCID, lANGIDFROMLCID, sORTIDFROMLCID,
mAKELANGID, pRIMARYLANGID, sUBLANGID
) where
import System.Win32.String (withTStringBufferLen)
import System.Win32.Types
import System.Win32.Utils (trySized)
{-# LINE 36 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
import Control.Monad (when)
import Data.IORef (modifyIORef, newIORef, readIORef)
import Foreign
import Foreign.C
{-# LINE 41 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
import GHC.IO.Encoding.CodePage (CodePage)
{-# LINE 43 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
import Text.Printf (printf)
#include "windows_cconv.h"
{-# LINE 54 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
{-# LINE 58 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
type NLS_FUNCTION = DWORD
lOCALE_SYSTEM_DEFAULT :: LCID
lOCALE_SYSTEM_DEFAULT :: Word32
lOCALE_SYSTEM_DEFAULT = Word32
2048
lOCALE_USER_DEFAULT :: LCID
lOCALE_USER_DEFAULT :: Word32
lOCALE_USER_DEFAULT = Word32
1024
lOCALE_NEUTRAL :: LCID
lOCALE_NEUTRAL :: Word32
lOCALE_NEUTRAL = Word32
0
{-# LINE 73 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
foreign import WINDOWS_CCONV unsafe "windows.h ConvertDefaultLocale"
convertDefaultLocale :: LCID -> IO LCID
{-# LINE 82 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
cP_ACP :: CodePage
cP_ACP :: Word32
cP_ACP = Word32
0
cP_MACCP :: CodePage
cP_MACCP :: Word32
cP_MACCP = Word32
2
cP_OEMCP :: CodePage
cP_OEMCP :: Word32
cP_OEMCP = Word32
1
{-# LINE 88 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
foreign import WINDOWS_CCONV unsafe "windows.h GetACP"
getACP :: IO CodePage
foreign import WINDOWS_CCONV unsafe "windows.h SetThreadLocale"
setThreadLocale :: LCID -> IO ()
type LCTYPE = UINT
lOCALE_FONTSIGNATURE :: LCTYPE
lOCALE_FONTSIGNATURE :: Word32
lOCALE_FONTSIGNATURE = Word32
88
lOCALE_ICALENDARTYPE :: LCTYPE
lOCALE_ICALENDARTYPE :: Word32
lOCALE_ICALENDARTYPE = Word32
4105
lOCALE_ICENTURY :: LCTYPE
lOCALE_ICENTURY :: Word32
lOCALE_ICENTURY = Word32
36
lOCALE_ICOUNTRY :: LCTYPE
lOCALE_ICOUNTRY :: Word32
lOCALE_ICOUNTRY = Word32
5
lOCALE_ICURRDIGITS :: LCTYPE
lOCALE_ICURRDIGITS :: Word32
lOCALE_ICURRDIGITS = Word32
25
lOCALE_ICURRENCY :: LCTYPE
lOCALE_ICURRENCY :: Word32
lOCALE_ICURRENCY = Word32
27
lOCALE_IDATE :: LCTYPE
lOCALE_IDATE :: Word32
lOCALE_IDATE = Word32
33
lOCALE_IDAYLZERO :: LCTYPE
lOCALE_IDAYLZERO :: Word32
lOCALE_IDAYLZERO = Word32
38
lOCALE_IDEFAULTANSICODEPAGE :: LCTYPE
lOCALE_IDEFAULTANSICODEPAGE :: Word32
lOCALE_IDEFAULTANSICODEPAGE = Word32
4100
lOCALE_IDEFAULTCODEPAGE :: LCTYPE
lOCALE_IDEFAULTCODEPAGE :: Word32
lOCALE_IDEFAULTCODEPAGE = Word32
11
lOCALE_IDEFAULTCOUNTRY :: LCTYPE
lOCALE_IDEFAULTCOUNTRY :: Word32
lOCALE_IDEFAULTCOUNTRY = Word32
10
lOCALE_IDEFAULTEBCDICCODEPAGE :: LCTYPE
lOCALE_IDEFAULTEBCDICCODEPAGE :: Word32
lOCALE_IDEFAULTEBCDICCODEPAGE = Word32
4114
lOCALE_IDEFAULTLANGUAGE :: LCTYPE
lOCALE_IDEFAULTLANGUAGE :: Word32
lOCALE_IDEFAULTLANGUAGE = Word32
9
lOCALE_IDEFAULTMACCODEPAGE :: LCTYPE
lOCALE_IDEFAULTMACCODEPAGE :: Word32
lOCALE_IDEFAULTMACCODEPAGE = Word32
4113
lOCALE_IDIGITS :: LCTYPE
lOCALE_IDIGITS :: Word32
lOCALE_IDIGITS = Word32
17
lOCALE_IDIGITSUBSTITUTION :: LCTYPE
lOCALE_IDIGITSUBSTITUTION :: Word32
lOCALE_IDIGITSUBSTITUTION = Word32
4116
lOCALE_IFIRSTDAYOFWEEK :: LCTYPE
lOCALE_IFIRSTDAYOFWEEK :: Word32
lOCALE_IFIRSTDAYOFWEEK = Word32
4108
lOCALE_IFIRSTWEEKOFYEAR :: LCTYPE
lOCALE_IFIRSTWEEKOFYEAR :: Word32
lOCALE_IFIRSTWEEKOFYEAR = Word32
4109
lOCALE_IGEOID :: LCTYPE
lOCALE_IGEOID :: Word32
lOCALE_IGEOID = Word32
91
lOCALE_IINTLCURRDIGITS :: LCTYPE
lOCALE_IINTLCURRDIGITS :: Word32
lOCALE_IINTLCURRDIGITS = Word32
26
lOCALE_ILANGUAGE :: LCTYPE
lOCALE_ILANGUAGE :: Word32
lOCALE_ILANGUAGE = Word32
1
lOCALE_ILDATE :: LCTYPE
lOCALE_ILDATE :: Word32
lOCALE_ILDATE = Word32
34
lOCALE_ILZERO :: LCTYPE
lOCALE_ILZERO :: Word32
lOCALE_ILZERO = Word32
18
lOCALE_IMEASURE :: LCTYPE
lOCALE_IMEASURE :: Word32
lOCALE_IMEASURE = Word32
13
lOCALE_IMONLZERO :: LCTYPE
lOCALE_IMONLZERO :: Word32
lOCALE_IMONLZERO = Word32
39
lOCALE_INEGCURR :: LCTYPE
lOCALE_INEGCURR :: Word32
lOCALE_INEGCURR = Word32
28
lOCALE_INEGNUMBER :: LCTYPE
lOCALE_INEGNUMBER :: Word32
lOCALE_INEGNUMBER = Word32
4112
lOCALE_INEGSEPBYSPACE :: LCTYPE
lOCALE_INEGSEPBYSPACE :: Word32
lOCALE_INEGSEPBYSPACE = Word32
87
lOCALE_INEGSIGNPOSN :: LCTYPE
lOCALE_INEGSIGNPOSN :: Word32
lOCALE_INEGSIGNPOSN = Word32
83
lOCALE_INEGSYMPRECEDES :: LCTYPE
lOCALE_INEGSYMPRECEDES :: Word32
lOCALE_INEGSYMPRECEDES = Word32
86
lOCALE_IOPTIONALCALENDAR :: LCTYPE
lOCALE_IOPTIONALCALENDAR :: Word32
lOCALE_IOPTIONALCALENDAR = Word32
4107
lOCALE_PAPERSIZE :: LCTYPE
lOCALE_PAPERSIZE :: Word32
lOCALE_PAPERSIZE = Word32
4106
lOCALE_IPOSSEPBYSPACE :: LCTYPE
lOCALE_IPOSSEPBYSPACE :: Word32
lOCALE_IPOSSEPBYSPACE = Word32
85
lOCALE_IPOSSIGNPOSN :: LCTYPE
lOCALE_IPOSSIGNPOSN :: Word32
lOCALE_IPOSSIGNPOSN = Word32
82
lOCALE_IPSSYMPRECEDES :: LCTYPE
lOCALE_IPSSYMPRECEDES :: Word32
lOCALE_IPSSYMPRECEDES = Word32
84
lOCALE_ITIME :: LCTYPE
lOCALE_ITIME :: Word32
lOCALE_ITIME = Word32
35
lOCALE_ITIMEMARKPOSN :: LCTYPE
lOCALE_ITIMEMARKPOSN :: Word32
lOCALE_ITIMEMARKPOSN = Word32
4101
lOCALE_ITLZERO :: LCTYPE
lOCALE_ITLZERO :: Word32
lOCALE_ITLZERO = Word32
37
lOCALE_RETURN_NUMBER :: LCTYPE
lOCALE_RETURN_NUMBER :: Word32
lOCALE_RETURN_NUMBER = Word32
536870912
lOCALE_S1159 :: LCTYPE
lOCALE_S1159 :: Word32
lOCALE_S1159 = Word32
40
lOCALE_S2359 :: LCTYPE
lOCALE_S2359 :: Word32
lOCALE_S2359 = Word32
41
lOCALE_SABBREVCTRYNAME :: LCTYPE
lOCALE_SABBREVCTRYNAME :: Word32
lOCALE_SABBREVCTRYNAME = Word32
7
lOCALE_SABBREVDAYNAME1 :: LCTYPE
lOCALE_SABBREVDAYNAME1 :: Word32
lOCALE_SABBREVDAYNAME1 = Word32
49
lOCALE_SABBREVDAYNAME2 :: LCTYPE
lOCALE_SABBREVDAYNAME2 :: Word32
lOCALE_SABBREVDAYNAME2 = Word32
50
lOCALE_SABBREVDAYNAME3 :: LCTYPE
lOCALE_SABBREVDAYNAME3 :: Word32
lOCALE_SABBREVDAYNAME3 = Word32
51
lOCALE_SABBREVDAYNAME4 :: LCTYPE
lOCALE_SABBREVDAYNAME4 :: Word32
lOCALE_SABBREVDAYNAME4 = Word32
52
lOCALE_SABBREVDAYNAME5 :: LCTYPE
lOCALE_SABBREVDAYNAME5 :: Word32
lOCALE_SABBREVDAYNAME5 = Word32
53
lOCALE_SABBREVDAYNAME6 :: LCTYPE
lOCALE_SABBREVDAYNAME6 :: Word32
lOCALE_SABBREVDAYNAME6 = Word32
54
lOCALE_SABBREVDAYNAME7 :: LCTYPE
lOCALE_SABBREVDAYNAME7 :: Word32
lOCALE_SABBREVDAYNAME7 = Word32
55
lOCALE_SABBREVLANGNAME :: LCTYPE
lOCALE_SABBREVLANGNAME :: Word32
lOCALE_SABBREVLANGNAME = Word32
3
lOCALE_SABBREVMONTHNAME1 :: LCTYPE
lOCALE_SABBREVMONTHNAME1 :: Word32
lOCALE_SABBREVMONTHNAME1 = Word32
68
lOCALE_SABBREVMONTHNAME2 :: LCTYPE
lOCALE_SABBREVMONTHNAME2 :: Word32
lOCALE_SABBREVMONTHNAME2 = Word32
69
lOCALE_SABBREVMONTHNAME3 :: LCTYPE
lOCALE_SABBREVMONTHNAME3 :: Word32
lOCALE_SABBREVMONTHNAME3 = Word32
70
lOCALE_SABBREVMONTHNAME4 :: LCTYPE
lOCALE_SABBREVMONTHNAME4 :: Word32
lOCALE_SABBREVMONTHNAME4 = Word32
71
lOCALE_SABBREVMONTHNAME5 :: LCTYPE
lOCALE_SABBREVMONTHNAME5 :: Word32
lOCALE_SABBREVMONTHNAME5 = Word32
72
lOCALE_SABBREVMONTHNAME6 :: LCTYPE
lOCALE_SABBREVMONTHNAME6 :: Word32
lOCALE_SABBREVMONTHNAME6 = Word32
73
lOCALE_SABBREVMONTHNAME7 :: LCTYPE
lOCALE_SABBREVMONTHNAME7 :: Word32
lOCALE_SABBREVMONTHNAME7 = Word32
74
lOCALE_SABBREVMONTHNAME8 :: LCTYPE
lOCALE_SABBREVMONTHNAME8 :: Word32
lOCALE_SABBREVMONTHNAME8 = Word32
75
lOCALE_SABBREVMONTHNAME9 :: LCTYPE
lOCALE_SABBREVMONTHNAME9 :: Word32
lOCALE_SABBREVMONTHNAME9 = Word32
76
lOCALE_SABBREVMONTHNAME10 :: LCTYPE
lOCALE_SABBREVMONTHNAME10 :: Word32
lOCALE_SABBREVMONTHNAME10 = Word32
77
lOCALE_SABBREVMONTHNAME11 :: LCTYPE
lOCALE_SABBREVMONTHNAME11 :: Word32
lOCALE_SABBREVMONTHNAME11 = Word32
78
lOCALE_SABBREVMONTHNAME12 :: LCTYPE
lOCALE_SABBREVMONTHNAME12 :: Word32
lOCALE_SABBREVMONTHNAME12 = Word32
79
lOCALE_SABBREVMONTHNAME13 :: LCTYPE
lOCALE_SABBREVMONTHNAME13 :: Word32
lOCALE_SABBREVMONTHNAME13 = Word32
4111
lOCALE_SCONSOLEFALLBACKNAME :: LCTYPE
lOCALE_SCONSOLEFALLBACKNAME :: Word32
lOCALE_SCONSOLEFALLBACKNAME = Word32
110
lOCALE_SCURRENCY :: LCTYPE
lOCALE_SCURRENCY :: Word32
lOCALE_SCURRENCY = Word32
20
lOCALE_SDATE :: LCTYPE
lOCALE_SDATE :: Word32
lOCALE_SDATE = Word32
29
lOCALE_SDAYNAME1 :: LCTYPE
lOCALE_SDAYNAME1 :: Word32
lOCALE_SDAYNAME1 = Word32
42
lOCALE_SDAYNAME2 :: LCTYPE
lOCALE_SDAYNAME2 :: Word32
lOCALE_SDAYNAME2 = Word32
43
lOCALE_SDAYNAME3 :: LCTYPE
lOCALE_SDAYNAME3 :: Word32
lOCALE_SDAYNAME3 = Word32
44
lOCALE_SDAYNAME4 :: LCTYPE
lOCALE_SDAYNAME4 :: Word32
lOCALE_SDAYNAME4 = Word32
45
lOCALE_SDAYNAME5 :: LCTYPE
lOCALE_SDAYNAME5 :: Word32
lOCALE_SDAYNAME5 = Word32
46
lOCALE_SDAYNAME6 :: LCTYPE
lOCALE_SDAYNAME6 :: Word32
lOCALE_SDAYNAME6 = Word32
47
lOCALE_SDAYNAME7 :: LCTYPE
lOCALE_SDAYNAME7 :: Word32
lOCALE_SDAYNAME7 = Word32
48
lOCALE_SDECIMAL :: LCTYPE
lOCALE_SDECIMAL :: Word32
lOCALE_SDECIMAL = Word32
14
lOCALE_SDURATION :: LCTYPE
lOCALE_SDURATION :: Word32
lOCALE_SDURATION = Word32
93
lOCALE_SENGCURRNAME :: LCTYPE
lOCALE_SENGCURRNAME :: Word32
lOCALE_SENGCURRNAME = Word32
4103
lOCALE_SENGLISHCOUNTRYNAME :: LCTYPE
lOCALE_SENGLISHCOUNTRYNAME :: Word32
lOCALE_SENGLISHCOUNTRYNAME = Word32
4098
lOCALE_SENGLISHLANGUAGENAME :: LCTYPE
lOCALE_SENGLISHLANGUAGENAME :: Word32
lOCALE_SENGLISHLANGUAGENAME = Word32
4097
lOCALE_SGROUPING :: LCTYPE
lOCALE_SGROUPING = 16
lOCALE_SINTLSYMBOL :: LCTYPE
lOCALE_SINTLSYMBOL = 21
lOCALE_SISO3166CTRYNAME :: LCTYPE
lOCALE_SISO3166CTRYNAME :: Word32
lOCALE_SISO3166CTRYNAME = Word32
90
lOCALE_SISO3166CTRYNAME2 :: LCTYPE
lOCALE_SISO3166CTRYNAME2 :: Word32
lOCALE_SISO3166CTRYNAME2 = Word32
104
lOCALE_SISO639LANGNAME :: LCTYPE
lOCALE_SISO639LANGNAME :: Word32
lOCALE_SISO639LANGNAME = Word32
89
lOCALE_SISO639LANGNAME2 :: LCTYPE
lOCALE_SISO639LANGNAME2 :: Word32
lOCALE_SISO639LANGNAME2 = Word32
103
lOCALE_SKEYBOARDSTOINSTALL :: LCTYPE
lOCALE_SKEYBOARDSTOINSTALL :: Word32
lOCALE_SKEYBOARDSTOINSTALL = Word32
94
lOCALE_SLIST :: LCTYPE
lOCALE_SLIST :: Word32
lOCALE_SLIST = Word32
12
lOCALE_SLONGDATE :: LCTYPE
lOCALE_SLONGDATE :: Word32
lOCALE_SLONGDATE = Word32
32
lOCALE_SMONDECIMALSEP :: LCTYPE
lOCALE_SMONDECIMALSEP :: Word32
lOCALE_SMONDECIMALSEP = Word32
22
lOCALE_SMONGROUPING :: LCTYPE
lOCALE_SMONGROUPING :: Word32
lOCALE_SMONGROUPING = Word32
24
lOCALE_SMONTHNAME1 :: LCTYPE
lOCALE_SMONTHNAME1 :: Word32
lOCALE_SMONTHNAME1 = Word32
56
lOCALE_SMONTHNAME2 :: LCTYPE
lOCALE_SMONTHNAME2 :: Word32
lOCALE_SMONTHNAME2 = Word32
57
lOCALE_SMONTHNAME3 :: LCTYPE
lOCALE_SMONTHNAME3 :: Word32
lOCALE_SMONTHNAME3 = Word32
58
lOCALE_SMONTHNAME4 :: LCTYPE
lOCALE_SMONTHNAME4 :: Word32
lOCALE_SMONTHNAME4 = Word32
59
lOCALE_SMONTHNAME5 :: LCTYPE
lOCALE_SMONTHNAME5 :: Word32
lOCALE_SMONTHNAME5 = Word32
60
lOCALE_SMONTHNAME6 :: LCTYPE
lOCALE_SMONTHNAME6 :: Word32
lOCALE_SMONTHNAME6 = Word32
61
lOCALE_SMONTHNAME7 :: LCTYPE
lOCALE_SMONTHNAME7 :: Word32
lOCALE_SMONTHNAME7 = Word32
62
lOCALE_SMONTHNAME8 :: LCTYPE
lOCALE_SMONTHNAME8 :: Word32
lOCALE_SMONTHNAME8 = Word32
63
lOCALE_SMONTHNAME9 :: LCTYPE
lOCALE_SMONTHNAME9 :: Word32
lOCALE_SMONTHNAME9 = Word32
64
lOCALE_SMONTHNAME10 :: LCTYPE
lOCALE_SMONTHNAME10 = 65
lOCALE_SMONTHNAME11 :: LCTYPE
lOCALE_SMONTHNAME11 = 66
lOCALE_SMONTHNAME12 :: LCTYPE
lOCALE_SMONTHNAME12 = 67
lOCALE_SMONTHNAME13 :: LCTYPE
lOCALE_SMONTHNAME13 :: Word32
lOCALE_SMONTHNAME13 = 4110
lOCALE_SMONTHOUSANDSEP :: LCTYPE
lOCALE_SMONTHOUSANDSEP :: Word32
lOCALE_SMONTHOUSANDSEP = Word32
23
lOCALE_SNAME :: LCTYPE
lOCALE_SNAME :: Word32
lOCALE_SNAME = Word32
92
lOCALE_SNAN :: LCTYPE
lOCALE_SNAN = 105
lOCALE_SNATIVECOUNTRYNAME :: LCTYPE
lOCALE_SNATIVECOUNTRYNAME :: Word32
lOCALE_SNATIVECOUNTRYNAME = Word32
8
lOCALE_SNATIVECURRNAME :: LCTYPE
lOCALE_SNATIVECURRNAME :: Word32
lOCALE_SNATIVECURRNAME = Word32
4104
lOCALE_SNATIVEDIGITS :: LCTYPE
lOCALE_SNATIVEDIGITS :: Word32
lOCALE_SNATIVEDIGITS = Word32
19
lOCALE_SNEGATIVESIGN :: LCTYPE
lOCALE_SNEGATIVESIGN :: Word32
lOCALE_SNEGATIVESIGN = Word32
81
lOCALE_SNEGINFINITY :: LCTYPE
lOCALE_SNEGINFINITY :: Word32
lOCALE_SNEGINFINITY = Word32
107
lOCALE_SPARENT :: LCTYPE
lOCALE_SPARENT :: Word32
lOCALE_SPARENT = Word32
109
lOCALE_SPOSINFINITY :: LCTYPE
lOCALE_SPOSINFINITY :: Word32
lOCALE_SPOSINFINITY = Word32
106
lOCALE_SPOSITIVESIGN :: LCTYPE
lOCALE_SPOSITIVESIGN :: Word32
lOCALE_SPOSITIVESIGN = 80
lOCALE_SSCRIPTS :: LCTYPE
lOCALE_SSCRIPTS :: Word32
lOCALE_SSCRIPTS = Word32
108
lOCALE_SSHORTDATE :: LCTYPE
lOCALE_SSHORTDATE :: Word32
lOCALE_SSHORTDATE = 31
lCMAP_SIMPLIFIED_CHINESE :: Word32
lOCALE_SSHORTESTDAYNAME1 :: LCTYPE
lOCALE_SSHORTESTDAYNAME1 :: Word32
lOCALE_SSHORTESTDAYNAME1 = Word32
96
lOCALE_SSHORTESTDAYNAME2 :: LCTYPE
lOCALE_SSHORTESTDAYNAME2 :: Word32
lOCALE_SSHORTESTDAYNAME2 = Word32
97
lOCALE_SSHORTESTDAYNAME3 :: LCTYPE
lOCALE_SSHORTESTDAYNAME3 :: Word32
lOCALE_SSHORTESTDAYNAME3 = Word32
98
lOCALE_SSHORTESTDAYNAME4 :: LCTYPE
lOCALE_SSHORTESTDAYNAME4 :: Word32
lOCALE_SSHORTESTDAYNAME4 = Word32
99
lOCALE_SSHORTESTDAYNAME5 :: LCTYPE
lOCALE_SSHORTESTDAYNAME5 :: Word32
lOCALE_SSHORTESTDAYNAME5 = Word32
100
lOCALE_SSHORTESTDAYNAME6 :: LCTYPE
lOCALE_SSHORTESTDAYNAME6 :: Word32
lOCALE_SSHORTESTDAYNAME6 = Word32
101
lOCALE_SSHORTESTDAYNAME7 :: LCTYPE
lOCALE_SSHORTESTDAYNAME7 :: Word32
lOCALE_SSHORTESTDAYNAME7 = Word32
102
lOCALE_SSORTNAME :: LCTYPE
lOCALE_SSORTNAME :: Word32
lOCALE_SSORTNAME = Word32
4115
lOCALE_STHOUSAND :: LCTYPE
lOCALE_STHOUSAND :: Word32
lOCALE_STHOUSAND = Word32
15
lOCALE_STIME :: LCTYPE
lOCALE_STIME :: Word32
lOCALE_STIME = Word32
30
lOCALE_STIMEFORMAT :: LCTYPE
lOCALE_STIMEFORMAT :: Word32
lOCALE_STIMEFORMAT = Word32
4099
lOCALE_SYEARMONTH :: LCTYPE
lOCALE_SYEARMONTH :: Word32
lOCALE_SYEARMONTH = Word32
4102
{-# LINE 251 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
data LCData
= LCTextualData !String
| LCNumericData !DWORD
| LCSignatureData !LOCALESIGNATURE
deriving (Eq, Show)
data LOCALESIGNATURE = LOCALESIGNATURE
{ lsUsb :: !UnicodeSubsetBitfield
, lsCsbDefault :: !DDWORD
, lsCsbSupported :: !DDWORD
} deriving (Eq, Show)
instance Storable LOCALESIGNATURE where
sizeOf = const (32)
{-# LINE 272 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
alignment _ = 4
{-# LINE 273 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
peek buf = do
lsUsb' <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) buf
{-# LINE 275 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
lsCsbDefault' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) buf
{-# LINE 276 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
lsCsbSupported' <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) buf
{-# LINE 277 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
return $ LOCALESIGNATURE lsUsb' lsCsbDefault' lsCsbSupported'
poke buf info = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) buf (lsUsb info)
{-# LINE 280 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 16)) buf (lsCsbDefault info)
{-# LINE 281 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 24)) buf (lsCsbSupported info)
{-# LINE 282 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
data UnicodeSubsetBitfield = UnicodeSubsetBitfield
{ usbLow :: !DDWORD
, usbHigh :: !DDWORD
} deriving (Eq, Show)
instance Storable UnicodeSubsetBitfield where
sizeOf _ = 2 * sizeOf (undefined :: DDWORD)
alignment _ = alignment (undefined :: DWORD)
peek buf = do
usbLow' <- (peekByteOff buf 0 :: IO DDWORD)
usbHigh' <- (peekByteOff buf (sizeOf (undefined :: DDWORD)) :: IO DDWORD)
return $ UnicodeSubsetBitfield usbLow' usbHigh'
poke buf info = do
pokeByteOff buf 0 (usbLow info)
pokeByteOff buf (sizeOf (undefined :: DDWORD)) (usbHigh info)
getLocaleInfoEx :: Maybe String -> LCTYPE -> IO LCData
getLocaleInfoEx locale ty
| ty == lOCALE_FONTSIGNATURE =
getLocaleInfoEx' LCSignatureData localSigCharCount
| ty .&. lOCALE_RETURN_NUMBER /= 0 =
getLocaleInfoEx' LCNumericData dWORDCharCount
| otherwise = maybeWith withTString locale $ \c_locale ->
LCTextualData <$> trySized cFuncName (c_GetLocaleInfoEx c_locale ty)
where
cFuncName = "GetLocaleInfoEx"
localSigCharCount = ((32)) `div` ((2))
{-# LINE 315 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
dWORDCharCount = ((4)) `div` ((2))
{-# LINE 316 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
getLocaleInfoEx' constructor bufSize = maybeWith withTString locale $
\c_locale -> do
value <- alloca $ \buf -> do
_ <- failIfZero cFuncName
$ c_GetLocaleInfoEx c_locale ty (castPtr buf) bufSize
peek buf
return $ constructor value
foreign import WINDOWS_CCONV unsafe "windows.h GetLocaleInfoEx"
c_GetLocaleInfoEx :: LPCWSTR -> LCTYPE -> LPWSTR -> CInt -> IO CInt
setLocaleInfo :: LCID -> LCTYPE -> String -> IO ()
setLocaleInfo locale ty info =
withTString info $ \ c_info ->
failIfFalse_ "SetLocaleInfo" $ c_SetLocaleInfo locale ty c_info
foreign import WINDOWS_CCONV unsafe "windows.h SetLocaleInfoW"
c_SetLocaleInfo :: LCID -> LCTYPE -> LPCTSTR -> IO Bool
type LCMapFlags = DWORD
lCMAP_BYTEREV :: LCMapFlags
lCMAP_BYTEREV = 2048
lCMAP_FULLWIDTH :: LCMapFlags
lCMAP_FULLWIDTH = 8388608
lCMAP_HALFWIDTH :: LCMapFlags
lCMAP_HALFWIDTH = 4194304
lCMAP_HIRAGANA :: LCMapFlags
lCMAP_HIRAGANA = 1048576
lCMAP_KATAKANA :: LCMapFlags
lCMAP_KATAKANA = 2097152
lCMAP_LINGUISTIC_CASING :: LCMapFlags
lCMAP_LINGUISTIC_CASING = 16777216
lCMAP_LOWERCASE :: LCMapFlags
lCMAP_LOWERCASE = 256
lCMAP_SIMPLIFIED_CHINESE :: LCMapFlags
lCMAP_SIMPLIFIED_CHINESE = 33554432
lCMAP_SORTKEY :: LCMapFlags
lCMAP_SORTKEY = 1024
lCMAP_TRADITIONAL_CHINESE :: LCMapFlags
lCMAP_TRADITIONAL_CHINESE = 67108864
lCMAP_UPPERCASE :: LCMapFlags
lCMAP_UPPERCASE = 512
lINGUISTIC_IGNORECASE :: LCMapFlags
lINGUISTIC_IGNORECASE = 16
lINGUISTIC_IGNOREDIACRITIC :: LCMapFlags
lINGUISTIC_IGNOREDIACRITIC = 32
nORM_IGNORECASE :: LCMapFlags
nORM_IGNORECASE = 1
nORM_IGNORENONSPACE :: LCMapFlags
nORM_IGNORENONSPACE = 2
nORM_IGNOREKANATYPE :: LCMapFlags
nORM_IGNOREKANATYPE = 65536
nORM_IGNORESYMBOLS :: LCMapFlags
nORM_IGNORESYMBOLS = 4
nORM_IGNOREWIDTH :: LCMapFlags
nORM_IGNOREWIDTH = 131072
nORM_LINGUISTIC_CASING :: LCMapFlags
nORM_LINGUISTIC_CASING = 134217728
sORT_STRINGSORT :: LCMapFlags
sORT_STRINGSORT = 4096
{-# LINE 359 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
data NLSVERSIONINFOEX = NLSVERSIONINFOEX
{ dwNLSVersionInfoSize :: DWORD
, dwNLSVersion :: DWORD
, dwDefinedVersion :: DWORD
, dwEffectiveId :: DWORD
, guidCustomVersion :: GUID
} deriving (Eq, Show)
instance Storable NLSVERSIONINFOEX where
sizeOf = const (32)
{-# LINE 370 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
alignment _ = 4
{-# LINE 371 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
peek buf = do
dwNLSVersionInfoSize' <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) buf
{-# LINE 373 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
dwNLSVersion' <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) buf
{-# LINE 374 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
dwDefinedVersion' <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) buf
{-# LINE 375 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
dwEffectiveId' <- ((\hsc_ptr -> peekByteOff hsc_ptr 12)) buf
{-# LINE 376 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
guidCustomVersion' <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) buf
{-# LINE 377 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
return $ NLSVERSIONINFOEX dwNLSVersionInfoSize' dwNLSVersion'
dwDefinedVersion' dwEffectiveId' guidCustomVersion'
poke buf info = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) buf
{-# LINE 381 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
(dwNLSVersionInfoSize info)
((\hsc_ptr -> pokeByteOff hsc_ptr 4)) buf (dwNLSVersion info)
{-# LINE 383 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) buf (dwDefinedVersion info)
{-# LINE 384 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 12)) buf (dwEffectiveId info)
{-# LINE 385 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 16)) buf (guidCustomVersion info)
{-# LINE 386 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
data GUID = GUID
!Word32
!Word16
!Word16
!Word8
!Word8
!Word8
!Word8
!Word8
!Word8
!Word8
!Word8
deriving (GUID -> GUID -> Bool
(GUID -> GUID -> Bool) -> (GUID -> GUID -> Bool) -> Eq GUID
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: GUID -> GUID -> Bool
== :: GUID -> GUID -> Bool
$c/= :: GUID -> GUID -> Bool
/= :: GUID -> GUID -> Bool
Eq)
instance Show GUID where
show :: GUID -> [Char]
show (GUID Word32
data1 Word16
data2 Word16
data3 Word8
b1 Word8
b2 Word8
b3 Word8
b4 Word8
b5 Word8
b6 Word8
b7 Word8
b8) =
[Char]
-> Word32
-> Word16
-> Word16
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> [Char]
forall r. PrintfType r => [Char] -> r
printf [Char]
"{%.8x-%.4x-%.4x-%.2x%2x-%.2x%.2x%.2x%.2x%.2x%.2x}" Word32
data1 Word16
data2 Word16
data3 Word8
b1 Word8
b2 Word8
b3 Word8
b4 Word8
b5 Word8
b6 Word8
b7 Word8
b8
instance Storable GUID where
sizeOf :: GUID -> Int
sizeOf GUID
_ = Int
16
alignment :: GUID -> Int
alignment GUID
_ = Int
4
peekByteOff :: forall b. Ptr b -> Int -> IO GUID
peekByteOff Ptr b
p Int
off = Word32
-> Word16
-> Word16
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> GUID
GUID
(Word32
-> Word16
-> Word16
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> GUID)
-> IO Word32
-> IO
(Word16
-> Word16
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> GUID)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr b -> Int -> IO Word32
forall b. Ptr b -> Int -> IO Word32
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p Int
off
IO
(Word16
-> Word16
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> GUID)
-> IO Word16
-> IO
(Word16
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> GUID)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word16
forall b. Ptr b -> Int -> IO Word16
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
4)
IO
(Word16
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> GUID)
-> IO Word16
-> IO
(Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> GUID)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word16
forall b. Ptr b -> Int -> IO Word16
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
6)
IO
(Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> Word8
-> GUID)
-> IO Word8
-> IO
(Word8
-> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> GUID)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8)
IO
(Word8
-> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> GUID)
-> IO Word8
-> IO (Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> GUID)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
9)
IO (Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> GUID)
-> IO Word8
-> IO (Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> GUID)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
10)
IO (Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> GUID)
-> IO Word8 -> IO (Word8 -> Word8 -> Word8 -> Word8 -> GUID)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
11)
IO (Word8 -> Word8 -> Word8 -> Word8 -> GUID)
-> IO Word8 -> IO (Word8 -> Word8 -> Word8 -> GUID)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
12)
IO (Word8 -> Word8 -> Word8 -> GUID)
-> IO Word8 -> IO (Word8 -> Word8 -> GUID)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
13)
IO (Word8 -> Word8 -> GUID) -> IO Word8 -> IO (Word8 -> GUID)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
14)
IO (Word8 -> GUID) -> IO Word8 -> IO GUID
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr b -> Int -> IO Word8
forall b. Ptr b -> Int -> IO Word8
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
15)
pokeByteOff :: forall b. Ptr b -> Int -> GUID -> IO ()
pokeByteOff Ptr b
p Int
off (GUID Word32
data1 Word16
data2 Word16
data3 Word8
b1 Word8
b2 Word8
b3 Word8
b4 Word8
b5 Word8
b6 Word8
b7 Word8
b8) = do
Ptr b -> Int -> Word32 -> IO ()
forall b. Ptr b -> Int -> Word32 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p Int
off Word32
data1
Ptr b -> Int -> Word16 -> IO ()
forall b. Ptr b -> Int -> Word16 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
4) Word16
data2
Ptr b -> Int -> Word16 -> IO ()
forall b. Ptr b -> Int -> Word16 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
6) Word16
data3
Ptr b -> Int -> Word8 -> IO ()
forall b. Ptr b -> Int -> Word8 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8) Word8
b1
Ptr b -> Int -> Word8 -> IO ()
forall b. Ptr b -> Int -> Word8 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
9) Word8
b2
Ptr b -> Int -> Word8 -> IO ()
forall b. Ptr b -> Int -> Word8 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
10) Word8
b3
Ptr b -> Int -> Word8 -> IO ()
forall b. Ptr b -> Int -> Word8 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
11) Word8
b4
Ptr b -> Int -> Word8 -> IO ()
forall b. Ptr b -> Int -> Word8 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
12) Word8
b5
Ptr b -> Int -> Word8 -> IO ()
forall b. Ptr b -> Int -> Word8 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
13) Word8
b6
Ptr b -> Int -> Word8 -> IO ()
forall b. Ptr b -> Int -> Word8 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
14) Word8
b7
Ptr b -> Int -> Word8 -> IO ()
forall b. Ptr b -> Int -> Word8 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr b
p (Int
off Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
15) Word8
b8
getNLSVersionEx :: Maybe String -> IO NLSVERSIONINFOEX
getNLSVersionEx :: Maybe [Char] -> IO NLSVERSIONINFOEX
getNLSVersionEx Maybe [Char]
locale = ([Char]
-> (Ptr CWchar -> IO NLSVERSIONINFOEX) -> IO NLSVERSIONINFOEX)
-> Maybe [Char]
-> (Ptr CWchar -> IO NLSVERSIONINFOEX)
-> IO NLSVERSIONINFOEX
forall a b c.
(a -> (Ptr b -> IO c) -> IO c)
-> Maybe a -> (Ptr b -> IO c) -> IO c
maybeWith [Char]
-> (Ptr CWchar -> IO NLSVERSIONINFOEX) -> IO NLSVERSIONINFOEX
forall a. [Char] -> (Ptr CWchar -> IO a) -> IO a
withTString Maybe [Char]
locale ((Ptr CWchar -> IO NLSVERSIONINFOEX) -> IO NLSVERSIONINFOEX)
-> (Ptr CWchar -> IO NLSVERSIONINFOEX) -> IO NLSVERSIONINFOEX
forall a b. (a -> b) -> a -> b
$ \Ptr CWchar
c_locale ->
NLSVERSIONINFOEX
-> (Ptr NLSVERSIONINFOEX -> IO NLSVERSIONINFOEX)
-> IO NLSVERSIONINFOEX
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with NLSVERSIONINFOEX
defaultVersionInfo ((Ptr NLSVERSIONINFOEX -> IO NLSVERSIONINFOEX)
-> IO NLSVERSIONINFOEX)
-> (Ptr NLSVERSIONINFOEX -> IO NLSVERSIONINFOEX)
-> IO NLSVERSIONINFOEX
forall a b. (a -> b) -> a -> b
$ \Ptr NLSVERSIONINFOEX
c_versionInfo -> do
[Char] -> IO Bool -> IO ()
failIfFalse_ [Char]
"GetNLSVersionEx" (IO Bool -> IO ()) -> IO Bool -> IO ()
forall a b. (a -> b) -> a -> b
$
Word32 -> Ptr CWchar -> Ptr NLSVERSIONINFOEX -> IO Bool
c_GetNLSVersionEx Word32
function Ptr CWchar
c_locale Ptr NLSVERSIONINFOEX
c_versionInfo
Ptr NLSVERSIONINFOEX -> IO NLSVERSIONINFOEX
forall a. Storable a => Ptr a -> IO a
peek Ptr NLSVERSIONINFOEX
c_versionInfo
where
function :: Word32
function = Word32
1
{-# LINE 442 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
defaultVersionInfo = NLSVERSIONINFOEX
{ dwNLSVersionInfoSize = (32)
{-# LINE 444 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
, dwNLSVersion = 0
, dwDefinedVersion = 0
, dwEffectiveId = 0
, guidCustomVersion = GUID 0 0 0 0 0 0 0 0 0 0 0
}
foreign import WINDOWS_CCONV unsafe "windows.h GetNLSVersionEx"
c_GetNLSVersionEx :: NLS_FUNCTION
-> LPCWSTR
-> Ptr NLSVERSIONINFOEX
-> IO Bool
lCMapStringEx :: Maybe String
-> LCMapFlags
-> String
-> NLSVERSIONINFOEX
-> IO String
lCMapStringEx :: Maybe [Char] -> Word32 -> [Char] -> NLSVERSIONINFOEX -> IO [Char]
lCMapStringEx Maybe [Char]
locale Word32
flags [Char]
src NLSVERSIONINFOEX
versionInfo =
([Char] -> (Ptr CWchar -> IO [Char]) -> IO [Char])
-> Maybe [Char] -> (Ptr CWchar -> IO [Char]) -> IO [Char]
forall a b c.
(a -> (Ptr b -> IO c) -> IO c)
-> Maybe a -> (Ptr b -> IO c) -> IO c
maybeWith [Char] -> (Ptr CWchar -> IO [Char]) -> IO [Char]
forall a. [Char] -> (Ptr CWchar -> IO a) -> IO a
withTString Maybe [Char]
locale ((Ptr CWchar -> IO [Char]) -> IO [Char])
-> (Ptr CWchar -> IO [Char]) -> IO [Char]
forall a b. (a -> b) -> a -> b
$ \Ptr CWchar
c_locale ->
[Char] -> ((Ptr CWchar, Int) -> IO [Char]) -> IO [Char]
forall a. [Char] -> ((Ptr CWchar, Int) -> IO a) -> IO a
withTStringLen [Char]
src (((Ptr CWchar, Int) -> IO [Char]) -> IO [Char])
-> ((Ptr CWchar, Int) -> IO [Char]) -> IO [Char]
forall a b. (a -> b) -> a -> b
$ \(Ptr CWchar
c_src, Int
src_len) ->
NLSVERSIONINFOEX
-> (Ptr NLSVERSIONINFOEX -> IO [Char]) -> IO [Char]
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with NLSVERSIONINFOEX
versionInfo ((Ptr NLSVERSIONINFOEX -> IO [Char]) -> IO [Char])
-> (Ptr NLSVERSIONINFOEX -> IO [Char]) -> IO [Char]
forall a b. (a -> b) -> a -> b
$ \Ptr NLSVERSIONINFOEX
c_versionInfo -> do
let c_src_len :: CInt
c_src_len = Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
src_len
c_func :: Ptr CWchar -> CInt -> IO CInt
c_func Ptr CWchar
s CInt
l = Ptr CWchar
-> Word32
-> Ptr CWchar
-> CInt
-> Ptr CWchar
-> CInt
-> Ptr NLSVERSIONINFOEX
-> LPVOID
-> CIntPtr
-> IO CInt
c_LCMapStringEx Ptr CWchar
c_locale
Word32
flags
Ptr CWchar
c_src CInt
c_src_len
Ptr CWchar
s CInt
l
Ptr NLSVERSIONINFOEX
c_versionInfo
LPVOID
forall a. Ptr a
nullPtr
CIntPtr
0
[Char] -> (Ptr CWchar -> CInt -> IO CInt) -> IO [Char]
trySized [Char]
"LCMapStringEx" Ptr CWchar -> CInt -> IO CInt
c_func
foreign import WINDOWS_CCONV unsafe "windows.h LCMapStringEx"
c_LCMapStringEx :: LPCWSTR
-> LCMapFlags
-> LPCWSTR
-> CInt
-> LPWSTR
-> CInt
-> Ptr NLSVERSIONINFOEX
-> LPVOID
-> LPARAM
-> IO CInt
lCMapString :: LCID -> LCMapFlags -> String -> Int -> IO String
lCMapString :: Word32 -> Word32 -> [Char] -> Int -> IO [Char]
lCMapString Word32
locale Word32
flags [Char]
src Int
dest_size =
[Char] -> ((Ptr CWchar, Int) -> IO [Char]) -> IO [Char]
forall a. [Char] -> ((Ptr CWchar, Int) -> IO a) -> IO a
withTStringLen [Char]
src (((Ptr CWchar, Int) -> IO [Char]) -> IO [Char])
-> ((Ptr CWchar, Int) -> IO [Char]) -> IO [Char]
forall a b. (a -> b) -> a -> b
$ \ (Ptr CWchar
c_src, Int
src_len) ->
Int -> (Ptr CWchar -> IO [Char]) -> IO [Char]
forall a b. Storable a => Int -> (Ptr a -> IO b) -> IO b
allocaArray Int
dest_size ((Ptr CWchar -> IO [Char]) -> IO [Char])
-> (Ptr CWchar -> IO [Char]) -> IO [Char]
forall a b. (a -> b) -> a -> b
$ \ Ptr CWchar
c_dest -> do
_ <- [Char] -> IO Int -> IO Int
forall a. (Eq a, Num a) => [Char] -> IO a -> IO a
failIfZero [Char]
"LCMapString" (IO Int -> IO Int) -> IO Int -> IO Int
forall a b. (a -> b) -> a -> b
$
Word32
-> Word32 -> Ptr CWchar -> Int -> Ptr CWchar -> Int -> IO Int
c_LCMapString Word32
locale Word32
flags Ptr CWchar
c_src Int
src_len Ptr CWchar
c_dest Int
dest_size
peekTString c_dest
foreign import WINDOWS_CCONV unsafe "windows.h LCMapStringW"
c_LCMapString :: LCID -> LCMapFlags -> LPCTSTR -> Int -> LPCTSTR -> Int -> IO Int
type LocaleTestFlags = DWORD
lCID_INSTALLED :: LocaleTestFlags
lCID_INSTALLED :: Word32
lCID_INSTALLED = Word32
1
lCID_SUPPORTED :: LocaleTestFlags
lCID_SUPPORTED :: Word32
lCID_SUPPORTED = Word32
2
{-# LINE 501 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
isValidLocaleName :: Maybe String -> IO Bool
isValidLocaleName :: Maybe [Char] -> IO Bool
isValidLocaleName Maybe [Char]
lpLocaleName =
([Char] -> (Ptr CWchar -> IO Bool) -> IO Bool)
-> Maybe [Char] -> (Ptr CWchar -> IO Bool) -> IO Bool
forall a b c.
(a -> (Ptr b -> IO c) -> IO c)
-> Maybe a -> (Ptr b -> IO c) -> IO c
maybeWith [Char] -> (Ptr CWchar -> IO Bool) -> IO Bool
forall a. [Char] -> (Ptr CWchar -> IO a) -> IO a
withTString Maybe [Char]
lpLocaleName Ptr CWchar -> IO Bool
c_IsValidLocaleName
foreign import WINDOWS_CCONV unsafe "windows.h IsValidLocaleName"
c_IsValidLocaleName :: LPCWSTR -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h IsValidLocale"
isValidLocale :: LCID -> LocaleTestFlags -> IO Bool
type EnumLocalesFlag = DWORD
lOCALE_ALL :: EnumLocalesFlag
lOCALE_ALL :: Word32
lOCALE_ALL = Word32
0
lOCALE_ALTERNATE_SORTS :: EnumLocalesFlag
lOCALE_ALTERNATE_SORTS :: Word32
lOCALE_ALTERNATE_SORTS = Word32
4
lOCALE_REPLACEMENT :: EnumLocalesFlag
lOCALE_REPLACEMENT :: Word32
lOCALE_REPLACEMENT = Word32
8
lOCALE_SUPPLEMENTAL :: EnumLocalesFlag
lOCALE_SUPPLEMENTAL :: Word32
lOCALE_SUPPLEMENTAL = Word32
2
lOCALE_WINDOWS :: EnumLocalesFlag
lOCALE_WINDOWS :: Word32
lOCALE_WINDOWS = Word32
1
{-# LINE 524 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
type LOCALE_ENUMPROCEX = LPWSTR -> EnumLocalesFlag -> LPARAM -> IO BOOL
foreign import WINDOWS_CCONV "wrapper"
mkLOCALE_ENUMPROCEX :: LOCALE_ENUMPROCEX -> IO (FunPtr LOCALE_ENUMPROCEX)
enumSystemLocalesEx :: LOCALE_ENUMPROCEX -> EnumLocalesFlag -> LPARAM -> IO ()
enumSystemLocalesEx :: LOCALE_ENUMPROCEX -> Word32 -> CIntPtr -> IO ()
enumSystemLocalesEx LOCALE_ENUMPROCEX
callback Word32
dwFlags CIntPtr
lParam = do
c_callback <- LOCALE_ENUMPROCEX -> IO (FunPtr LOCALE_ENUMPROCEX)
mkLOCALE_ENUMPROCEX LOCALE_ENUMPROCEX
callback
failIfFalse_ "EnumSystemLocalesEx" $
c_EnumSystemLocalesEx c_callback dwFlags lParam nullPtr
freeHaskellFunPtr c_callback
foreign import WINDOWS_CCONV safe "windows.h EnumSystemLocalesEx"
c_EnumSystemLocalesEx :: (FunPtr LOCALE_ENUMPROCEX)
-> DWORD
-> LPARAM
-> LPVOID
-> IO Bool
enumSystemLocalesEx' :: EnumLocalesFlag
-> Maybe Bool
-> IO [String]
enumSystemLocalesEx' :: Word32 -> Maybe Bool -> IO [[Char]]
enumSystemLocalesEx' Word32
dwFlags Maybe Bool
mIsReplacement = do
store <- [[Char]] -> IO (IORef [[Char]])
forall a. a -> IO (IORef a)
newIORef []
let localeEnumProcEx Ptr CWchar
c_locale Word32
arg2 p
_ = do
locale <- Ptr CWchar -> IO [Char]
peekTString Ptr CWchar
c_locale
case mIsReplacement of
Maybe Bool
Nothing -> IORef [[Char]] -> ([[Char]] -> [[Char]]) -> IO ()
forall a. IORef a -> (a -> a) -> IO ()
modifyIORef IORef [[Char]]
store ([Char]
locale[Char] -> [[Char]] -> [[Char]]
forall a. a -> [a] -> [a]
:)
Just Bool
isReplacement ->
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool
isReplacement Bool -> Bool -> Bool
forall a. Eq a => a -> a -> Bool
== (Word32
arg2 Word32 -> Word32 -> Word32
forall a. Bits a => a -> a -> a
.&. Word32
lOCALE_REPLACEMENT Word32 -> Word32 -> Bool
forall a. Eq a => a -> a -> Bool
/= Word32
0)) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IORef [[Char]] -> ([[Char]] -> [[Char]]) -> IO ()
forall a. IORef a -> (a -> a) -> IO ()
modifyIORef IORef [[Char]]
store ([Char]
locale[Char] -> [[Char]] -> [[Char]]
forall a. a -> [a] -> [a]
:)
return True
enumSystemLocalesEx localeEnumProcEx dwFlags 0
reverse <$> readIORef store
foreign import WINDOWS_CCONV unsafe "windows.h IsValidCodePage"
isValidCodePage :: CodePage -> IO Bool
foreign import WINDOWS_CCONV unsafe "windows.h GetUserDefaultLCID"
getUserDefaultLCID :: LCID
foreign import WINDOWS_CCONV unsafe "windows.h GetUserDefaultLangID"
getUserDefaultLangID :: LANGID
lOCALE_NAME_INVARIANT :: Maybe String
lOCALE_NAME_INVARIANT :: Maybe [Char]
lOCALE_NAME_INVARIANT = [Char] -> Maybe [Char]
forall a. a -> Maybe a
Just [Char]
""
lOCALE_NAME_SYSTEM_DEFAULT :: Maybe String
lOCALE_NAME_SYSTEM_DEFAULT :: Maybe [Char]
lOCALE_NAME_SYSTEM_DEFAULT = [Char] -> Maybe [Char]
forall a. a -> Maybe a
Just [Char]
"!x-sys-default-locale"
lOCALE_NAME_USER_DEFAULT :: Maybe String
lOCALE_NAME_USER_DEFAULT :: Maybe [Char]
lOCALE_NAME_USER_DEFAULT = Maybe [Char]
forall a. Maybe a
Nothing
getUserDefaultLocaleName :: IO String
getUserDefaultLocaleName :: IO [Char]
getUserDefaultLocaleName =
[Char] -> (Ptr CWchar -> CInt -> IO CInt) -> IO [Char]
getDefaultLocaleName [Char]
"GetUserDefaultLocaleName" Ptr CWchar -> CInt -> IO CInt
c_GetUserDefaultLocaleName
foreign import WINDOWS_CCONV unsafe "windows.h GetUserDefaultLocaleName"
c_GetUserDefaultLocaleName :: LPWSTR -> CInt -> IO CInt
lOCALE_NAME_MAX_LENGTH :: CInt
lOCALE_NAME_MAX_LENGTH :: CInt
lOCALE_NAME_MAX_LENGTH = CInt
85
{-# LINE 589 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
getDefaultLocaleName :: String -> (LPWSTR -> CInt -> IO CInt) -> IO String
getDefaultLocaleName :: [Char] -> (Ptr CWchar -> CInt -> IO CInt) -> IO [Char]
getDefaultLocaleName [Char]
cDefaultLocaleFuncName Ptr CWchar -> CInt -> IO CInt
cDefaultLocaleFunc =
Int -> ((Ptr CWchar, Int) -> IO [Char]) -> IO [Char]
forall a. Int -> ((Ptr CWchar, Int) -> IO a) -> IO a
withTStringBufferLen Int
maxLength (((Ptr CWchar, Int) -> IO [Char]) -> IO [Char])
-> ((Ptr CWchar, Int) -> IO [Char]) -> IO [Char]
forall a b. (a -> b) -> a -> b
$ \(Ptr CWchar
buf, Int
len) -> do
let c_len :: CInt
c_len = Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
len
c_len' <- [Char] -> IO CInt -> IO CInt
forall a. (Eq a, Num a) => [Char] -> IO a -> IO a
failIfZero [Char]
cDefaultLocaleFuncName (IO CInt -> IO CInt) -> IO CInt -> IO CInt
forall a b. (a -> b) -> a -> b
$
Ptr CWchar -> CInt -> IO CInt
cDefaultLocaleFunc Ptr CWchar
buf CInt
c_len
let len' = CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
c_len'
peekTStringLen (buf, len' - 1)
where
maxLength :: Int
maxLength = CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
lOCALE_NAME_MAX_LENGTH
foreign import WINDOWS_CCONV unsafe "windows.h GetThreadLocale"
getThreadLocale :: IO LCID
foreign import WINDOWS_CCONV unsafe "windows.h GetSystemDefaultLCID"
getSystemDefaultLCID :: LCID
foreign import WINDOWS_CCONV unsafe "windows.h GetSystemDefaultLangID"
getSystemDefaultLangID :: LANGID
getSystemDefaultLocaleName :: IO String
getSystemDefaultLocaleName :: IO [Char]
getSystemDefaultLocaleName =
[Char] -> (Ptr CWchar -> CInt -> IO CInt) -> IO [Char]
getDefaultLocaleName [Char]
"GetSystemDefaultLocaleName" Ptr CWchar -> CInt -> IO CInt
c_GetSystemDefaultLocaleName
foreign import WINDOWS_CCONV unsafe "windows.h GetSystemDefaultLocaleName"
c_GetSystemDefaultLocaleName :: LPWSTR -> CInt -> IO CInt
foreign import WINDOWS_CCONV unsafe "windows.h GetOEMCP"
getOEMCP :: CodePage
lANG_NEUTRAL :: PrimaryLANGID
lANG_NEUTRAL :: Word16
lANG_NEUTRAL = Word16
0
lANG_BULGARIAN :: PrimaryLANGID
lANG_BULGARIAN :: Word16
lANG_BULGARIAN = Word16
2
lANG_CHINESE :: PrimaryLANGID
lANG_CHINESE :: Word16
lANG_CHINESE = Word16
4
lANG_CZECH :: PrimaryLANGID
lANG_CZECH :: Word16
lANG_CZECH = Word16
5
lANG_DANISH :: PrimaryLANGID
lANG_DANISH :: Word16
lANG_DANISH = Word16
6
lANG_GERMAN :: PrimaryLANGID
lANG_GERMAN :: Word16
lANG_GERMAN = Word16
7
lANG_GREEK :: PrimaryLANGID
lANG_GREEK :: Word16
lANG_GREEK = Word16
8
lANG_ENGLISH :: PrimaryLANGID
lANG_ENGLISH :: Word16
lANG_ENGLISH = Word16
9
lANG_SPANISH :: PrimaryLANGID
lANG_SPANISH :: Word16
lANG_SPANISH = Word16
10
lANG_FINNISH :: PrimaryLANGID
lANG_FINNISH :: Word16
lANG_FINNISH = Word16
11
lANG_FRENCH :: PrimaryLANGID
lANG_FRENCH :: Word16
lANG_FRENCH = Word16
12
lANG_HUNGARIAN :: PrimaryLANGID
lANG_HUNGARIAN :: Word16
lANG_HUNGARIAN = Word16
14
lANG_ICELANDIC :: PrimaryLANGID
lANG_ICELANDIC :: Word16
lANG_ICELANDIC = Word16
15
lANG_ITALIAN :: PrimaryLANGID
lANG_ITALIAN :: Word16
lANG_ITALIAN = Word16
16
lANG_JAPANESE :: PrimaryLANGID
lANG_JAPANESE :: Word16
lANG_JAPANESE = Word16
17
lANG_KOREAN :: PrimaryLANGID
lANG_KOREAN :: Word16
lANG_KOREAN = Word16
18
lANG_DUTCH :: PrimaryLANGID
lANG_DUTCH :: Word16
lANG_DUTCH = Word16
19
lANG_NORWEGIAN :: PrimaryLANGID
lANG_NORWEGIAN :: Word16
lANG_NORWEGIAN = Word16
20
lANG_POLISH :: PrimaryLANGID
lANG_POLISH :: Word16
lANG_POLISH = Word16
21
lANG_PORTUGUESE :: PrimaryLANGID
lANG_PORTUGUESE :: Word16
lANG_PORTUGUESE = Word16
22
lANG_ROMANIAN :: PrimaryLANGID
lANG_ROMANIAN :: Word16
lANG_ROMANIAN = Word16
24
lANG_RUSSIAN :: PrimaryLANGID
lANG_RUSSIAN :: Word16
lANG_RUSSIAN = Word16
25
lANG_CROATIAN :: PrimaryLANGID
lANG_CROATIAN :: Word16
lANG_CROATIAN = Word16
26
lANG_SLOVAK :: PrimaryLANGID
lANG_SLOVAK :: Word16
lANG_SLOVAK = Word16
27
lANG_SWEDISH :: PrimaryLANGID
lANG_SWEDISH :: Word16
lANG_SWEDISH = Word16
29
lANG_TURKISH :: PrimaryLANGID
lANG_TURKISH :: Word16
lANG_TURKISH = Word16
31
lANG_SLOVENIAN :: PrimaryLANGID
lANG_SLOVENIAN :: Word16
lANG_SLOVENIAN = Word16
36
lANG_ARABIC :: PrimaryLANGID
lANG_ARABIC :: Word16
lANG_ARABIC = Word16
1
lANG_CATALAN :: PrimaryLANGID
lANG_CATALAN :: Word16
lANG_CATALAN = Word16
3
lANG_HEBREW :: PrimaryLANGID
lANG_HEBREW :: Word16
lANG_HEBREW = Word16
13
lANG_SERBIAN :: PrimaryLANGID
lANG_SERBIAN :: Word16
lANG_SERBIAN = Word16
26
lANG_ALBANIAN :: PrimaryLANGID
lANG_ALBANIAN :: Word16
lANG_ALBANIAN = Word16
28
lANG_THAI :: PrimaryLANGID
lANG_THAI :: Word16
lANG_THAI = Word16
30
lANG_URDU :: PrimaryLANGID
lANG_URDU :: Word16
lANG_URDU = Word16
32
lANG_INDONESIAN :: PrimaryLANGID
lANG_INDONESIAN :: Word16
lANG_INDONESIAN = Word16
33
lANG_BELARUSIAN :: PrimaryLANGID
lANG_BELARUSIAN :: Word16
lANG_BELARUSIAN = Word16
35
lANG_ESTONIAN :: PrimaryLANGID
lANG_ESTONIAN :: Word16
lANG_ESTONIAN = Word16
37
sORT_DEFAULT :: Word16
lANG_LATVIAN :: PrimaryLANGID
lANG_LATVIAN :: Word16
lANG_LATVIAN = Word16
38
lANG_LITHUANIAN :: PrimaryLANGID
lANG_LITHUANIAN :: Word16
lANG_LITHUANIAN = Word16
39
lANG_FARSI :: PrimaryLANGID
lANG_FARSI :: Word16
lANG_FARSI = Word16
41
lANG_VIETNAMESE :: PrimaryLANGID
lANG_VIETNAMESE :: Word16
lANG_VIETNAMESE = Word16
42
lANG_ARMENIAN :: PrimaryLANGID
lANG_ARMENIAN :: Word16
lANG_ARMENIAN = Word16
43
lANG_AZERI :: PrimaryLANGID
lANG_AZERI :: Word16
lANG_AZERI = Word16
44
lANG_BASQUE :: PrimaryLANGID
lANG_BASQUE :: Word16
lANG_BASQUE = Word16
45
lANG_MACEDONIAN :: PrimaryLANGID
lANG_MACEDONIAN :: Word16
lANG_MACEDONIAN = Word16
47
lANG_AFRIKAANS :: PrimaryLANGID
lANG_AFRIKAANS :: Word16
lANG_AFRIKAANS = 54
lANG_GEORGIAN :: PrimaryLANGID
lANG_GEORGIAN :: Word16
lANG_GEORGIAN = 55
lANG_FAEROESE :: PrimaryLANGID
lANG_FAEROESE :: Word16
lANG_FAEROESE = 56
lANG_HINDI :: PrimaryLANGID
lANG_HINDI :: Word16
lANG_HINDI = Word16
57
lANG_MALAY :: PrimaryLANGID
lANG_MALAY :: Word16
lANG_MALAY = Word16
62
lANG_KAZAK :: PrimaryLANGID
lANG_KAZAK :: Word16
lANG_KAZAK = Word16
63
lANG_SWAHILI :: PrimaryLANGID
lANG_SWAHILI :: Word16
lANG_SWAHILI = Word16
65
lANG_UZBEK :: PrimaryLANGID
lANG_UZBEK :: Word16
lANG_UZBEK = Word16
67
lANG_TATAR :: PrimaryLANGID
lANG_TATAR :: Word16
lANG_TATAR = Word16
68
lANG_BENGALI :: PrimaryLANGID
lANG_BENGALI :: Word16
lANG_BENGALI = Word16
69
lANG_PUNJABI :: PrimaryLANGID
lANG_PUNJABI :: Word16
lANG_PUNJABI = Word16
70
lANG_GUJARATI :: PrimaryLANGID
lANG_GUJARATI :: Word16
lANG_GUJARATI = Word16
71
lANG_ORIYA :: PrimaryLANGID
lANG_ORIYA :: Word16
lANG_ORIYA = Word16
72
lANG_TAMIL :: PrimaryLANGID
lANG_TAMIL :: Word16
lANG_TAMIL = 73
lANG_TELUGU :: PrimaryLANGID
lANG_TELUGU :: Word16
lANG_TELUGU = Word16
74
lANG_KANNADA :: PrimaryLANGID
lANG_KANNADA :: Word16
lANG_KANNADA = Word16
75
sUBLANG_GERMAN :: Word16
lANG_MALAYALAM :: PrimaryLANGID
lANG_MALAYALAM :: Word16
lANG_MALAYALAM = Word16
76
lANG_ASSAMESE :: PrimaryLANGID
lANG_ASSAMESE :: Word16
lANG_ASSAMESE = 77
lANG_MARATHI :: PrimaryLANGID
lANG_MARATHI :: Word16
lANG_MARATHI = Word16
78
lANG_SANSKRIT :: PrimaryLANGID
lANG_SANSKRIT :: Word16
lANG_SANSKRIT = Word16
79
lANG_KONKANI :: PrimaryLANGID
lANG_KONKANI :: Word16
lANG_KONKANI = 87
lANG_MANIPURI :: PrimaryLANGID
lANG_MANIPURI :: Word16
lANG_MANIPURI = 88
lANG_SINDHI :: PrimaryLANGID
lANG_SINDHI :: Word16
lANG_SINDHI = Word16
89
lANG_KASHMIRI :: PrimaryLANGID
lANG_KASHMIRI :: Word16
lANG_KASHMIRI = Word16
96
lANG_NEPALI :: PrimaryLANGID
lANG_NEPALI :: Word16
lANG_NEPALI = Word16
97
{-# LINE 694 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
sORT_DEFAULT :: SortID
sORT_DEFAULT = 0
sORT_JAPANESE_XJIS :: SortID
sORT_JAPANESE_XJIS = 0
sORT_JAPANESE_UNICODE :: SortID
sORT_JAPANESE_UNICODE = 1
sORT_CHINESE_BIG5 :: SortID
sORT_CHINESE_BIG5 = 0
sORT_CHINESE_UNICODE :: SortID
sORT_CHINESE_UNICODE = 1
sORT_KOREAN_KSC :: SortID
sORT_KOREAN_KSC = 0
sORT_KOREAN_UNICODE :: SortID
sORT_KOREAN_UNICODE = 1
{-# LINE 704 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
sUBLANG_NEUTRAL :: SubLANGID
sUBLANG_NEUTRAL = 0
sUBLANG_DEFAULT :: SubLANGID
sUBLANG_DEFAULT = 1
sUBLANG_SYS_DEFAULT :: SubLANGID
sUBLANG_SYS_DEFAULT = 2
sUBLANG_CHINESE_TRADITIONAL :: SubLANGID
sUBLANG_CHINESE_TRADITIONAL = 1
sUBLANG_CHINESE_SIMPLIFIED :: SubLANGID
sUBLANG_CHINESE_SIMPLIFIED = 2
sUBLANG_CHINESE_HONGKONG :: SubLANGID
sUBLANG_CHINESE_HONGKONG = 3
sUBLANG_CHINESE_SINGAPORE :: SubLANGID
sUBLANG_CHINESE_SINGAPORE = 4
sUBLANG_DUTCH :: SubLANGID
sUBLANG_DUTCH = 1
sUBLANG_DUTCH_BELGIAN :: SubLANGID
sUBLANG_DUTCH_BELGIAN = 2
sUBLANG_ENGLISH_US :: SubLANGID
sUBLANG_ENGLISH_US = 1
sUBLANG_ENGLISH_UK :: SubLANGID
sUBLANG_ENGLISH_UK = 2
sUBLANG_ENGLISH_AUS :: SubLANGID
sUBLANG_ENGLISH_AUS = 3
sUBLANG_ENGLISH_CAN :: SubLANGID
sUBLANG_ENGLISH_CAN = 4
sUBLANG_ENGLISH_NZ :: SubLANGID
sUBLANG_ENGLISH_NZ = 5
sUBLANG_ENGLISH_EIRE :: SubLANGID
sUBLANG_ENGLISH_EIRE = 6
sUBLANG_FRENCH :: SubLANGID
sUBLANG_FRENCH = 1
sUBLANG_FRENCH_BELGIAN :: SubLANGID
sUBLANG_FRENCH_BELGIAN = 2
sUBLANG_FRENCH_CANADIAN :: SubLANGID
sUBLANG_FRENCH_CANADIAN = 3
sUBLANG_FRENCH_SWISS :: SubLANGID
sUBLANG_FRENCH_SWISS = 4
sUBLANG_GERMAN :: SubLANGID
sUBLANG_GERMAN = 1
sUBLANG_GERMAN_SWISS :: SubLANGID
sUBLANG_GERMAN_SWISS = 2
sUBLANG_GERMAN_AUSTRIAN :: SubLANGID
sUBLANG_GERMAN_AUSTRIAN = 3
sUBLANG_ITALIAN :: SubLANGID
sUBLANG_ITALIAN = 1
sUBLANG_ITALIAN_SWISS :: SubLANGID
sUBLANG_ITALIAN_SWISS = 2
sUBLANG_NORWEGIAN_BOKMAL :: SubLANGID
sUBLANG_NORWEGIAN_BOKMAL = 1
sUBLANG_NORWEGIAN_NYNORSK :: SubLANGID
sUBLANG_NORWEGIAN_NYNORSK = 2
sUBLANG_PORTUGUESE :: SubLANGID
sUBLANG_PORTUGUESE = 2
sUBLANG_PORTUGUESE_BRAZILIAN :: SubLANGID
sUBLANG_PORTUGUESE_BRAZILIAN = 1
sUBLANG_SPANISH :: SubLANGID
sUBLANG_SPANISH = 1
sUBLANG_SPANISH_MEXICAN :: SubLANGID
sUBLANG_SPANISH_MEXICAN :: Word16
sUBLANG_SPANISH_MEXICAN = Word16
2
sUBLANG_SPANISH_MODERN :: SubLANGID
sUBLANG_SPANISH_MODERN :: Word16
sUBLANG_SPANISH_MODERN = Word16
3
sUBLANG_ARABIC_SAUDI_ARABIA :: SubLANGID
sUBLANG_ARABIC_SAUDI_ARABIA :: Word16
sUBLANG_ARABIC_SAUDI_ARABIA = Word16
1
sUBLANG_ARABIC_IRAQ :: SubLANGID
sUBLANG_ARABIC_IRAQ :: Word16
sUBLANG_ARABIC_IRAQ = Word16
2
sUBLANG_ARABIC_EGYPT :: SubLANGID
sUBLANG_ARABIC_EGYPT :: Word16
sUBLANG_ARABIC_EGYPT = Word16
3
sUBLANG_ARABIC_LIBYA :: SubLANGID
sUBLANG_ARABIC_LIBYA :: Word16
sUBLANG_ARABIC_LIBYA = Word16
4
sUBLANG_ARABIC_ALGERIA :: SubLANGID
sUBLANG_ARABIC_ALGERIA :: Word16
sUBLANG_ARABIC_ALGERIA = Word16
5
sUBLANG_ARABIC_MOROCCO :: SubLANGID
sUBLANG_ARABIC_MOROCCO :: Word16
sUBLANG_ARABIC_MOROCCO = Word16
6
sUBLANG_ARABIC_TUNISIA :: SubLANGID
sUBLANG_ARABIC_TUNISIA :: Word16
sUBLANG_ARABIC_TUNISIA = Word16
7
sUBLANG_ARABIC_OMAN :: SubLANGID
sUBLANG_ARABIC_OMAN :: Word16
sUBLANG_ARABIC_OMAN = Word16
8
sUBLANG_ARABIC_YEMEN :: SubLANGID
sUBLANG_ARABIC_YEMEN :: Word16
sUBLANG_ARABIC_YEMEN = Word16
9
sUBLANG_ARABIC_SYRIA :: SubLANGID
sUBLANG_ARABIC_SYRIA :: Word16
sUBLANG_ARABIC_SYRIA = Word16
10
sUBLANG_ARABIC_JORDAN :: SubLANGID
sUBLANG_ARABIC_JORDAN :: Word16
sUBLANG_ARABIC_JORDAN = Word16
11
sUBLANG_ARABIC_LEBANON :: SubLANGID
sUBLANG_ARABIC_LEBANON :: Word16
sUBLANG_ARABIC_LEBANON = Word16
12
sUBLANG_ARABIC_KUWAIT :: SubLANGID
sUBLANG_ARABIC_KUWAIT :: Word16
sUBLANG_ARABIC_KUWAIT = Word16
13
sUBLANG_ARABIC_UAE :: SubLANGID
sUBLANG_ARABIC_UAE :: Word16
sUBLANG_ARABIC_UAE = Word16
14
sUBLANG_ARABIC_BAHRAIN :: SubLANGID
sUBLANG_ARABIC_BAHRAIN :: Word16
sUBLANG_ARABIC_BAHRAIN = Word16
15
sUBLANG_ARABIC_QATAR :: SubLANGID
sUBLANG_ARABIC_QATAR :: Word16
sUBLANG_ARABIC_QATAR = Word16
16
sUBLANG_AZERI_CYRILLIC :: SubLANGID
sUBLANG_AZERI_CYRILLIC :: Word16
sUBLANG_AZERI_CYRILLIC = Word16
2
sUBLANG_AZERI_LATIN :: SubLANGID
sUBLANG_AZERI_LATIN :: Word16
sUBLANG_AZERI_LATIN = Word16
1
sUBLANG_CHINESE_MACAU :: SubLANGID
sUBLANG_CHINESE_MACAU :: Word16
sUBLANG_CHINESE_MACAU = Word16
5
sUBLANG_ENGLISH_SOUTH_AFRICA :: SubLANGID
sUBLANG_ENGLISH_SOUTH_AFRICA :: Word16
sUBLANG_ENGLISH_SOUTH_AFRICA = Word16
7
sUBLANG_ENGLISH_JAMAICA :: SubLANGID
sUBLANG_ENGLISH_JAMAICA = 8
sUBLANG_ENGLISH_CARIBBEAN :: SubLANGID
sUBLANG_ENGLISH_CARIBBEAN :: Word16
sUBLANG_ENGLISH_CARIBBEAN = Word16
9
sUBLANG_ENGLISH_BELIZE :: SubLANGID
sUBLANG_ENGLISH_BELIZE :: Word16
sUBLANG_ENGLISH_BELIZE = Word16
10
sUBLANG_ENGLISH_TRINIDAD :: SubLANGID
sUBLANG_ENGLISH_TRINIDAD :: Word16
sUBLANG_ENGLISH_TRINIDAD = Word16
11
sUBLANG_ENGLISH_PHILIPPINES :: SubLANGID
sUBLANG_ENGLISH_PHILIPPINES = 13
sUBLANG_ENGLISH_ZIMBABWE :: SubLANGID
sUBLANG_ENGLISH_ZIMBABWE = 12
sUBLANG_FRENCH_LUXEMBOURG :: SubLANGID
sUBLANG_FRENCH_LUXEMBOURG = 5
sUBLANG_FRENCH_MONACO :: SubLANGID
sUBLANG_FRENCH_MONACO :: Word16
sUBLANG_FRENCH_MONACO = Word16
6
sUBLANG_GERMAN_LUXEMBOURG :: SubLANGID
sUBLANG_GERMAN_LUXEMBOURG = 4
sUBLANG_GERMAN_LIECHTENSTEIN :: SubLANGID
sUBLANG_GERMAN_LIECHTENSTEIN = 5
sUBLANG_KASHMIRI_INDIA :: SubLANGID
sUBLANG_KASHMIRI_INDIA = 2
sUBLANG_KOREAN :: SubLANGID
sUBLANG_KOREAN :: Word16
sUBLANG_KOREAN = Word16
1
sUBLANG_LITHUANIAN :: SubLANGID
sUBLANG_LITHUANIAN :: Word16
sUBLANG_LITHUANIAN = Word16
1
sUBLANG_MALAY_MALAYSIA :: SubLANGID
sUBLANG_MALAY_MALAYSIA :: Word16
sUBLANG_MALAY_MALAYSIA = Word16
1
sUBLANG_MALAY_BRUNEI_DARUSSALAM :: SubLANGID
sUBLANG_MALAY_BRUNEI_DARUSSALAM :: Word16
sUBLANG_MALAY_BRUNEI_DARUSSALAM = Word16
2
sUBLANG_NEPALI_INDIA :: SubLANGID
sUBLANG_NEPALI_INDIA :: Word16
sUBLANG_NEPALI_INDIA = Word16
2
sUBLANG_SERBIAN_LATIN :: SubLANGID
sUBLANG_SERBIAN_LATIN :: Word16
sUBLANG_SERBIAN_LATIN = Word16
2
sUBLANG_SERBIAN_CYRILLIC :: SubLANGID
sUBLANG_SERBIAN_CYRILLIC :: Word16
sUBLANG_SERBIAN_CYRILLIC = Word16
3
sUBLANG_SPANISH_GUATEMALA :: SubLANGID
sUBLANG_SPANISH_GUATEMALA :: Word16
sUBLANG_SPANISH_GUATEMALA = Word16
4
sUBLANG_SPANISH_COSTA_RICA :: SubLANGID
sUBLANG_SPANISH_COSTA_RICA :: Word16
sUBLANG_SPANISH_COSTA_RICA = Word16
5
sUBLANG_SPANISH_PANAMA :: SubLANGID
sUBLANG_SPANISH_PANAMA :: Word16
sUBLANG_SPANISH_PANAMA = Word16
6
sUBLANG_SPANISH_DOMINICAN_REPUBLIC :: SubLANGID
sUBLANG_SPANISH_DOMINICAN_REPUBLIC :: Word16
sUBLANG_SPANISH_DOMINICAN_REPUBLIC = Word16
7
sUBLANG_SPANISH_VENEZUELA :: SubLANGID
sUBLANG_SPANISH_VENEZUELA :: Word16
sUBLANG_SPANISH_VENEZUELA = Word16
8
sUBLANG_SPANISH_COLOMBIA :: SubLANGID
sUBLANG_SPANISH_COLOMBIA :: Word16
sUBLANG_SPANISH_COLOMBIA = Word16
9
sUBLANG_SPANISH_PERU :: SubLANGID
sUBLANG_SPANISH_PERU :: Word16
sUBLANG_SPANISH_PERU = Word16
10
sUBLANG_SPANISH_ARGENTINA :: SubLANGID
sUBLANG_SPANISH_ARGENTINA :: Word16
sUBLANG_SPANISH_ARGENTINA = Word16
11
sUBLANG_SPANISH_ECUADOR :: SubLANGID
sUBLANG_SPANISH_ECUADOR :: Word16
sUBLANG_SPANISH_ECUADOR = Word16
12
sUBLANG_SPANISH_CHILE :: SubLANGID
sUBLANG_SPANISH_CHILE :: Word16
sUBLANG_SPANISH_CHILE = Word16
13
sUBLANG_SPANISH_URUGUAY :: SubLANGID
sUBLANG_SPANISH_URUGUAY :: Word16
sUBLANG_SPANISH_URUGUAY = Word16
14
sUBLANG_SPANISH_PARAGUAY :: SubLANGID
sUBLANG_SPANISH_PARAGUAY :: Word16
sUBLANG_SPANISH_PARAGUAY = Word16
15
sUBLANG_SPANISH_BOLIVIA :: SubLANGID
sUBLANG_SPANISH_BOLIVIA :: Word16
sUBLANG_SPANISH_BOLIVIA = Word16
16
sUBLANG_SPANISH_EL_SALVADOR :: SubLANGID
sUBLANG_SPANISH_EL_SALVADOR :: Word16
sUBLANG_SPANISH_EL_SALVADOR = Word16
17
sUBLANG_SPANISH_HONDURAS :: SubLANGID
sUBLANG_SPANISH_HONDURAS :: Word16
sUBLANG_SPANISH_HONDURAS = Word16
18
sUBLANG_SPANISH_NICARAGUA :: SubLANGID
sUBLANG_SPANISH_NICARAGUA :: Word16
sUBLANG_SPANISH_NICARAGUA = Word16
19
sUBLANG_SPANISH_PUERTO_RICO :: SubLANGID
sUBLANG_SPANISH_PUERTO_RICO :: Word16
sUBLANG_SPANISH_PUERTO_RICO = Word16
20
sUBLANG_SWEDISH :: SubLANGID
sUBLANG_SWEDISH :: Word16
sUBLANG_SWEDISH = Word16
1
sUBLANG_SWEDISH_FINLAND :: SubLANGID
sUBLANG_SWEDISH_FINLAND :: Word16
sUBLANG_SWEDISH_FINLAND = Word16
2
sUBLANG_URDU_PAKISTAN :: SubLANGID
sUBLANG_URDU_PAKISTAN :: Word16
sUBLANG_URDU_PAKISTAN = Word16
1
sUBLANG_URDU_INDIA :: SubLANGID
sUBLANG_URDU_INDIA :: Word16
sUBLANG_URDU_INDIA = Word16
2
sUBLANG_UZBEK_LATIN :: SubLANGID
sUBLANG_UZBEK_LATIN :: Word16
sUBLANG_UZBEK_LATIN = Word16
1
sUBLANG_UZBEK_CYRILLIC :: SubLANGID
sUBLANG_UZBEK_CYRILLIC :: Word16
sUBLANG_UZBEK_CYRILLIC = Word16
2
{-# LINE 799 "libraries\\Win32\\System\\Win32\\NLS.hsc" #-}
stringToUnicode :: CodePage -> String -> IO String
stringToUnicode _cp "" = return ""
stringToUnicode cp mbstr =
withCAStringLen mbstr $ \(cstr,len) -> do
wchars <- failIfZero "MultiByteToWideChar" $ multiByteToWideChar
cp
0
cstr
(fromIntegral len)
nullPtr 0
allocaArray (fromIntegral wchars) $ \cwstr -> do
wchars' <- failIfZero "MultiByteToWideChar" $ multiByteToWideChar
cp
0
cstr
(fromIntegral len)
cwstr wchars
peekCWStringLen (cwstr,fromIntegral wchars')
foreign import WINDOWS_CCONV unsafe "MultiByteToWideChar"
multiByteToWideChar
:: CodePage
-> DWORD
-> LPCSTR
-> CInt
-> LPWSTR
-> CInt
-> IO CInt