{-# LINE 1 "FreeType/Format/SFNT/Types.hsc" #-}
module FreeType.Format.SFNT.Types where

import           FreeType.Core.Types.Types

import           Data.Function ((&))
import           Foreign.Ptr
import           Foreign.Storable




data FT_SfntName = FT_SfntName
                     { snPlatform_id :: FT_UShort
                     , snEncoding_id :: FT_UShort
                     , snLanguage_id :: FT_UShort
                     , snName_id     :: FT_UShort
                     , snString      :: Ptr FT_Byte
                     , snString_len  :: FT_UInt
                     }

instance Storable FT_SfntName where
  sizeOf _    = (24)
{-# LINE 23 "FreeType/Format/SFNT/Types.hsc" #-}
  alignment _ = 8
{-# LINE 24 "FreeType/Format/SFNT/Types.hsc" #-}

  peek ptr =
    FT_SfntName
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 28 "FreeType/Format/SFNT/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr
{-# LINE 29 "FreeType/Format/SFNT/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr
{-# LINE 30 "FreeType/Format/SFNT/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 6) ptr
{-# LINE 31 "FreeType/Format/SFNT/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 32 "FreeType/Format/SFNT/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 33 "FreeType/Format/SFNT/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & snPlatform_id
{-# LINE 36 "FreeType/Format/SFNT/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr $ val & snEncoding_id
{-# LINE 37 "FreeType/Format/SFNT/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr $ val & snLanguage_id
{-# LINE 38 "FreeType/Format/SFNT/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 6) ptr $ val & snName_id
{-# LINE 39 "FreeType/Format/SFNT/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & snString
{-# LINE 40 "FreeType/Format/SFNT/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & snString_len
{-# LINE 41 "FreeType/Format/SFNT/Types.hsc" #-}



data FT_SfntLangTag = FT_SfntLangTag
                        { sltString     :: Ptr FT_Byte
                        , sltString_len :: FT_UInt
                        }

instance Storable FT_SfntLangTag where
  sizeOf _    = (16)
{-# LINE 51 "FreeType/Format/SFNT/Types.hsc" #-}
  alignment _ = 8
{-# LINE 52 "FreeType/Format/SFNT/Types.hsc" #-}

  peek ptr =
    FT_SfntLangTag
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 56 "FreeType/Format/SFNT/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 57 "FreeType/Format/SFNT/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & sltString
{-# LINE 60 "FreeType/Format/SFNT/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & sltString_len
{-# LINE 61 "FreeType/Format/SFNT/Types.hsc" #-}