-- addDependentFile examples/golden/edge-cases/uses_utf8.h
{-| __C declaration:__ @enum MyEnum@

    __defined at:__ @edge-cases\/uses_utf8.h 4:6@

    __exported by:__ @edge-cases\/uses_utf8.h@
-}
newtype MyEnum
    = MyEnum {unwrapMyEnum :: CUInt}
      {- ^ __C declaration:__ @enum MyEnum@

           __defined at:__ @edge-cases\/uses_utf8.h 4:6@

           __exported by:__ @edge-cases\/uses_utf8.h@
      -}
    deriving stock (Eq, Ord)
    deriving newtype HasFFIType
instance StaticSize MyEnum
    where staticSizeOf = \_ -> 4 :: Int
          staticAlignment = \_ -> 4 :: Int
instance ReadRaw MyEnum
    where readRaw = \ptr_0 -> pure MyEnum <*> readRawByteOff ptr_0 (0 :: Int)
instance WriteRaw MyEnum
    where writeRaw = \ptr_0 -> \s_1 -> case s_1 of
                                       MyEnum unwrapMyEnum_2 -> writeRawByteOff ptr_0 (0 :: Int) unwrapMyEnum_2
deriving via (EquivStorable MyEnum) instance Storable MyEnum
deriving via CUInt instance Prim MyEnum
instance CEnum MyEnum
    where type CEnumZ MyEnum = CUInt
          toCEnum = MyEnum
          fromCEnum = unwrapMyEnum
          declaredValues = \_ -> declaredValuesFromList [(0,
                                                          singleton "Say\20320\22909"),
                                                         (1, singleton "Say\25308\25308")]
          showsUndeclared = showsWrappedUndeclared "MyEnum"
          readPrecUndeclared = readPrecWrappedUndeclared "MyEnum"
          isDeclared = seqIsDeclared
          mkDeclared = seqMkDeclared
instance SequentialCEnum MyEnum
    where minDeclaredValue = Say你好
          maxDeclaredValue = Say拜拜
instance Show MyEnum
    where showsPrec = shows
instance Read MyEnum
    where readPrec = readPrec
          readList = readListDefault
          readListPrec = readListPrecDefault
instance TyEq ty (CFieldType MyEnum "unwrapMyEnum") =>
         HasField "unwrapMyEnum" (Ptr MyEnum) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapMyEnum")
instance HasCField MyEnum "unwrapMyEnum"
    where type CFieldType MyEnum "unwrapMyEnum" = CUInt
          offset# = \_ -> \_ -> 0
{-| __C declaration:__ @Say你好@

    __defined at:__ @edge-cases\/uses_utf8.h 5:9@

    __exported by:__ @edge-cases\/uses_utf8.h@
-}
pattern Say你好 :: MyEnum
{-| __C declaration:__ @Say你好@

    __defined at:__ @edge-cases\/uses_utf8.h 5:9@

    __exported by:__ @edge-cases\/uses_utf8.h@
-}
pattern Say你好 = MyEnum 0
{-| __C declaration:__ @Say拜拜@

    __defined at:__ @edge-cases\/uses_utf8.h 6:9@

    __exported by:__ @edge-cases\/uses_utf8.h@
-}
pattern Say拜拜 :: MyEnum
{-| __C declaration:__ @Say拜拜@

    __defined at:__ @edge-cases\/uses_utf8.h 6:9@

    __exported by:__ @edge-cases\/uses_utf8.h@
-}
pattern Say拜拜 = MyEnum 1
