packages feed

hs-bindgen-1.0.0.0: test-artefacts/fixtures/functions/fun_attributes/Example.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE UndecidableInstances #-}

module Example
    ( Example.FILE(..)
    , Example.Size_t(..)
    )
  where

import qualified HsBindgen.Runtime.HasCField as HasCField
import qualified HsBindgen.Runtime.Marshal as Marshal
import qualified HsBindgen.Runtime.Struct as Struct
import qualified HsBindgen.Runtime.Support as BG
import qualified HsBindgen.Runtime.Support.CompatHasField as BG.CompatHasField
import Prelude (Bounded, Enum, Eq, Int, Integral, Num, Ord, Read, Real, Show, pure, type (~))

{-| __C declaration:__ @struct FILE@

    __defined at:__ @functions\/fun_attributes.h 7:9@

    __exported by:__ @functions\/fun_attributes.h@
-}
data FILE = FILE
  {}
  deriving stock (Eq, BG.Generic, Show)

instance Marshal.StaticSize FILE where

  staticSizeOf = \_ -> (0 :: Int)

  staticAlignment = \_ -> (1 :: Int)

instance Marshal.ReadRaw FILE where

  readRaw = \ptr0 -> pure FILE

instance Marshal.WriteRaw FILE where

  writeRaw =
    \ptr0 ->
      \s1 ->
        case s1 of
          FILE -> pure ()

deriving via Marshal.EquivStorable FILE instance BG.Storable FILE

deriving via Struct.IsStructViaReadRaw FILE instance Struct.IsStruct FILE

{-| __C declaration:__ @size_t@

    __defined at:__ @functions\/fun_attributes.h 8:13@

    __exported by:__ @functions\/fun_attributes.h@
-}
newtype Size_t = Size_t
  { unwrapSize_t :: BG.CInt
  }
  deriving stock (Eq, BG.Generic, Ord, Read, Show)
  deriving newtype
    ( BG.Bitfield
    , BG.Bits
    , Bounded
    , Enum
    , BG.FiniteBits
    , BG.HasFFIType
    , Integral
    , BG.Ix
    , Num
    , BG.Prim
    , Marshal.ReadRaw
    , Real
    , Marshal.StaticSize
    , BG.Storable
    , Marshal.WriteRaw
    )

instance ( ty ~ BG.CInt
         ) => BG.CompatHasField.HasField "unwrapSize_t" Size_t ty where

  hasField =
    \x0 ->
      (\y1 ->
         Size_t {unwrapSize_t = y1}, BG.getField @"unwrapSize_t" x0)

instance ( ty ~ BG.CInt
         ) => BG.HasField "unwrapSize_t" (BG.Ptr Size_t) (BG.Ptr ty) where

  getField =
    HasCField.fromPtr (BG.Proxy @"unwrapSize_t")

instance HasCField.HasCField Size_t "unwrapSize_t" where

  type CFieldType Size_t "unwrapSize_t" = BG.CInt

  offset# = \_ -> \_ -> 0