-- generated by using spec/tuples.yaml

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleInstances #-}

module Torch.Internal.Managed.Type.Tuple where


import Foreign.C.String
import Foreign.C.Types
import Foreign
import Torch.Internal.Type
import Torch.Internal.Class
import Torch.Internal.Cast
import Torch.Internal.Objects
import qualified Torch.Internal.Unmanaged.Type.Tuple as Unmanaged



instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor))) = ForeignPtr Tensor
  get0 :: ForeignPtr (StdTuple '(Tensor, Tensor))
-> IO (A (ForeignPtr (StdTuple '(Tensor, Tensor))))
get0 ForeignPtr (StdTuple '(Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor)) -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor))
-> IO (A (Ptr (StdTuple '(Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, Tensor))
-> IO (B (ForeignPtr (StdTuple '(Tensor, Tensor))))
get1 ForeignPtr (StdTuple '(Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor)) -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor))
-> IO (B (Ptr (StdTuple '(Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get0 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (A (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
get0 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (A (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (B (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
get1 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (B (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get2 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (C (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
get2 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (C (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple4 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type D (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get3 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (D (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
get3 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (D (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple5 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type E (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get4 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (E (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
get4 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (E (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple5 m => m -> IO (E m)
get4 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,TensorList))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,TensorList))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,TensorList))) = ForeignPtr Tensor
  get0 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO
     (A (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))))
get0 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (A (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,TensorList)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO
     (B (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))))
get1 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (B (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,TensorList)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,TensorList))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,TensorList))) = ForeignPtr Tensor
  get2 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO
     (C (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))))
get2 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (C (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,TensorList)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
v

instance CppTuple4 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,TensorList))) where
  type D (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,TensorList))) = ForeignPtr TensorList
  get3 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO
     (D (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))))
get3 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
 -> IO (Ptr TensorList))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (Ptr TensorList)
Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
-> IO (D (Ptr (StdTuple '(Tensor, Tensor, Tensor, TensorList))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,TensorList)) -> IO (Ptr TensorList)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, TensorList))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64))) = ForeignPtr Tensor
  get0 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO
     (A (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
get0 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (A (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO
     (B (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
get1 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (B (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64))) = ForeignPtr Tensor
  get2 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO
     (C (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
get2 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (C (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v

instance CppTuple4 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64))) where
  type D (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64))) = ForeignPtr Tensor
  get3 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO
     (D (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
get3 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (D (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v

instance CppTuple5 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64))) where
  type E (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64))) = Int64
  get4 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO
     (E (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
get4 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
 -> IO Int64)
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO Int64
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64)) -> IO Int64
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
-> IO (E (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))))
forall m. CppTuple5 m => m -> IO (E m)
get4 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64)) -> IO (Int64)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Int64))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get0 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
-> IO (A (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))))
get0 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor)) -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor))
-> IO (A (Ptr (StdTuple '(Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
-> IO (B (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))))
get1 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor)) -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor))
-> IO (B (Ptr (StdTuple '(Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get2 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
-> IO (C (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))))
get2 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor)) -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor))
-> IO (C (Ptr (StdTuple '(Tensor, Tensor, Tensor))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get0 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (A (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))))
get0 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (A (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (B (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))))
get1 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (B (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get2 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (C (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))))
get2 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (C (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple4 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor))) where
  type D (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get3 :: ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (D (ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))))
get3 ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
-> IO (D (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,CDouble,Int64))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,CDouble,Int64))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,CDouble,Int64))) = ForeignPtr Tensor
  get0 :: ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (A (ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))))
get0 ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
v = (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (A (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,CDouble,Int64)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (B (ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))))
get1 ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
v = (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (B (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,CDouble,Int64)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,CDouble,Int64))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,CDouble,Int64))) = CDouble
  get2 :: ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (C (ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))))
get2 ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
v = (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64)) -> IO CDouble)
-> ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO CDouble
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64)) -> IO CDouble
Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (C (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,CDouble,Int64)) -> IO (CDouble)) ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
v

