packages feed

geomancy-0.4.0.0: src/Geomancy/Swizzle/IVec/Up.hs

{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Geomancy.Swizzle.IVec.Up () where

import GHC.Records (HasField(..))

import Geomancy.IVec2 (IVec2, withIVec2)
import Geomancy.IVec3 (IVec3, ivec3, withIVec3)
import Geomancy.IVec4 (IVec4, ivec4)

instance HasField "xxx" IVec2 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x _ -> ivec3 x x x

instance HasField "xxy" IVec2 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec3 x x y

instance HasField "xyx" IVec2 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec3 x y x

instance HasField "xyy" IVec2 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec3 x y y

instance HasField "yxx" IVec2 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec3 y x x

instance HasField "yxy" IVec2 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec3 y x y

instance HasField "yyx" IVec2 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec3 y y x

instance HasField "yyy" IVec2 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \_ y -> ivec3 y y y

instance HasField "xxxx" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x _ -> ivec4 x x x x

instance HasField "xxxy" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 x x x y

instance HasField "xxyx" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 x x y x

instance HasField "xxyy" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 x x y y

instance HasField "xyxx" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 x y x x

instance HasField "xyxy" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 x y x y

instance HasField "xyyx" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 x y y x

instance HasField "xyyy" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 x y y y

instance HasField "yxxx" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 y x x x

instance HasField "yxxy" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 y x x y

instance HasField "yxyx" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 y x y x

instance HasField "yxyy" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 y x y y

instance HasField "yyxx" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 y y x x

instance HasField "yyxy" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 y y x y

instance HasField "yyyx" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \x y -> ivec4 y y y x

instance HasField "yyyy" IVec2 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec2 v \_ y -> ivec4 y y y y

instance HasField "xxxx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ _ -> ivec4 x x x x

instance HasField "xxxy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 x x x y

instance HasField "xxxz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 x x x z

instance HasField "xxyx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 x x y x

instance HasField "xxyy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 x x y y

instance HasField "xxyz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x x y z

instance HasField "xxzx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 x x z x

instance HasField "xxzy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x x z y

instance HasField "xxzz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 x x z z

instance HasField "xyxx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 x y x x

instance HasField "xyxy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 x y x y

instance HasField "xyxz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x y x z

instance HasField "xyyx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 x y y x

instance HasField "xyyy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 x y y y

instance HasField "xyyz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x y y z

instance HasField "xyzx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x y z x

instance HasField "xyzy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x y z y

instance HasField "xyzz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x y z z

instance HasField "xzxx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 x z x x

instance HasField "xzxy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x z x y

instance HasField "xzxz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 x z x z

instance HasField "xzyx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x z y x

instance HasField "xzyy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x z y y

instance HasField "xzyz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x z y z

instance HasField "xzzx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 x z z x

instance HasField "xzzy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 x z z y

instance HasField "xzzz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 x z z z

instance HasField "yxxx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 y x x x

instance HasField "yxxy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 y x x y

instance HasField "yxxz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y x x z

instance HasField "yxyx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 y x y x

instance HasField "yxyy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 y x y y

instance HasField "yxyz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y x y z

instance HasField "yxzx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y x z x

instance HasField "yxzy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y x z y

instance HasField "yxzz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y x z z

instance HasField "yyxx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 y y x x

instance HasField "yyxy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 y y x y

instance HasField "yyxz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y y x z

instance HasField "yyyx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec4 y y y x

instance HasField "yyyy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y _ -> ivec4 y y y y

instance HasField "yyyz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 y y y z

instance HasField "yyzx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y y z x

instance HasField "yyzy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 y y z y

instance HasField "yyzz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 y y z z

instance HasField "yzxx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y z x x

instance HasField "yzxy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y z x y

instance HasField "yzxz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y z x z

instance HasField "yzyx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y z y x

instance HasField "yzyy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 y z y y

instance HasField "yzyz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 y z y z

instance HasField "yzzx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 y z z x

instance HasField "yzzy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 y z z y

instance HasField "yzzz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 y z z z

instance HasField "zxxx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 z x x x

instance HasField "zxxy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z x x y

instance HasField "zxxz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 z x x z

instance HasField "zxyx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z x y x

instance HasField "zxyy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z x y y

instance HasField "zxyz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z x y z

instance HasField "zxzx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 z x z x

instance HasField "zxzy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z x z y

instance HasField "zxzz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 z x z z

instance HasField "zyxx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z y x x

instance HasField "zyxy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z y x y

instance HasField "zyxz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z y x z

instance HasField "zyyx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z y y x

instance HasField "zyyy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 z y y y

instance HasField "zyyz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 z y y z

instance HasField "zyzx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z y z x

instance HasField "zyzy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 z y z y

instance HasField "zyzz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 z y z z

instance HasField "zzxx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 z z x x

instance HasField "zzxy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z z x y

instance HasField "zzxz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 z z x z

instance HasField "zzyx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y z -> ivec4 z z y x

instance HasField "zzyy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 z z y y

instance HasField "zzyz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 z z y z

instance HasField "zzzx" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec4 z z z x

instance HasField "zzzy" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec4 z z z y

instance HasField "zzzz" IVec3 IVec4 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ _ z -> ivec4 z z z z