-- addDependentFile musl-include/x86_64/bits/stdint.h
-- addDependentFile musl-include/x86_64/bits/alltypes.h
-- addDependentFile musl-include/x86_64/stdint.h
-- addDependentFile examples/golden/types/enums/enum_cpp_syntax.h
{-| __C declaration:__ @enum foo_enum@

    __defined at:__ @types\/enums\/enum_cpp_syntax.h 4:9@

    __exported by:__ @types\/enums\/enum_cpp_syntax.h@
-}
newtype Foo_enum
    = Foo_enum {unwrapFoo_enum :: HsBindgen.Runtime.LibC.Word32}
      {- ^ __C declaration:__ @enum foo_enum@

           __defined at:__ @types\/enums\/enum_cpp_syntax.h 4:9@

           __exported by:__ @types\/enums\/enum_cpp_syntax.h@
      -}
    deriving stock (Eq, Ord)
    deriving newtype HasFFIType
instance StaticSize Foo_enum
    where staticSizeOf = \_ -> 4 :: Int
          staticAlignment = \_ -> 4 :: Int
instance ReadRaw Foo_enum
    where readRaw = \ptr_0 -> pure Foo_enum <*> readRawByteOff ptr_0 (0 :: Int)
instance WriteRaw Foo_enum
    where writeRaw = \ptr_0 -> \s_1 -> case s_1 of
                                       Foo_enum unwrapFoo_enum_2 -> writeRawByteOff ptr_0 (0 :: Int) unwrapFoo_enum_2
deriving via (EquivStorable Foo_enum) instance Storable Foo_enum
deriving via HsBindgen.Runtime.LibC.Word32 instance Prim Foo_enum
instance CEnum Foo_enum
    where type CEnumZ Foo_enum = HsBindgen.Runtime.LibC.Word32
          toCEnum = Foo_enum
          fromCEnum = unwrapFoo_enum
          declaredValues = \_ -> declaredValuesFromList [(0, singleton "A"),
                                                         (1, singleton "B"),
                                                         (2, singleton "C")]
          showsUndeclared = showsWrappedUndeclared "Foo_enum"
          readPrecUndeclared = readPrecWrappedUndeclared "Foo_enum"
          isDeclared = seqIsDeclared
          mkDeclared = seqMkDeclared
instance SequentialCEnum Foo_enum
    where minDeclaredValue = A
          maxDeclaredValue = C
instance Show Foo_enum
    where showsPrec = shows
instance Read Foo_enum
    where readPrec = readPrec
          readList = readListDefault
          readListPrec = readListPrecDefault
instance TyEq ty (CFieldType Foo_enum "unwrapFoo_enum") =>
         HasField "unwrapFoo_enum" (Ptr Foo_enum) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapFoo_enum")
instance HasCField Foo_enum "unwrapFoo_enum"
    where type CFieldType Foo_enum
                          "unwrapFoo_enum" = HsBindgen.Runtime.LibC.Word32
          offset# = \_ -> \_ -> 0
{-| __C declaration:__ @A@

    __defined at:__ @types\/enums\/enum_cpp_syntax.h 4:27@

    __exported by:__ @types\/enums\/enum_cpp_syntax.h@
-}
pattern A :: Foo_enum
{-| __C declaration:__ @A@

    __defined at:__ @types\/enums\/enum_cpp_syntax.h 4:27@

    __exported by:__ @types\/enums\/enum_cpp_syntax.h@
-}
pattern A = Foo_enum 0
{-| __C declaration:__ @B@

    __defined at:__ @types\/enums\/enum_cpp_syntax.h 4:30@

    __exported by:__ @types\/enums\/enum_cpp_syntax.h@
-}
pattern B :: Foo_enum
{-| __C declaration:__ @B@

    __defined at:__ @types\/enums\/enum_cpp_syntax.h 4:30@

    __exported by:__ @types\/enums\/enum_cpp_syntax.h@
-}
pattern B = Foo_enum 1
{-| __C declaration:__ @C@

    __defined at:__ @types\/enums\/enum_cpp_syntax.h 4:33@

    __exported by:__ @types\/enums\/enum_cpp_syntax.h@
-}
pattern C :: Foo_enum
{-| __C declaration:__ @C@

    __defined at:__ @types\/enums\/enum_cpp_syntax.h 4:33@

    __exported by:__ @types\/enums\/enum_cpp_syntax.h@
-}
pattern C = Foo_enum 2
