{-# INCLUDE <bindings.macros.h> #-}
{-# INCLUDE <locale.h> #-}
{-# LINE 1 "src/Bindings/C/Locale.hsc" #-}

{-# LINE 2 "src/Bindings/C/Locale.hsc" #-}

{-# LINE 3 "src/Bindings/C/Locale.hsc" #-}

-- | <http://www.opengroup.org/onlinepubs/9699919799/basedefs/locale.h.html>

module Bindings.C.Locale where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 8 "src/Bindings/C/Locale.hsc" #-}

data C'lconv = C'lconv{
{-# LINE 10 "src/Bindings/C/Locale.hsc" #-}

  c'lconv'currency_symbol :: CString
{-# LINE 11 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'decimal_point :: CString
{-# LINE 12 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'frac_digits :: CChar
{-# LINE 13 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'grouping :: CString
{-# LINE 14 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'int_curr_symbol :: CString
{-# LINE 15 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'int_frac_digits :: CChar
{-# LINE 16 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'int_n_cs_precedes :: CChar
{-# LINE 17 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'int_n_sep_by_space :: CChar
{-# LINE 18 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'int_n_sign_posn :: CChar
{-# LINE 19 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'int_p_cs_precedes :: CChar
{-# LINE 20 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'int_p_sep_by_space :: CChar
{-# LINE 21 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'int_p_sign_posn :: CChar
{-# LINE 22 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'mon_decimal_point :: CString
{-# LINE 23 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'mon_grouping :: CString
{-# LINE 24 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'mon_thousands_sep :: CString
{-# LINE 25 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'negative_sign :: CString
{-# LINE 26 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'n_cs_precedes :: CChar
{-# LINE 27 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'n_sep_by_space :: CChar
{-# LINE 28 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'n_sign_posn :: CChar
{-# LINE 29 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'positive_sign :: CString
{-# LINE 30 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'p_cs_precedes :: CChar
{-# LINE 31 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'p_sep_by_space :: CChar
{-# LINE 32 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'p_sign_posn :: CChar
{-# LINE 33 "src/Bindings/C/Locale.hsc" #-}
,
  c'lconv'thousands_sep :: CString
{-# LINE 34 "src/Bindings/C/Locale.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'lconv where
  sizeOf _ = 56
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 16
    v1 <- peekByteOff p 0
    v2 <- peekByteOff p 41
    v3 <- peekByteOff p 8
    v4 <- peekByteOff p 12
    v5 <- peekByteOff p 40
    v6 <- peekByteOff p 50
    v7 <- peekByteOff p 51
    v8 <- peekByteOff p 53
    v9 <- peekByteOff p 48
    v10 <- peekByteOff p 49
    v11 <- peekByteOff p 52
    v12 <- peekByteOff p 20
    v13 <- peekByteOff p 28
    v14 <- peekByteOff p 24
    v15 <- peekByteOff p 36
    v16 <- peekByteOff p 44
    v17 <- peekByteOff p 45
    v18 <- peekByteOff p 47
    v19 <- peekByteOff p 32
    v20 <- peekByteOff p 42
    v21 <- peekByteOff p 43
    v22 <- peekByteOff p 46
    v23 <- peekByteOff p 4
    return $ C'lconv v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23
  poke p (C'lconv v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23) = do
    pokeByteOff p 16 v0
    pokeByteOff p 0 v1
    pokeByteOff p 41 v2
    pokeByteOff p 8 v3
    pokeByteOff p 12 v4
    pokeByteOff p 40 v5
    pokeByteOff p 50 v6
    pokeByteOff p 51 v7
    pokeByteOff p 53 v8
    pokeByteOff p 48 v9
    pokeByteOff p 49 v10
    pokeByteOff p 52 v11
    pokeByteOff p 20 v12
    pokeByteOff p 28 v13
    pokeByteOff p 24 v14
    pokeByteOff p 36 v15
    pokeByteOff p 44 v16
    pokeByteOff p 45 v17
    pokeByteOff p 47 v18
    pokeByteOff p 32 v19
    pokeByteOff p 42 v20
    pokeByteOff p 43 v21
    pokeByteOff p 46 v22
    pokeByteOff p 4 v23
    return ()

{-# LINE 35 "src/Bindings/C/Locale.hsc" #-}

c'LC_ALL = 6
c'LC_ALL :: (Num a) => a

{-# LINE 37 "src/Bindings/C/Locale.hsc" #-}
c'LC_COLLATE = 3
c'LC_COLLATE :: (Num a) => a

{-# LINE 38 "src/Bindings/C/Locale.hsc" #-}
c'LC_CTYPE = 0
c'LC_CTYPE :: (Num a) => a

{-# LINE 39 "src/Bindings/C/Locale.hsc" #-}
c'LC_MONETARY = 4
c'LC_MONETARY :: (Num a) => a

{-# LINE 40 "src/Bindings/C/Locale.hsc" #-}
c'LC_NUMERIC = 1
c'LC_NUMERIC :: (Num a) => a

{-# LINE 41 "src/Bindings/C/Locale.hsc" #-}
c'LC_TIME = 2
c'LC_TIME :: (Num a) => a

{-# LINE 42 "src/Bindings/C/Locale.hsc" #-}

foreign import ccall "localeconv" c'localeconv
  :: IO (Ptr C'lconv)
foreign import ccall "&localeconv" p'localeconv
  :: FunPtr (IO (Ptr C'lconv))

{-# LINE 44 "src/Bindings/C/Locale.hsc" #-}
foreign import ccall "setlocale" c'setlocale
  :: CInt -> CString -> IO CString
foreign import ccall "&setlocale" p'setlocale
  :: FunPtr (CInt -> CString -> IO CString)

{-# LINE 45 "src/Bindings/C/Locale.hsc" #-}