packages feed

hs-bindgen-1.0.0.0: test-artefacts/fixtures/binding-specs/enum/closed/Example.hs

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

module Example
    ( Example.Foo(..)
    , pattern Example.Bar
    , pattern Example.Baz
    , Example.ElementaryParticleType(..)
    , pattern Example.Quark_up
    , pattern Example.Quark_down
    , pattern Example.Quark_charm
    , pattern Example.Quark_strange
    , pattern Example.Quark_top
    , pattern Example.Quark_bottom
    , pattern Example.Lepton_electron
    , pattern Example.Lepton_electron_neutrino
    , pattern Example.Lepton_muon
    , pattern Example.Lepton_muon_neutrino
    , pattern Example.Lepton_tau
    , pattern Example.Lepton_tau_neutrino
    , pattern Example.Boson_gluon
    , pattern Example.Boson_photon
    , pattern Example.Boson_z
    , pattern Example.Boson_w
    , pattern Example.Boson_higgs
    )
  where

import qualified HsBindgen.Runtime.CEnum as CEnum
import qualified HsBindgen.Runtime.HasCField as HasCField
import qualified HsBindgen.Runtime.Marshal as Marshal
import qualified HsBindgen.Runtime.Support as BG
import qualified HsBindgen.Runtime.Support.CompatHasField as BG.CompatHasField
import Prelude ((<*>), Eq, Int, Ord, Read, Show, pure, type (~))

