-- addDependentFile examples/golden/manual/arrays.h
-- #include <manual/arrays.h>
-- void hs_bindgen_cba7011c6d25362b (
--   matrix const *arg1,
--   matrix *arg2
-- )
-- {
--   transpose(*arg1, *arg2);
-- }
-- void hs_bindgen_45d15697a99c626a (
--   triplet_ptrs *arg1
-- )
-- {
--   pretty_print_triplets(*arg1);
-- }
-- void hs_bindgen_f9f2776d121db261 (
--   matrix const *arg1,
--   matrix *arg2
-- )
-- {
--   transpose(*arg1, *arg2);
-- }
-- void hs_bindgen_e43b4d44aa0abd14 (
--   triplet_ptrs *arg1
-- )
-- {
--   pretty_print_triplets(*arg1);
-- }
-- /* test_manualarrays_Example_get_transpose */
-- __attribute__ ((const))
-- void (*hs_bindgen_c99d8a3b0363a0fa (void)) (
--   matrix const arg1,
--   matrix arg2
-- )
-- {
--   return &transpose;
-- }
-- /* test_manualarrays_Example_get_pretty_print_triplets */
-- __attribute__ ((const))
-- void (*hs_bindgen_923b33cbbfeb5e7d (void)) (
--   triplet_ptrs arg1
-- )
-- {
--   return &pretty_print_triplets;
-- }
-- /* test_manualarrays_Example_get_arr1 */
-- __attribute__ ((const))
-- signed int (*hs_bindgen_6843a8f5c61ff74e (void))[1]
-- {
--   return &arr1;
-- }
-- /* test_manualarrays_Example_get_arr2 */
-- __attribute__ ((const))
-- signed int (*hs_bindgen_60c5bfbe2e29672a (void))[3]
-- {
--   return &arr2;
-- }
-- /* test_manualarrays_Example_get_arr3 */
-- __attribute__ ((const))
-- signed int (*hs_bindgen_a0497dc4c0aba158 (void))[]
-- {
--   return &arr3;
-- }
-- /* test_manualarrays_Example_get_sudoku */
-- __attribute__ ((const))
-- signed int (*hs_bindgen_609c0f69bf6da356 (void))[3][3]
-- {
--   return &sudoku;
-- }
-- /* test_manualarrays_Example_get_triplets */
-- __attribute__ ((const))
-- signed int (*hs_bindgen_52a30badbe2c9671 (void))[][3]
-- {
--   return &triplets;
-- }
-- /* test_manualarrays_Example_get_global_triplet_ptrs */
-- __attribute__ ((const))
-- triplet_ptrs *hs_bindgen_23817a1a9bc92057 (void)
-- {
--   return &global_triplet_ptrs;
-- }
{-| __C declaration:__ @triplet@

    __defined at:__ @manual\/arrays.h 32:13@

    __exported by:__ @manual\/arrays.h@
-}
newtype Triplet
    = Triplet {unwrapTriplet :: (ConstantArray 3 CInt)}
      {- ^ __C declaration:__ @triplet@

           __defined at:__ @manual\/arrays.h 32:13@

           __exported by:__ @manual\/arrays.h@
      -}
    deriving stock (Eq, Show)
    deriving newtype (StaticSize, ReadRaw, WriteRaw, Storable)
instance TyEq ty (CFieldType Triplet "unwrapTriplet") =>
         HasField "unwrapTriplet" (Ptr Triplet) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapTriplet")
instance HasCField Triplet "unwrapTriplet"
    where type CFieldType Triplet "unwrapTriplet" = ConstantArray 3
                                                                  CInt
          offset# = \_ -> \_ -> 0
{-| __C declaration:__ @matrix@

    __defined at:__ @manual\/arrays.h 34:17@

    __exported by:__ @manual\/arrays.h@
-}
newtype Matrix
    = Matrix {unwrapMatrix :: (ConstantArray 3 Triplet)}
      {- ^ __C declaration:__ @matrix@

           __defined at:__ @manual\/arrays.h 34:17@

           __exported by:__ @manual\/arrays.h@
      -}
    deriving stock (Eq, Show)
    deriving newtype (StaticSize, ReadRaw, WriteRaw, Storable)
