{-# LINE 1 "src/Bindings/Libpafe/Types.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LINE 2 "src/Bindings/Libpafe/Types.hsc" #-}
module Bindings.Libpafe.Types(
  Felica(..)
 ,Pasori
 ,CUInt8
 ,CUInt16
 ,FelicaBlockInfo(..)
)
where


{-# LINE 12 "src/Bindings/Libpafe/Types.hsc" #-}

import Foreign.Ptr
import Foreign.C.Types
import Foreign.Storable
import Foreign.Marshal.Array
import Data.Word



{-# LINE 21 "src/Bindings/Libpafe/Types.hsc" #-}


{-# LINE 23 "src/Bindings/Libpafe/Types.hsc" #-}


{-# LINE 25 "src/Bindings/Libpafe/Types.hsc" #-}


{-# LINE 27 "src/Bindings/Libpafe/Types.hsc" #-}


{-# LINE 29 "src/Bindings/Libpafe/Types.hsc" #-}

type CUInt8 = Word8
type CUInt16 = Word16

data Pasori
data Felica = Felica {
                p :: Ptr Pasori
               ,systemCode :: CUInt16
               ,idm :: [CUInt8]
               ,pmm :: [CUInt8]
               ,areaNum :: CUInt16
               ,felicaArea :: [Area]
               ,serviceNum:: CUInt16
               ,service :: [Area]
               ,nextFelica :: Ptr Felica
               }

data Area = Area {
            code :: CUInt16
           ,attr :: CUInt16
           ,bin :: CUInt16
           ,nextArea :: Ptr Area
           }

data FelicaBlockInfo = FelicaBlockInfo {
                                         blockService :: CUInt16
                                        ,mode :: CUInt8
                                        ,block :: CUInt16
                                       }

data FelicaBlock = FelicaBlock { 
                                blockData :: [CUInt8]
                               }

instance Storable Felica where
  sizeOf x = (8240)
{-# LINE 65 "src/Bindings/Libpafe/Types.hsc" #-}
  alignment = sizeOf
  peek ptr = do 
     p <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 68 "src/Bindings/Libpafe/Types.hsc" #-}
     sc <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 69 "src/Bindings/Libpafe/Types.hsc" #-}
     idm <- peekArray 8 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 10)) ptr
{-# LINE 70 "src/Bindings/Libpafe/Types.hsc" #-}
     pmm <- peekArray 8 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 18)) ptr
{-# LINE 71 "src/Bindings/Libpafe/Types.hsc" #-}
     an <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
{-# LINE 72 "src/Bindings/Libpafe/Types.hsc" #-}
     fa <- peekArray  256 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 32)) ptr
{-# LINE 73 "src/Bindings/Libpafe/Types.hsc" #-}
     sn <- ((\hsc_ptr -> peekByteOff hsc_ptr 4128)) ptr
{-# LINE 74 "src/Bindings/Libpafe/Types.hsc" #-}
     s <- peekArray  256 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 4136)) ptr
{-# LINE 75 "src/Bindings/Libpafe/Types.hsc" #-}
     n <- ((\hsc_ptr -> peekByteOff hsc_ptr 8232)) ptr
{-# LINE 76 "src/Bindings/Libpafe/Types.hsc" #-}
     return $ Felica p sc idm pmm an fa sn s n
  poke ptr (Felica p sc idm pmm an fa sn s n) = do
    ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr p
{-# LINE 79 "src/Bindings/Libpafe/Types.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr sc
{-# LINE 80 "src/Bindings/Libpafe/Types.hsc" #-}
    pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 10)) ptr) idm
{-# LINE 81 "src/Bindings/Libpafe/Types.hsc" #-}
    pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 18)) ptr) pmm
{-# LINE 82 "src/Bindings/Libpafe/Types.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr an
{-# LINE 83 "src/Bindings/Libpafe/Types.hsc" #-}
    pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 32)) ptr) fa
{-# LINE 84 "src/Bindings/Libpafe/Types.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 4128)) ptr sn
{-# LINE 85 "src/Bindings/Libpafe/Types.hsc" #-}
    pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 4136)) ptr) s
{-# LINE 86 "src/Bindings/Libpafe/Types.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 8232)) ptr n
{-# LINE 87 "src/Bindings/Libpafe/Types.hsc" #-}

instance Storable Area where
  sizeOf x = (16)
{-# LINE 90 "src/Bindings/Libpafe/Types.hsc" #-}
  alignment = sizeOf
  peek ptr = do
    cde <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr 
{-# LINE 93 "src/Bindings/Libpafe/Types.hsc" #-}
    attrb <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr 
{-# LINE 94 "src/Bindings/Libpafe/Types.hsc" #-}
    binary <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr 
{-# LINE 95 "src/Bindings/Libpafe/Types.hsc" #-}
    nextarea <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr 
{-# LINE 96 "src/Bindings/Libpafe/Types.hsc" #-}
    return $ Area cde attrb binary nextarea
  poke ptr (Area cde attrib binary nextarea) = do
    ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr cde
{-# LINE 99 "src/Bindings/Libpafe/Types.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr attrib
{-# LINE 100 "src/Bindings/Libpafe/Types.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr binary
{-# LINE 101 "src/Bindings/Libpafe/Types.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr nextarea
{-# LINE 102 "src/Bindings/Libpafe/Types.hsc" #-}

instance Storable FelicaBlockInfo where
  sizeOf x = (6)
{-# LINE 105 "src/Bindings/Libpafe/Types.hsc" #-}
  alignment = sizeOf
  peek ptr = do
    svc <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 108 "src/Bindings/Libpafe/Types.hsc" #-}
    md <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 109 "src/Bindings/Libpafe/Types.hsc" #-}
    blk <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
{-# LINE 110 "src/Bindings/Libpafe/Types.hsc" #-}
    return $ FelicaBlockInfo svc md blk
  poke ptr (FelicaBlockInfo svc md blk) = do
    ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr svc
{-# LINE 113 "src/Bindings/Libpafe/Types.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr md
{-# LINE 114 "src/Bindings/Libpafe/Types.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr blk
{-# LINE 115 "src/Bindings/Libpafe/Types.hsc" #-}

instance Show FelicaBlockInfo where
  show = show . block

instance Show Felica where
  show = show . idm

instance Show Area where
  show = show . code