packages feed

geomancy-0.4.0.0: src/Geomancy/Swizzle/UVec/Down.hs

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

module Geomancy.Swizzle.UVec.Down () where

import GHC.Records (HasField(..))

import Geomancy.UVec2 (UVec2, uvec2)
import Geomancy.UVec3 (UVec3, uvec3, withUVec3)
import Geomancy.UVec4 (UVec4, withUVec4)

instance HasField "xx" UVec3 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec3 v \x _ _ -> uvec2 x x

instance HasField "xy" UVec3 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec3 v \x y _ -> uvec2 x y

instance HasField "xz" UVec3 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec3 v \x _ z -> uvec2 x z

instance HasField "yx" UVec3 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec3 v \x y _ -> uvec2 y x

instance HasField "yy" UVec3 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec3 v \_ y _ -> uvec2 y y

instance HasField "yz" UVec3 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec3 v \_ y z -> uvec2 y z

instance HasField "zx" UVec3 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec3 v \x _ z -> uvec2 z x

instance HasField "zy" UVec3 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec3 v \_ y z -> uvec2 z y

instance HasField "zz" UVec3 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec3 v \_ _ z -> uvec2 z z

instance HasField "xx" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ _ -> uvec2 x x

instance HasField "xy" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ _ -> uvec2 x y

instance HasField "xz" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z _ -> uvec2 x z

instance HasField "xw" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ w -> uvec2 x w

instance HasField "yx" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ _ -> uvec2 y x

instance HasField "yy" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ _ -> uvec2 y y

instance HasField "yz" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z _ -> uvec2 y z

instance HasField "yw" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ w -> uvec2 y w

instance HasField "zx" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z _ -> uvec2 z x

instance HasField "zy" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z _ -> uvec2 z y

instance HasField "zz" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z _ -> uvec2 z z

instance HasField "zw" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z w -> uvec2 z w

instance HasField "wx" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ w -> uvec2 w x

instance HasField "wy" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ w -> uvec2 w y

instance HasField "wz" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z w -> uvec2 w z

instance HasField "ww" UVec4 UVec2 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ _ w -> uvec2 w w

instance HasField "xxx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ _ -> uvec3 x x x

instance HasField "xxy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ _ -> uvec3 x x y

instance HasField "xxz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z _ -> uvec3 x x z

instance HasField "xxw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ w -> uvec3 x x w

instance HasField "xyx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ _ -> uvec3 x y x

instance HasField "xyy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ _ -> uvec3 x y y

instance HasField "xyz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y z _ -> uvec3 x y z

instance HasField "xyw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ w -> uvec3 x y w

instance HasField "xzx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z _ -> uvec3 x z x

instance HasField "xzy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y z _ -> uvec3 x z y

instance HasField "xzz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z _ -> uvec3 x z z

instance HasField "xzw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z w -> uvec3 x z w

instance HasField "xwx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ w -> uvec3 x w x

instance HasField "xwy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ w -> uvec3 x w y

instance HasField "xwz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z w -> uvec3 x w z

instance HasField "xww" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ w -> uvec3 x w w

instance HasField "yxx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ _ -> uvec3 y x x

instance HasField "yxy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ _ -> uvec3 y x y

instance HasField "yxz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y z _ -> uvec3 y x z

instance HasField "yxw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ w -> uvec3 y x w

instance HasField "yyx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ _ -> uvec3 y y x

instance HasField "yyy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ _ -> uvec3 y y y

instance HasField "yyz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z _ -> uvec3 y y z

instance HasField "yyw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ w -> uvec3 y y w

instance HasField "yzx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y z _ -> uvec3 y z x

instance HasField "yzy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z _ -> uvec3 y z y

instance HasField "yzz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z _ -> uvec3 y z z

instance HasField "yzw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z w -> uvec3 y z w

instance HasField "ywx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ w -> uvec3 y w x

instance HasField "ywy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ w -> uvec3 y w y

instance HasField "ywz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z w -> uvec3 y w z

instance HasField "yww" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ w -> uvec3 y w w

instance HasField "zxx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z _ -> uvec3 z x x

instance HasField "zxy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y z _ -> uvec3 z x y

instance HasField "zxz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z _ -> uvec3 z x z

instance HasField "zxw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z w -> uvec3 z x w

instance HasField "zyx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y z _ -> uvec3 z y x

instance HasField "zyy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z _ -> uvec3 z y y

instance HasField "zyz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z _ -> uvec3 z y z

instance HasField "zyw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z w -> uvec3 z y w

instance HasField "zzx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z _ -> uvec3 z z x

instance HasField "zzy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z _ -> uvec3 z z y

instance HasField "zzz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z _ -> uvec3 z z z

instance HasField "zzw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z w -> uvec3 z z w

instance HasField "zwx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z w -> uvec3 z w x

instance HasField "zwy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z w -> uvec3 z w y

instance HasField "zwz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z w -> uvec3 z w z

instance HasField "zww" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z w -> uvec3 z w w

instance HasField "wxx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ w -> uvec3 w x x

instance HasField "wxy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ w -> uvec3 w x y

instance HasField "wxz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z w -> uvec3 w x z

instance HasField "wxw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ w -> uvec3 w x w

instance HasField "wyx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x y _ w -> uvec3 w y x

instance HasField "wyy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ w -> uvec3 w y y

instance HasField "wyz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z w -> uvec3 w y z

instance HasField "wyw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ w -> uvec3 w y w

instance HasField "wzx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ z w -> uvec3 w z x

instance HasField "wzy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y z w -> uvec3 w z y

instance HasField "wzz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z w -> uvec3 w z z

instance HasField "wzw" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z w -> uvec3 w z w

instance HasField "wwx" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \x _ _ w -> uvec3 w w x

instance HasField "wwy" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ y _ w -> uvec3 w w y

instance HasField "wwz" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ z w -> uvec3 w w z

instance HasField "www" UVec4 UVec3 where
  {-# INLINE getField #-}
  getField v = withUVec4 v \_ _ _ w -> uvec3 w w w