instance TyEq ty (CFieldType Matrix "unwrapMatrix") =>
         HasField "unwrapMatrix" (Ptr Matrix) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapMatrix")
instance HasCField Matrix "unwrapMatrix"
    where type CFieldType Matrix "unwrapMatrix" = ConstantArray 3
                                                                Triplet
          offset# = \_ -> \_ -> 0
{-| A typedef representing a an array of unknown size, where each element is a pointer to an array of known size 3, where each element is an int.

__C declaration:__ @triplet_ptrs@

__defined at:__ @manual\/arrays.h 44:15@

__exported by:__ @manual\/arrays.h@
-}
newtype Triplet_ptrs
    = Triplet_ptrs {unwrapTriplet_ptrs :: (IncompleteArray (Ptr (ConstantArray 3
                                                                               CInt)))}
      {- ^ A typedef representing a an array of unknown size, where each element is a pointer to an array of known size 3, where each element is an int.

      __C declaration:__ @triplet_ptrs@

      __defined at:__ @manual\/arrays.h 44:15@

      __exported by:__ @manual\/arrays.h@
      -}
    deriving stock (Eq, Show)
instance TyEq ty (CFieldType Triplet_ptrs "unwrapTriplet_ptrs") =>
         HasField "unwrapTriplet_ptrs" (Ptr Triplet_ptrs) (Ptr ty)
    where getField = fromPtr (Proxy @"unwrapTriplet_ptrs")
instance HasCField Triplet_ptrs "unwrapTriplet_ptrs"
    where type CFieldType Triplet_ptrs
                          "unwrapTriplet_ptrs" = IncompleteArray (Ptr (ConstantArray 3 CInt))
          offset# = \_ -> \_ -> 0
-- __unique:__ @test_manualarrays_Example_Safe_transpose@
foreign import ccall safe "hs_bindgen_cba7011c6d25362b" hs_bindgen_cba7011c6d25362b_base ::
    Ptr Void
 -> Ptr Void
 -> IO Unit
-- __unique:__ @test_manualarrays_Example_Safe_transpose@
hs_bindgen_cba7011c6d25362b :: PtrConst Matrix ->
                               Ptr Matrix -> IO Unit
-- __unique:__ @test_manualarrays_Example_Safe_transpose@
hs_bindgen_cba7011c6d25362b = fromFFIType hs_bindgen_cba7011c6d25362b_base
{-| __C declaration:__ @transpose@

    __defined at:__ @manual\/arrays.h 36:6@

    __exported by:__ @manual\/arrays.h@
-}
transpose :: PtrConst Matrix -> Ptr Matrix -> IO Unit
{-| __C declaration:__ @transpose@

    __defined at:__ @manual\/arrays.h 36:6@

    __exported by:__ @manual\/arrays.h@
-}
transpose = hs_bindgen_cba7011c6d25362b
-- __unique:__ @test_manualarrays_Example_Safe_pretty_print_triplets@
foreign import ccall safe "hs_bindgen_45d15697a99c626a" hs_bindgen_45d15697a99c626a_base ::
    Ptr Void
 -> IO Unit
-- __unique:__ @test_manualarrays_Example_Safe_pretty_print_triplets@
hs_bindgen_45d15697a99c626a :: Ptr Triplet_ptrs -> IO Unit
-- __unique:__ @test_manualarrays_Example_Safe_pretty_print_triplets@
hs_bindgen_45d15697a99c626a = fromFFIType hs_bindgen_45d15697a99c626a_base
{-| A function that prints the given triplet_ptrs

__C declaration:__ @pretty_print_triplets@

__defined at:__ @manual\/arrays.h 50:13@

__exported by:__ @manual\/arrays.h@
-}
pretty_print_triplets :: Ptr Triplet_ptrs -> IO Unit
{-| A function that prints the given triplet_ptrs

__C declaration:__ @pretty_print_triplets@

__defined at:__ @manual\/arrays.h 50:13@

__exported by:__ @manual\/arrays.h@
-}
pretty_print_triplets = hs_bindgen_45d15697a99c626a
-- __unique:__ @test_manualarrays_Example_Unsafe_transpose@
foreign import ccall unsafe "hs_bindgen_f9f2776d121db261" hs_bindgen_f9f2776d121db261_base ::
    Ptr Void
 -> Ptr Void
 -> IO Unit
