-- addDependentFile examples/golden/binding-specs/fun_arg/macro/array.h
-- #include <binding-specs/fun_arg/macro/array.h>
-- void hs_bindgen_2a6ef3a515232132 (
--   MyArray *arg1
-- )
-- {
--   foo(*arg1);
-- }
-- void hs_bindgen_4449a68917cbc499 (
--   A *arg1
-- )
-- {
--   fooA(*arg1);
-- }
-- void hs_bindgen_05766199d1b077bb (
--   B *arg1
-- )
-- {
--   fooB(*arg1);
-- }
-- void hs_bindgen_969f916bf9590709 (
--   MyArray *arg1
-- )
-- {
--   foo(*arg1);
-- }
-- void hs_bindgen_fb89f30695d9a112 (
--   A *arg1
-- )
-- {
--   fooA(*arg1);
-- }
-- void hs_bindgen_6882cd6e82766148 (
--   B *arg1
-- )
-- {
--   fooB(*arg1);
-- }
-- /* test_bindingspecsfun_argmacroar_Example_get_foo */
-- __attribute__ ((const))
-- void (*hs_bindgen_fc9d87cbca4127e4 (void)) (
--   MyArray arg1
-- )
-- {
--   return &foo;
-- }
-- /* test_bindingspecsfun_argmacroar_Example_get_fooA */
-- __attribute__ ((const))
-- void (*hs_bindgen_0dbc306c53c94679 (void)) (
--   A arg1
-- )
-- {
--   return &fooA;
-- }
-- /* test_bindingspecsfun_argmacroar_Example_get_fooB */
-- __attribute__ ((const))
-- void (*hs_bindgen_db0d885ae35d447f (void)) (
--   B arg1
-- )
-- {
--   return &fooB;
-- }
{-| __C declaration:__ @MyArray@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 4:13@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
newtype MyArray
    = MyArray {unwrapMyArray :: (IncompleteArray CInt)}
      {- ^ __C declaration:__ @MyArray@

           __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 4:13@

           __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
      -}
    deriving stock (Eq, Show)
instance TyEq ty (CFieldType MyArray "unwrapMyArray") =>
         HasField "unwrapMyArray" (Ptr MyArray) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapMyArray")
instance HasCField MyArray "unwrapMyArray"
    where type CFieldType MyArray
                          "unwrapMyArray" = IncompleteArray CInt
          offset# = \_ -> \_ -> 0
{-| __C declaration:__ @A@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 7:9@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
newtype A
    = A {unwrapA :: MyArray}
      {- ^ __C declaration:__ @A@

           __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 7:9@

           __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
      -}
    deriving stock (Eq, Show)
instance TyEq ty (CFieldType A "unwrapA") =>
         HasField "unwrapA" (Ptr A) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapA")
instance HasCField A "unwrapA"
    where type CFieldType A "unwrapA" = MyArray
          offset# = \_ -> \_ -> 0
{-| __C declaration:__ @B@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 8:9@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
newtype B
    = B {unwrapB :: A}
      {- ^ __C declaration:__ @B@

           __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 8:9@

           __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
      -}
    deriving stock (Eq, Show)
instance TyEq ty (CFieldType B "unwrapB") =>
         HasField "unwrapB" (Ptr B) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapB")
instance HasCField B "unwrapB"
    where type CFieldType B "unwrapB" = A
          offset# = \_ -> \_ -> 0
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Safe_foo@
foreign import ccall safe "hs_bindgen_2a6ef3a515232132" hs_bindgen_2a6ef3a515232132_base ::
    Ptr Void
 -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Safe_foo@
hs_bindgen_2a6ef3a515232132 :: Ptr MyArray -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Safe_foo@
hs_bindgen_2a6ef3a515232132 = fromFFIType hs_bindgen_2a6ef3a515232132_base
{-| __C declaration:__ @foo@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 5:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
foo :: Ptr MyArray -> IO Unit
{-| __C declaration:__ @foo@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 5:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
foo = hs_bindgen_2a6ef3a515232132
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Safe_fooA@
foreign import ccall safe "hs_bindgen_4449a68917cbc499" hs_bindgen_4449a68917cbc499_base ::
    Ptr Void
 -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Safe_fooA@
hs_bindgen_4449a68917cbc499 :: Ptr A -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Safe_fooA@
hs_bindgen_4449a68917cbc499 = fromFFIType hs_bindgen_4449a68917cbc499_base
{-| __C declaration:__ @fooA@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 10:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooA :: Ptr A -> IO Unit
{-| __C declaration:__ @fooA@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 10:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooA = hs_bindgen_4449a68917cbc499
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Safe_fooB@
foreign import ccall safe "hs_bindgen_05766199d1b077bb" hs_bindgen_05766199d1b077bb_base ::
    Ptr Void
 -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Safe_fooB@
hs_bindgen_05766199d1b077bb :: Ptr B -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Safe_fooB@
hs_bindgen_05766199d1b077bb = fromFFIType hs_bindgen_05766199d1b077bb_base
{-| __C declaration:__ @fooB@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 11:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooB :: Ptr B -> IO Unit
{-| __C declaration:__ @fooB@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 11:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooB = hs_bindgen_05766199d1b077bb
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Unsafe_foo@
foreign import ccall unsafe "hs_bindgen_969f916bf9590709" hs_bindgen_969f916bf9590709_base ::
    Ptr Void
 -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Unsafe_foo@
hs_bindgen_969f916bf9590709 :: Ptr MyArray -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Unsafe_foo@
hs_bindgen_969f916bf9590709 = fromFFIType hs_bindgen_969f916bf9590709_base
{-| __C declaration:__ @foo@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 5:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
foo :: Ptr MyArray -> IO Unit
{-| __C declaration:__ @foo@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 5:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
foo = hs_bindgen_969f916bf9590709
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Unsafe_fooA@
foreign import ccall unsafe "hs_bindgen_fb89f30695d9a112" hs_bindgen_fb89f30695d9a112_base ::
    Ptr Void
 -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Unsafe_fooA@
hs_bindgen_fb89f30695d9a112 :: Ptr A -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Unsafe_fooA@
hs_bindgen_fb89f30695d9a112 = fromFFIType hs_bindgen_fb89f30695d9a112_base
{-| __C declaration:__ @fooA@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 10:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooA :: Ptr A -> IO Unit
{-| __C declaration:__ @fooA@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 10:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooA = hs_bindgen_fb89f30695d9a112
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Unsafe_fooB@
foreign import ccall unsafe "hs_bindgen_6882cd6e82766148" hs_bindgen_6882cd6e82766148_base ::
    Ptr Void
 -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Unsafe_fooB@
hs_bindgen_6882cd6e82766148 :: Ptr B -> IO Unit
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_Unsafe_fooB@
hs_bindgen_6882cd6e82766148 = fromFFIType hs_bindgen_6882cd6e82766148_base
{-| __C declaration:__ @fooB@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 11:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooB :: Ptr B -> IO Unit
{-| __C declaration:__ @fooB@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 11:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooB = hs_bindgen_6882cd6e82766148
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_get_foo@
foreign import ccall unsafe "hs_bindgen_fc9d87cbca4127e4" hs_bindgen_fc9d87cbca4127e4_base ::
    IO (FunPtr Void)
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_get_foo@
hs_bindgen_fc9d87cbca4127e4 :: IO (FunPtr (MyArray -> IO Unit))
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_get_foo@
hs_bindgen_fc9d87cbca4127e4 = fromFFIType hs_bindgen_fc9d87cbca4127e4_base
{-# NOINLINE foo #-}
{-| __C declaration:__ @foo@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 5:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
foo :: FunPtr (MyArray -> IO Unit)
{-| __C declaration:__ @foo@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 5:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
foo = unsafePerformIO hs_bindgen_fc9d87cbca4127e4
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_get_fooA@
foreign import ccall unsafe "hs_bindgen_0dbc306c53c94679" hs_bindgen_0dbc306c53c94679_base ::
    IO (FunPtr Void)
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_get_fooA@
hs_bindgen_0dbc306c53c94679 :: IO (FunPtr (A -> IO Unit))
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_get_fooA@
hs_bindgen_0dbc306c53c94679 = fromFFIType hs_bindgen_0dbc306c53c94679_base
{-# NOINLINE fooA #-}
{-| __C declaration:__ @fooA@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 10:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooA :: FunPtr (A -> IO Unit)
{-| __C declaration:__ @fooA@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 10:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooA = unsafePerformIO hs_bindgen_0dbc306c53c94679
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_get_fooB@
foreign import ccall unsafe "hs_bindgen_db0d885ae35d447f" hs_bindgen_db0d885ae35d447f_base ::
    IO (FunPtr Void)
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_get_fooB@
hs_bindgen_db0d885ae35d447f :: IO (FunPtr (B -> IO Unit))
-- __unique:__ @test_bindingspecsfun_argmacroar_Example_get_fooB@
hs_bindgen_db0d885ae35d447f = fromFFIType hs_bindgen_db0d885ae35d447f_base
{-# NOINLINE fooB #-}
{-| __C declaration:__ @fooB@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 11:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooB :: FunPtr (B -> IO Unit)
{-| __C declaration:__ @fooB@

    __defined at:__ @binding-specs\/fun_arg\/macro\/array.h 11:6@

    __exported by:__ @binding-specs\/fun_arg\/macro\/array.h@
-}
fooB = unsafePerformIO hs_bindgen_db0d885ae35d447f
