+
+class MTuple3dClass a where
+ asMTuple :: a -> <Proc> MTuple3d
+ asMTuple = Java.unsafeCoerce
+
+ getXM :: a -> <Proc> Double
+ getXM = getXM' . asMTuple
+
+ getYM :: a -> <Proc> Double
+ getYM = getYM' . asMTuple
+
+ getZM :: a -> <Proc> Double
+ getZM = getZM' . asMTuple
+
+ setX :: a -> Double -> <Proc> ()
+ setX x v = setX' (asMTuple x) v
+
+ setY :: a -> Double -> <Proc> ()
+ setY x v = setY' (asMTuple x) v
+
+ setZ :: a -> Double -> <Proc> ()
+ setZ x v = setZ' (asMTuple x) v
+
+ addM :: Tuple3dClass b => a -> b -> <Proc> ()
+ addM x y = addM' (asMTuple x) (asTuple y)
+
+ addM2 :: Tuple3dClass b => a -> b -> b -> <Proc> ()
+ addM2 x y z = addM2' (asMTuple x) (asTuple y) (asTuple z)
+
+ subM :: Tuple3dClass b => a -> b -> <Proc> ()
+ subM x y = subM' (asMTuple x) (asTuple y)
+
+ subM2 :: Tuple3dClass b => a -> b -> Tuple3d -> <Proc> ()
+ subM2 x y z = subM2' (asMTuple x) (asTuple y) (asTuple z)
+
+ negateM :: a -> <Proc> ()
+ negateM x = negateM' (asMTuple x)
+
+ negateM2 :: Tuple3dClass b => a -> b -> <Proc> ()
+ negateM2 x y = negateM2' (asMTuple x) (asTuple y)
+
+ scaleM :: a -> Double -> <Proc> ()
+ scaleM x s = scaleM' (asMTuple x) s
+
+ scaleM2 :: Tuple3dClass b => a -> Double -> b -> <Proc> ()
+ scaleM2 x s y = scaleM2' (asMTuple x) s (asTuple y)