-- __unique:__ @test_manualarrays_Example_Unsafe_transpose@
hs_bindgen_f9f2776d121db261 :: PtrConst Matrix ->
                               Ptr Matrix -> IO Unit
-- __unique:__ @test_manualarrays_Example_Unsafe_transpose@
hs_bindgen_f9f2776d121db261 = fromFFIType hs_bindgen_f9f2776d121db261_base
{-| __C declaration:__ @transpose@

    __defined at:__ @manual\/arrays.h 36:6@

    __exported by:__ @manual\/arrays.h@
-}
transpose :: PtrConst Matrix -> Ptr Matrix -> IO Unit
{-| __C declaration:__ @transpose@

    __defined at:__ @manual\/arrays.h 36:6@

    __exported by:__ @manual\/arrays.h@
-}
transpose = hs_bindgen_f9f2776d121db261
-- __unique:__ @test_manualarrays_Example_Unsafe_pretty_print_triplets@
foreign import ccall unsafe "hs_bindgen_e43b4d44aa0abd14" hs_bindgen_e43b4d44aa0abd14_base ::
    Ptr Void
 -> IO Unit
-- __unique:__ @test_manualarrays_Example_Unsafe_pretty_print_triplets@
hs_bindgen_e43b4d44aa0abd14 :: Ptr Triplet_ptrs -> IO Unit
-- __unique:__ @test_manualarrays_Example_Unsafe_pretty_print_triplets@
hs_bindgen_e43b4d44aa0abd14 = fromFFIType hs_bindgen_e43b4d44aa0abd14_base
{-| A function that prints the given triplet_ptrs

__C declaration:__ @pretty_print_triplets@

__defined at:__ @manual\/arrays.h 50:13@

__exported by:__ @manual\/arrays.h@
-}
pretty_print_triplets :: Ptr Triplet_ptrs -> IO Unit
{-| A function that prints the given triplet_ptrs

__C declaration:__ @pretty_print_triplets@

__defined at:__ @manual\/arrays.h 50:13@

__exported by:__ @manual\/arrays.h@
-}
pretty_print_triplets = hs_bindgen_e43b4d44aa0abd14
-- __unique:__ @test_manualarrays_Example_get_transpose@
foreign import ccall unsafe "hs_bindgen_c99d8a3b0363a0fa" hs_bindgen_c99d8a3b0363a0fa_base ::
    IO (FunPtr Void)
-- __unique:__ @test_manualarrays_Example_get_transpose@
hs_bindgen_c99d8a3b0363a0fa :: IO (FunPtr (Matrix ->
                                           Matrix -> IO Unit))