instance CppTuple4 (ForeignPtr (StdTuple '(Tensor,Tensor,CDouble,Int64))) where
  type D (ForeignPtr (StdTuple '(Tensor,Tensor,CDouble,Int64))) = Int64
  get3 :: ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (D (ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))))
get3 ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
v = (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64)) -> IO Int64)
-> ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO Int64
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64)) -> IO Int64
Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))
-> IO (D (Ptr (StdTuple '(Tensor, Tensor, CDouble, Int64))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(Tensor,Tensor,CDouble,Int64)) -> IO (Int64)) ForeignPtr (StdTuple '(Tensor, Tensor, CDouble, Int64))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get0 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (A (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get0 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (A (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v
  get1 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (B (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get1 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (B (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get2 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (C (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get2 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (C (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple4 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type D (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get3 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (D (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get3 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (D (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple5 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type E (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get4 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (E (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get4 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (E (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple5 m => m -> IO (E m)
get4 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple6 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type F (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get5 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (F (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get5 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (F (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple6 m => m -> IO (F m)
get5 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple7 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type G (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get6 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (G (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get6 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (G (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple7 m => m -> IO (G m)
get6 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple2 (ForeignPtr (StdTuple '(CDouble,Int64))) where
  type A (ForeignPtr (StdTuple '(CDouble,Int64))) = CDouble
  type B (ForeignPtr (StdTuple '(CDouble,Int64))) = Int64
  get0 :: ForeignPtr (StdTuple '(CDouble, Int64))
-> IO (A (ForeignPtr (StdTuple '(CDouble, Int64))))
get0 ForeignPtr (StdTuple '(CDouble, Int64))
v = (Ptr (StdTuple '(CDouble, Int64)) -> IO CDouble)
-> ForeignPtr (StdTuple '(CDouble, Int64)) -> IO CDouble
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(CDouble, Int64)) -> IO CDouble
Ptr (StdTuple '(CDouble, Int64))
-> IO (A (Ptr (StdTuple '(CDouble, Int64))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(CDouble,Int64)) -> IO (CDouble)) ForeignPtr (StdTuple '(CDouble, Int64))
v
  get1 :: ForeignPtr (StdTuple '(CDouble, Int64))
-> IO (B (ForeignPtr (StdTuple '(CDouble, Int64))))
get1 ForeignPtr (StdTuple '(CDouble, Int64))
v = (Ptr (StdTuple '(CDouble, Int64)) -> IO Int64)
-> ForeignPtr (StdTuple '(CDouble, Int64)) -> IO Int64
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(CDouble, Int64)) -> IO Int64
Ptr (StdTuple '(CDouble, Int64))
-> IO (B (Ptr (StdTuple '(CDouble, Int64))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(CDouble,Int64)) -> IO (Int64)) ForeignPtr (StdTuple '(CDouble, Int64))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get0 :: ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (A (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get0 ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (A (Ptr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v
  get1 :: ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (B (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get1 ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (B (Ptr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get2 :: ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (C (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get2 ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (C (Ptr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple4 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type D (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get3 :: ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (D (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get3 ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (D (Ptr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple5 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type E (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get4 :: ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (E (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get4 ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (E (Ptr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple5 m => m -> IO (E m)
get4 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple6 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) where
  type F (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor))) = ForeignPtr Tensor
  get5 :: ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (F (ForeignPtr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
get5 ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
-> IO
     (F (Ptr
           (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))))
forall m. CppTuple6 m => m -> IO (F m)
get5 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Tensor,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple '(Tensor, Tensor, Tensor, Tensor, Tensor, Tensor))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,TensorList,TensorList))) where
  type A (ForeignPtr (StdTuple '(Tensor,TensorList,TensorList))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,TensorList,TensorList))) = ForeignPtr TensorList
  get0 :: ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (A (ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))))
get0 ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
v = (Ptr (StdTuple '(Tensor, TensorList, TensorList))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, TensorList, TensorList)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (A (Ptr (StdTuple '(Tensor, TensorList, TensorList))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,TensorList,TensorList)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (B (ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))))
get1 ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
v = (Ptr (StdTuple '(Tensor, TensorList, TensorList))
 -> IO (Ptr TensorList))
-> ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (Ptr TensorList)
Ptr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (B (Ptr (StdTuple '(Tensor, TensorList, TensorList))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,TensorList,TensorList)) -> IO (Ptr TensorList)) ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,TensorList,TensorList))) where
  type C (ForeignPtr (StdTuple '(Tensor,TensorList,TensorList))) = ForeignPtr TensorList
  get2 :: ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (C (ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))))
get2 ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
v = (Ptr (StdTuple '(Tensor, TensorList, TensorList))
 -> IO (Ptr TensorList))
-> ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (Ptr TensorList)
Ptr (StdTuple '(Tensor, TensorList, TensorList))
-> IO (C (Ptr (StdTuple '(Tensor, TensorList, TensorList))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,TensorList,TensorList)) -> IO (Ptr TensorList)) ForeignPtr (StdTuple '(Tensor, TensorList, TensorList))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,TensorList))) where
  type A (ForeignPtr (StdTuple '(Tensor,TensorList))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,TensorList))) = ForeignPtr TensorList
  get0 :: ForeignPtr (StdTuple '(Tensor, TensorList))
-> IO (A (ForeignPtr (StdTuple '(Tensor, TensorList))))
get0 ForeignPtr (StdTuple '(Tensor, TensorList))
v = (Ptr (StdTuple '(Tensor, TensorList)) -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, TensorList))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, TensorList)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, TensorList))
-> IO (A (Ptr (StdTuple '(Tensor, TensorList))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,TensorList)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, TensorList))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, TensorList))
-> IO (B (ForeignPtr (StdTuple '(Tensor, TensorList))))
get1 ForeignPtr (StdTuple '(Tensor, TensorList))
v = (Ptr (StdTuple '(Tensor, TensorList)) -> IO (Ptr TensorList))
-> ForeignPtr (StdTuple '(Tensor, TensorList))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, TensorList)) -> IO (Ptr TensorList)
Ptr (StdTuple '(Tensor, TensorList))
-> IO (B (Ptr (StdTuple '(Tensor, TensorList))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,TensorList)) -> IO (Ptr TensorList)) ForeignPtr (StdTuple '(Tensor, TensorList))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) = ForeignPtr Tensor
  get0 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (A (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
get0 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
        Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
          Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (A (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v
  get1 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (B (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
get1 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
        Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
          Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (B (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) = ForeignPtr Tensor
  get2 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (C (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
get2 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
        Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
          Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (C (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v

instance CppTuple4 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) where
  type D (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) = ForeignPtr Tensor
  get3 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (D (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
get3 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
        Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
          Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (D (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v

instance CppTuple5 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) where
  type E (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) = Int64
  get4 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (E (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
get4 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
        Tensor))
 -> IO Int64)
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
          Tensor))
-> IO Int64
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO Int64
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (E (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
forall m. CppTuple5 m => m -> IO (E m)
get4 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor)) -> IO (Int64)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v

instance CppTuple6 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) where
  type F (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) = Int64
  get5 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (F (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
get5 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
        Tensor))
 -> IO Int64)
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
          Tensor))
-> IO Int64
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO Int64
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (F (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
forall m. CppTuple6 m => m -> IO (F m)
get5 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor)) -> IO (Int64)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v

instance CppTuple7 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) where
  type G (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) = Int64
  get6 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (G (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
get6 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
        Tensor))
 -> IO Int64)
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
          Tensor))
-> IO Int64
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO Int64
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (G (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
forall m. CppTuple7 m => m -> IO (G m)
get6 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor)) -> IO (Int64)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v

instance CppTuple8 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) where
  type H (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) = Int64
  get7 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (H (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
get7 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
        Tensor))
 -> IO Int64)
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
          Tensor))
-> IO Int64
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO Int64
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (H (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
forall m. CppTuple8 m => m -> IO (H m)
get7 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor)) -> IO (Int64)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v

instance CppTuple9 (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) where
  type I (ForeignPtr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor))) = ForeignPtr Tensor
  get8 :: ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (I (ForeignPtr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
get8 ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v = (Ptr
   (StdTuple
      '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
        Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr
     (StdTuple
        '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
          Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO (Ptr Tensor)
Ptr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
-> IO
     (I (Ptr
           (StdTuple
              '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
                Tensor))))
forall m. CppTuple9 m => m -> IO (I m)
get8 :: Ptr (StdTuple '(Tensor,Tensor,Tensor,Tensor,Int64,Int64,Int64,Int64,Tensor)) -> IO (Ptr Tensor)) ForeignPtr
  (StdTuple
     '(Tensor, Tensor, Tensor, Tensor, Int64, Int64, Int64, Int64,
       Tensor))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor))) where
  type A (ForeignPtr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor))) = ForeignPtr Tensor
  get0 :: ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO
     (A (ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
get0 ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (A (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO
     (B (ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
get1 ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (B (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v

instance CppTuple3 (ForeignPtr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor))) where
  type C (ForeignPtr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor))) = Int64
  get2 :: ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO
     (C (ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
get2 ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
 -> IO Int64)
-> ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO Int64
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor)) -> IO Int64
Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (C (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor)) -> IO (Int64)) ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v

instance CppTuple4 (ForeignPtr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor))) where
  type D (ForeignPtr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor))) = Int64
  get3 :: ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO
     (D (ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
get3 ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
 -> IO Int64)
-> ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO Int64
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor)) -> IO Int64
Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (D (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor)) -> IO (Int64)) ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v

instance CppTuple5 (ForeignPtr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor))) where
  type E (ForeignPtr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor))) = ForeignPtr Tensor
  get4 :: ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO
     (E (ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
get4 ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v = (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
 -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
-> IO (E (Ptr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))))
forall m. CppTuple5 m => m -> IO (E m)
get4 :: Ptr (StdTuple '(Tensor,Tensor,Int64,Int64,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Tensor, Int64, Int64, Tensor))
v

instance CppTuple2 (ForeignPtr (StdTuple '(TensorList,Tensor))) where
  type A (ForeignPtr (StdTuple '(TensorList,Tensor))) = ForeignPtr TensorList
  type B (ForeignPtr (StdTuple '(TensorList,Tensor))) = ForeignPtr Tensor
  get0 :: ForeignPtr (StdTuple '(TensorList, Tensor))
-> IO (A (ForeignPtr (StdTuple '(TensorList, Tensor))))
get0 ForeignPtr (StdTuple '(TensorList, Tensor))
v = (Ptr (StdTuple '(TensorList, Tensor)) -> IO (Ptr TensorList))
-> ForeignPtr (StdTuple '(TensorList, Tensor))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(TensorList, Tensor)) -> IO (Ptr TensorList)
Ptr (StdTuple '(TensorList, Tensor))
-> IO (A (Ptr (StdTuple '(TensorList, Tensor))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(TensorList,Tensor)) -> IO (Ptr TensorList)) ForeignPtr (StdTuple '(TensorList, Tensor))
v
  get1 :: ForeignPtr (StdTuple '(TensorList, Tensor))
-> IO (B (ForeignPtr (StdTuple '(TensorList, Tensor))))
get1 ForeignPtr (StdTuple '(TensorList, Tensor))
v = (Ptr (StdTuple '(TensorList, Tensor)) -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(TensorList, Tensor))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr (StdTuple '(TensorList, Tensor)) -> IO (Ptr Tensor)
Ptr (StdTuple '(TensorList, Tensor))
-> IO (B (Ptr (StdTuple '(TensorList, Tensor))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(TensorList,Tensor)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(TensorList, Tensor))
v

instance CppTuple2 (ForeignPtr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList))) where
  type A (ForeignPtr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList))) = ForeignPtr TensorList
  type B (ForeignPtr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList))) = ForeignPtr TensorList
  get0 :: ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (A (ForeignPtr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
get0 ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v = (Ptr
   (StdTuple
      '(TensorList, TensorList, TensorList, TensorList, TensorList))
 -> IO (Ptr TensorList))
-> ForeignPtr
     (StdTuple
        '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (Ptr TensorList)
Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (A (Ptr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList)) -> IO (Ptr TensorList)) ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v
  get1 :: ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (B (ForeignPtr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
get1 ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v = (Ptr
   (StdTuple
      '(TensorList, TensorList, TensorList, TensorList, TensorList))
 -> IO (Ptr TensorList))
-> ForeignPtr
     (StdTuple
        '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (Ptr TensorList)
Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (B (Ptr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList)) -> IO (Ptr TensorList)) ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v

instance CppTuple3 (ForeignPtr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList))) where
  type C (ForeignPtr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList))) = ForeignPtr TensorList
  get2 :: ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (C (ForeignPtr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
get2 ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v = (Ptr
   (StdTuple
      '(TensorList, TensorList, TensorList, TensorList, TensorList))
 -> IO (Ptr TensorList))
-> ForeignPtr
     (StdTuple
        '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (Ptr TensorList)
Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (C (Ptr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
forall m. CppTuple3 m => m -> IO (C m)
get2 :: Ptr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList)) -> IO (Ptr TensorList)) ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v

instance CppTuple4 (ForeignPtr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList))) where
  type D (ForeignPtr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList))) = ForeignPtr TensorList
  get3 :: ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (D (ForeignPtr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
get3 ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v = (Ptr
   (StdTuple
      '(TensorList, TensorList, TensorList, TensorList, TensorList))
 -> IO (Ptr TensorList))
-> ForeignPtr
     (StdTuple
        '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (Ptr TensorList)
Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (D (Ptr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
forall m. CppTuple4 m => m -> IO (D m)
get3 :: Ptr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList)) -> IO (Ptr TensorList)) ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v

instance CppTuple5 (ForeignPtr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList))) where
  type E (ForeignPtr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList))) = ForeignPtr TensorList
  get4 :: ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (E (ForeignPtr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
get4 ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v = (Ptr
   (StdTuple
      '(TensorList, TensorList, TensorList, TensorList, TensorList))
 -> IO (Ptr TensorList))
-> ForeignPtr
     (StdTuple
        '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (ForeignPtr TensorList)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
cast1 (Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO (Ptr TensorList)
Ptr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
-> IO
     (E (Ptr
           (StdTuple
              '(TensorList, TensorList, TensorList, TensorList, TensorList))))
forall m. CppTuple5 m => m -> IO (E m)
get4 :: Ptr (StdTuple '(TensorList,TensorList,TensorList,TensorList,TensorList)) -> IO (Ptr TensorList)) ForeignPtr
  (StdTuple
     '(TensorList, TensorList, TensorList, TensorList, TensorList))
v

instance CppTuple2 (ForeignPtr (StdTuple '(Tensor,Generator))) where
  type A (ForeignPtr (StdTuple '(Tensor,Generator))) = ForeignPtr Tensor
  type B (ForeignPtr (StdTuple '(Tensor,Generator))) = ForeignPtr Generator
  get0 :: ForeignPtr (StdTuple '(Tensor, Generator))
-> IO (A (ForeignPtr (StdTuple '(Tensor, Generator))))
get0 ForeignPtr (StdTuple '(Tensor, Generator))
v = (Ptr (StdTuple '(Tensor, Generator)) -> IO (Ptr Tensor))
-> ForeignPtr (StdTuple '(Tensor, Generator))
-> IO (ForeignPtr Tensor)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
_cast1 (Ptr (StdTuple '(Tensor, Generator)) -> IO (Ptr Tensor)
Ptr (StdTuple '(Tensor, Generator))
-> IO (A (Ptr (StdTuple '(Tensor, Generator))))
forall m. CppTuple2 m => m -> IO (A m)
get0 :: Ptr (StdTuple '(Tensor,Generator)) -> IO (Ptr Tensor)) ForeignPtr (StdTuple '(Tensor, Generator))
v
  get1 :: ForeignPtr (StdTuple '(Tensor, Generator))
-> IO (B (ForeignPtr (StdTuple '(Tensor, Generator))))
get1 ForeignPtr (StdTuple '(Tensor, Generator))
v = (Ptr (StdTuple '(Tensor, Generator)) -> IO (Ptr Generator))
-> ForeignPtr (StdTuple '(Tensor, Generator))
-> IO (ForeignPtr Generator)
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
_cast1 (Ptr (StdTuple '(Tensor, Generator)) -> IO (Ptr Generator)
Ptr (StdTuple '(Tensor, Generator))
-> IO (B (Ptr (StdTuple '(Tensor, Generator))))
forall m. CppTuple2 m => m -> IO (B m)
get1 :: Ptr (StdTuple '(Tensor,Generator)) -> IO (Ptr Generator)) ForeignPtr (StdTuple '(Tensor, Generator))
v
  makeTuple2 :: (A (ForeignPtr (StdTuple '(Tensor, Generator))),
 B (ForeignPtr (StdTuple '(Tensor, Generator))))
-> IO (ForeignPtr (StdTuple '(Tensor, Generator)))
makeTuple2 (A (ForeignPtr (StdTuple '(Tensor, Generator)))
a,B (ForeignPtr (StdTuple '(Tensor, Generator)))
b) =
    ForeignPtr Tensor
-> (Ptr Tensor -> IO (ForeignPtr (StdTuple '(Tensor, Generator))))
-> IO (ForeignPtr (StdTuple '(Tensor, Generator)))
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Tensor
A (ForeignPtr (StdTuple '(Tensor, Generator)))
a ((Ptr Tensor -> IO (ForeignPtr (StdTuple '(Tensor, Generator))))
 -> IO (ForeignPtr (StdTuple '(Tensor, Generator))))
-> (Ptr Tensor -> IO (ForeignPtr (StdTuple '(Tensor, Generator))))
-> IO (ForeignPtr (StdTuple '(Tensor, Generator)))
forall a b. (a -> b) -> a -> b
$ \Ptr Tensor
a' -> do
    ForeignPtr Generator
-> (Ptr Generator
    -> IO (ForeignPtr (StdTuple '(Tensor, Generator))))
-> IO (ForeignPtr (StdTuple '(Tensor, Generator)))
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Generator
B (ForeignPtr (StdTuple '(Tensor, Generator)))
b ((Ptr Generator -> IO (ForeignPtr (StdTuple '(Tensor, Generator))))
 -> IO (ForeignPtr (StdTuple '(Tensor, Generator))))
-> (Ptr Generator
    -> IO (ForeignPtr (StdTuple '(Tensor, Generator))))
-> IO (ForeignPtr (StdTuple '(Tensor, Generator)))
forall a b. (a -> b) -> a -> b
$ \Ptr Generator
b' -> do
      Ptr (StdTuple '(Tensor, Generator))
-> IO (ForeignPtr (StdTuple '(Tensor, Generator)))
forall a. CppObject a => Ptr a -> IO (ForeignPtr a)
fromPtr (Ptr (StdTuple '(Tensor, Generator))
 -> IO (ForeignPtr (StdTuple '(Tensor, Generator))))
-> IO (Ptr (StdTuple '(Tensor, Generator)))
-> IO (ForeignPtr (StdTuple '(Tensor, Generator)))
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (A (Ptr (StdTuple '(Tensor, Generator))),
 B (Ptr (StdTuple '(Tensor, Generator))))
-> IO (Ptr (StdTuple '(Tensor, Generator)))
forall m. CppTuple2 m => (A m, B m) -> IO m
makeTuple2 (Ptr Tensor
A (Ptr (StdTuple '(Tensor, Generator)))
a',Ptr Generator
B (Ptr (StdTuple '(Tensor, Generator)))
b')