{-| __C declaration:__ @enum foo@

    __defined at:__ @binding-specs\/enum\/closed.h 2:6@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
newtype Foo = Foo
  { unwrapFoo :: BG.CUInt
  }
  deriving stock (Eq, BG.Generic, Ord)
  deriving newtype (BG.HasFFIType)

instance Marshal.StaticSize Foo where

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

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

instance Marshal.ReadRaw Foo where

  readRaw =
    \ptr0 ->
          pure Foo
      <*> Marshal.readRawByteOff ptr0 (0 :: Int)

instance Marshal.WriteRaw Foo where

  writeRaw =
    \ptr0 ->
      \s1 ->
        case s1 of
          Foo unwrapFoo2 ->
            Marshal.writeRawByteOff ptr0 (0 :: Int) unwrapFoo2

deriving via Marshal.EquivStorable Foo instance BG.Storable Foo

deriving via BG.CUInt instance BG.Prim Foo

instance CEnum.CEnum Foo where

  type CEnumZ Foo = BG.CUInt

  toCEnum = Foo

  fromCEnum = BG.getField @"unwrapFoo"

  declaredValues =
    \_ ->
      CEnum.declaredValuesFromList [(0, BG.singleton "Bar"), (1, BG.singleton "Baz")]

  showsUndeclared = CEnum.showsWrappedUndeclared "Foo"

  readPrecUndeclared =
    CEnum.readPrecWrappedUndeclared "Foo"

  isDeclared = CEnum.seqIsDeclared

  mkDeclared = CEnum.seqMkDeclared

instance CEnum.SequentialCEnum Foo where

  minDeclaredValue = Bar

  maxDeclaredValue = Baz

instance Show Foo where

  showsPrec = CEnum.shows

instance Read Foo where

  readPrec = CEnum.readPrec

  readList = BG.readListDefault

  readListPrec = BG.readListPrecDefault

instance (ty ~ BG.CUInt) => BG.CompatHasField.HasField "unwrapFoo" Foo ty where

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

instance ( ty ~ BG.CUInt
         ) => BG.HasField "unwrapFoo" (BG.Ptr Foo) (BG.Ptr ty) where

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

instance HasCField.HasCField Foo "unwrapFoo" where

  type CFieldType Foo "unwrapFoo" = BG.CUInt

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

{-| __C declaration:__ @bar@

    __defined at:__ @binding-specs\/enum\/closed.h 3:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Bar :: Foo
pattern Bar = Foo 0

{-| __C declaration:__ @baz@

    __defined at:__ @binding-specs\/enum\/closed.h 4:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Baz :: Foo
pattern Baz = Foo 1

{-# COMPLETE Bar, Baz #-}

{-| __C declaration:__ @enum elementary_particle_type@

    __defined at:__ @binding-specs\/enum\/closed.h 8:6@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
newtype ElementaryParticleType = ElementaryParticleType
  { unwrapElementaryParticleType :: BG.CUInt
  }
  deriving stock (Eq, BG.Generic, Ord)
  deriving newtype (BG.HasFFIType)

instance Marshal.StaticSize ElementaryParticleType where

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

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

instance Marshal.ReadRaw ElementaryParticleType where

  readRaw =
    \ptr0 ->
          pure ElementaryParticleType
      <*> Marshal.readRawByteOff ptr0 (0 :: Int)

instance Marshal.WriteRaw ElementaryParticleType where

  writeRaw =
    \ptr0 ->
      \s1 ->
        case s1 of
          ElementaryParticleType unwrapElementaryParticleType2 ->
            Marshal.writeRawByteOff ptr0 (0 :: Int) unwrapElementaryParticleType2

deriving via Marshal.EquivStorable ElementaryParticleType instance BG.Storable ElementaryParticleType

deriving via BG.CUInt instance BG.Prim ElementaryParticleType

instance CEnum.CEnum ElementaryParticleType where

  type CEnumZ ElementaryParticleType = BG.CUInt

  toCEnum = ElementaryParticleType

  fromCEnum =
    BG.getField @"unwrapElementaryParticleType"

  declaredValues =
    \_ ->
      CEnum.declaredValuesFromList [ (0, BG.singleton "Quark_up")
                                   , (1, BG.singleton "Quark_down")
                                   , (2, BG.singleton "Quark_charm")
                                   , (3, BG.singleton "Quark_strange")
                                   , (4, BG.singleton "Quark_top")
                                   , (5, BG.singleton "Quark_bottom")
                                   , (6, BG.singleton "Lepton_electron")
                                   , (7, BG.singleton "Lepton_electron_neutrino")
                                   , (8, BG.singleton "Lepton_muon")
                                   , (9, BG.singleton "Lepton_muon_neutrino")
                                   , (10, BG.singleton "Lepton_tau")
                                   , (11, BG.singleton "Lepton_tau_neutrino")
                                   , (12, BG.singleton "Boson_gluon")
                                   , (13, BG.singleton "Boson_photon")
                                   , (14, BG.singleton "Boson_z")
                                   , (15, BG.singleton "Boson_w")
                                   , (16, BG.singleton "Boson_higgs")
                                   ]

  showsUndeclared =
    CEnum.showsWrappedUndeclared "ElementaryParticleType"

  readPrecUndeclared =
    CEnum.readPrecWrappedUndeclared "ElementaryParticleType"

  isDeclared = CEnum.seqIsDeclared

  mkDeclared = CEnum.seqMkDeclared

instance CEnum.SequentialCEnum ElementaryParticleType where

  minDeclaredValue = Quark_up

  maxDeclaredValue = Boson_higgs

instance Show ElementaryParticleType where

  showsPrec = CEnum.shows

instance Read ElementaryParticleType where

  readPrec = CEnum.readPrec

  readList = BG.readListDefault

  readListPrec = BG.readListPrecDefault

instance ( ty ~ BG.CUInt
         ) => BG.CompatHasField.HasField "unwrapElementaryParticleType" ElementaryParticleType ty where

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

instance ( ty ~ BG.CUInt
         ) => BG.HasField "unwrapElementaryParticleType" (BG.Ptr ElementaryParticleType) (BG.Ptr ty) where

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

instance HasCField.HasCField ElementaryParticleType "unwrapElementaryParticleType" where

  type CFieldType ElementaryParticleType "unwrapElementaryParticleType" =
    BG.CUInt

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

{-| __C declaration:__ @quark_up@

    __defined at:__ @binding-specs\/enum\/closed.h 9:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Quark_up :: ElementaryParticleType
pattern Quark_up = ElementaryParticleType 0

{-| __C declaration:__ @quark_down@

    __defined at:__ @binding-specs\/enum\/closed.h 10:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Quark_down :: ElementaryParticleType
pattern Quark_down = ElementaryParticleType 1

{-| __C declaration:__ @quark_charm@

    __defined at:__ @binding-specs\/enum\/closed.h 11:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Quark_charm :: ElementaryParticleType
pattern Quark_charm = ElementaryParticleType 2

{-| __C declaration:__ @quark_strange@

    __defined at:__ @binding-specs\/enum\/closed.h 12:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Quark_strange :: ElementaryParticleType
pattern Quark_strange = ElementaryParticleType 3

{-| __C declaration:__ @quark_top@

    __defined at:__ @binding-specs\/enum\/closed.h 13:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Quark_top :: ElementaryParticleType
pattern Quark_top = ElementaryParticleType 4

{-| __C declaration:__ @quark_bottom@

    __defined at:__ @binding-specs\/enum\/closed.h 14:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Quark_bottom :: ElementaryParticleType
pattern Quark_bottom = ElementaryParticleType 5

{-| __C declaration:__ @lepton_electron@

    __defined at:__ @binding-specs\/enum\/closed.h 15:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Lepton_electron :: ElementaryParticleType
pattern Lepton_electron = ElementaryParticleType 6

{-| __C declaration:__ @lepton_electron_neutrino@

    __defined at:__ @binding-specs\/enum\/closed.h 16:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Lepton_electron_neutrino :: ElementaryParticleType
pattern Lepton_electron_neutrino = ElementaryParticleType 7

{-| __C declaration:__ @lepton_muon@

    __defined at:__ @binding-specs\/enum\/closed.h 17:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Lepton_muon :: ElementaryParticleType
pattern Lepton_muon = ElementaryParticleType 8

{-| __C declaration:__ @lepton_muon_neutrino@

    __defined at:__ @binding-specs\/enum\/closed.h 18:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Lepton_muon_neutrino :: ElementaryParticleType
pattern Lepton_muon_neutrino = ElementaryParticleType 9

{-| __C declaration:__ @lepton_tau@

    __defined at:__ @binding-specs\/enum\/closed.h 19:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Lepton_tau :: ElementaryParticleType
pattern Lepton_tau = ElementaryParticleType 10

{-| __C declaration:__ @lepton_tau_neutrino@

    __defined at:__ @binding-specs\/enum\/closed.h 20:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Lepton_tau_neutrino :: ElementaryParticleType
pattern Lepton_tau_neutrino = ElementaryParticleType 11

{-| __C declaration:__ @boson_gluon@

    __defined at:__ @binding-specs\/enum\/closed.h 21:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Boson_gluon :: ElementaryParticleType
pattern Boson_gluon = ElementaryParticleType 12

{-| __C declaration:__ @boson_photon@

    __defined at:__ @binding-specs\/enum\/closed.h 22:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Boson_photon :: ElementaryParticleType
pattern Boson_photon = ElementaryParticleType 13

{-| __C declaration:__ @boson_z@

    __defined at:__ @binding-specs\/enum\/closed.h 23:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Boson_z :: ElementaryParticleType
pattern Boson_z = ElementaryParticleType 14

{-| __C declaration:__ @boson_w@

    __defined at:__ @binding-specs\/enum\/closed.h 24:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Boson_w :: ElementaryParticleType
pattern Boson_w = ElementaryParticleType 15

{-| __C declaration:__ @boson_higgs@

    __defined at:__ @binding-specs\/enum\/closed.h 25:3@

    __exported by:__ @binding-specs\/enum\/closed.h@
-}
pattern Boson_higgs :: ElementaryParticleType
pattern Boson_higgs = ElementaryParticleType 16

{-# COMPLETE
      Quark_up
    , Quark_down
    , Quark_charm
    , Quark_strange
    , Quark_top
    , Quark_bottom
    , Lepton_electron
    , Lepton_electron_neutrino
    , Lepton_muon
    , Lepton_muon_neutrino
    , Lepton_tau
    , Lepton_tau_neutrino
    , Boson_gluon
    , Boson_photon
    , Boson_z
    , Boson_w
    , Boson_higgs
  #-}