-- __unique:__ @test_manualarrays_Example_get_transpose@
hs_bindgen_c99d8a3b0363a0fa = fromFFIType hs_bindgen_c99d8a3b0363a0fa_base
{-# NOINLINE transpose #-}
{-| __C declaration:__ @transpose@

    __defined at:__ @manual\/arrays.h 36:6@

    __exported by:__ @manual\/arrays.h@
-}
transpose :: FunPtr (Matrix -> Matrix -> IO Unit)
{-| __C declaration:__ @transpose@

    __defined at:__ @manual\/arrays.h 36:6@

    __exported by:__ @manual\/arrays.h@
-}
transpose = unsafePerformIO hs_bindgen_c99d8a3b0363a0fa
-- __unique:__ @test_manualarrays_Example_get_pretty_print_triplets@
foreign import ccall unsafe "hs_bindgen_923b33cbbfeb5e7d" hs_bindgen_923b33cbbfeb5e7d_base ::
    IO (FunPtr Void)
-- __unique:__ @test_manualarrays_Example_get_pretty_print_triplets@
hs_bindgen_923b33cbbfeb5e7d :: IO (FunPtr (Triplet_ptrs ->
                                           IO Unit))
-- __unique:__ @test_manualarrays_Example_get_pretty_print_triplets@
hs_bindgen_923b33cbbfeb5e7d = fromFFIType hs_bindgen_923b33cbbfeb5e7d_base
{-# NOINLINE pretty_print_triplets #-}
{-| A function that prints the given triplet_ptrs

__C declaration:__ @pretty_print_triplets@

__defined at:__ @manual\/arrays.h 50:13@

__exported by:__ @manual\/arrays.h@
-}
pretty_print_triplets :: FunPtr (Triplet_ptrs -> IO Unit)
{-| A function that prints the given triplet_ptrs

__C declaration:__ @pretty_print_triplets@

__defined at:__ @manual\/arrays.h 50:13@

__exported by:__ @manual\/arrays.h@
-}
pretty_print_triplets = unsafePerformIO hs_bindgen_923b33cbbfeb5e7d
-- __unique:__ @test_manualarrays_Example_get_arr1@
foreign import ccall unsafe "hs_bindgen_6843a8f5c61ff74e" hs_bindgen_6843a8f5c61ff74e_base ::
    IO (Ptr Void)
-- __unique:__ @test_manualarrays_Example_get_arr1@
hs_bindgen_6843a8f5c61ff74e :: IO (Ptr (ConstantArray 1 CInt))
-- __unique:__ @test_manualarrays_Example_get_arr1@
hs_bindgen_6843a8f5c61ff74e = fromFFIType hs_bindgen_6843a8f5c61ff74e_base
{-# NOINLINE arr1 #-}
{-| Global, complete, initialised

__C declaration:__ @arr1@

__defined at:__ @manual\/arrays.h 13:12@

__exported by:__ @manual\/arrays.h@
-}
arr1 :: Ptr (ConstantArray 1 CInt)
{-| Global, complete, initialised

__C declaration:__ @arr1@

__defined at:__ @manual\/arrays.h 13:12@

__exported by:__ @manual\/arrays.h@
-}
arr1 = unsafePerformIO hs_bindgen_6843a8f5c61ff74e
-- __unique:__ @test_manualarrays_Example_get_arr2@
foreign import ccall unsafe "hs_bindgen_60c5bfbe2e29672a" hs_bindgen_60c5bfbe2e29672a_base ::
    IO (Ptr Void)
-- __unique:__ @test_manualarrays_Example_get_arr2@
hs_bindgen_60c5bfbe2e29672a :: IO (Ptr (ConstantArray 3 CInt))
-- __unique:__ @test_manualarrays_Example_get_arr2@
hs_bindgen_60c5bfbe2e29672a = fromFFIType hs_bindgen_60c5bfbe2e29672a_base
{-# NOINLINE arr2 #-}
{-| Global, extern, complete, not initialised

__C declaration:__ @arr2@

__defined at:__ @manual\/arrays.h 16:12@

__exported by:__ @manual\/arrays.h@
-}
arr2 :: Ptr (ConstantArray 3 CInt)
{-| Global, extern, complete, not initialised

__C declaration:__ @arr2@

__defined at:__ @manual\/arrays.h 16:12@

__exported by:__ @manual\/arrays.h@
-}
arr2 = unsafePerformIO hs_bindgen_60c5bfbe2e29672a
-- __unique:__ @test_manualarrays_Example_get_arr3@
foreign import ccall unsafe "hs_bindgen_a0497dc4c0aba158" hs_bindgen_a0497dc4c0aba158_base ::
    IO (Ptr Void)
-- __unique:__ @test_manualarrays_Example_get_arr3@
hs_bindgen_a0497dc4c0aba158 :: IO (Ptr (IncompleteArray CInt))
-- __unique:__ @test_manualarrays_Example_get_arr3@
hs_bindgen_a0497dc4c0aba158 = fromFFIType hs_bindgen_a0497dc4c0aba158_base
{-# NOINLINE arr3 #-}
{-| Global, extern, incomplete

__C declaration:__ @arr3@

__defined at:__ @manual\/arrays.h 19:12@

__exported by:__ @manual\/arrays.h@
-}
arr3 :: Ptr (IncompleteArray CInt)
{-| Global, extern, incomplete

__C declaration:__ @arr3@

__defined at:__ @manual\/arrays.h 19:12@

__exported by:__ @manual\/arrays.h@
-}
arr3 = unsafePerformIO hs_bindgen_a0497dc4c0aba158
-- __unique:__ @test_manualarrays_Example_get_sudoku@
foreign import ccall unsafe "hs_bindgen_609c0f69bf6da356" hs_bindgen_609c0f69bf6da356_base ::
    IO (Ptr Void)
-- __unique:__ @test_manualarrays_Example_get_sudoku@
hs_bindgen_609c0f69bf6da356 :: IO (Ptr (ConstantArray 3
                                                      (ConstantArray 3 CInt)))
-- __unique:__ @test_manualarrays_Example_get_sudoku@
hs_bindgen_609c0f69bf6da356 = fromFFIType hs_bindgen_609c0f69bf6da356_base
{-# NOINLINE sudoku #-}
{-| Multi-dimensional array of known size.

__C declaration:__ @sudoku@

__defined at:__ @manual\/arrays.h 22:12@

__exported by:__ @manual\/arrays.h@
-}
sudoku :: Ptr (ConstantArray 3 (ConstantArray 3 CInt))
{-| Multi-dimensional array of known size.

__C declaration:__ @sudoku@

__defined at:__ @manual\/arrays.h 22:12@

__exported by:__ @manual\/arrays.h@
-}
sudoku = unsafePerformIO hs_bindgen_609c0f69bf6da356
-- __unique:__ @test_manualarrays_Example_get_triplets@
foreign import ccall unsafe "hs_bindgen_52a30badbe2c9671" hs_bindgen_52a30badbe2c9671_base ::
    IO (Ptr Void)
-- __unique:__ @test_manualarrays_Example_get_triplets@
hs_bindgen_52a30badbe2c9671 :: IO (Ptr (IncompleteArray (ConstantArray 3
                                                                       CInt)))
-- __unique:__ @test_manualarrays_Example_get_triplets@
hs_bindgen_52a30badbe2c9671 = fromFFIType hs_bindgen_52a30badbe2c9671_base
{-# NOINLINE triplets #-}
{-| Multi-dimensional array of unknown size. Only the first dimension is allowed to be unknown.

__C declaration:__ @triplets@

__defined at:__ @manual\/arrays.h 26:12@

__exported by:__ @manual\/arrays.h@
-}
triplets :: Ptr (IncompleteArray (ConstantArray 3 CInt))
{-| Multi-dimensional array of unknown size. Only the first dimension is allowed to be unknown.

__C declaration:__ @triplets@

__defined at:__ @manual\/arrays.h 26:12@

__exported by:__ @manual\/arrays.h@
-}
triplets = unsafePerformIO hs_bindgen_52a30badbe2c9671
-- __unique:__ @test_manualarrays_Example_get_global_triplet_ptrs@
foreign import ccall unsafe "hs_bindgen_23817a1a9bc92057" hs_bindgen_23817a1a9bc92057_base ::
    IO (Ptr Void)
-- __unique:__ @test_manualarrays_Example_get_global_triplet_ptrs@
hs_bindgen_23817a1a9bc92057 :: IO (Ptr Triplet_ptrs)
-- __unique:__ @test_manualarrays_Example_get_global_triplet_ptrs@
hs_bindgen_23817a1a9bc92057 = fromFFIType hs_bindgen_23817a1a9bc92057_base
{-# NOINLINE global_triplet_ptrs #-}
{-| A global of triplet_ptrs

__C declaration:__ @global_triplet_ptrs@

__defined at:__ @manual\/arrays.h 47:21@

__exported by:__ @manual\/arrays.h@
-}
global_triplet_ptrs :: Ptr Triplet_ptrs
{-| A global of triplet_ptrs

__C declaration:__ @global_triplet_ptrs@

__defined at:__ @manual\/arrays.h 47:21@

__exported by:__ @manual\/arrays.h@
-}
global_triplet_ptrs = unsafePerformIO hs_bindgen_23817a1a9bc92057
