packages feed

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

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

module Geomancy.Swizzle.IVec.Down () where

import GHC.Records (HasField(..))

import Geomancy.IVec2 (IVec2, ivec2)
import Geomancy.IVec3 (IVec3, ivec3, withIVec3)
import Geomancy.IVec4 (IVec4, withIVec4)

instance HasField "xx" IVec3 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ _ -> ivec2 x x

instance HasField "xy" IVec3 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec2 x y

instance HasField "xz" IVec3 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec2 x z

instance HasField "yx" IVec3 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x y _ -> ivec2 y x

instance HasField "yy" IVec3 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y _ -> ivec2 y y

instance HasField "yz" IVec3 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec2 y z

instance HasField "zx" IVec3 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \x _ z -> ivec2 z x

instance HasField "zy" IVec3 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ y z -> ivec2 z y

instance HasField "zz" IVec3 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec3 v \_ _ z -> ivec2 z z

instance HasField "xx" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ _ _ -> ivec2 x x

instance HasField "xy" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ _ -> ivec2 x y

instance HasField "xz" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z _ -> ivec2 x z

instance HasField "xw" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ _ w -> ivec2 x w

instance HasField "yx" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ _ -> ivec2 y x

instance HasField "yy" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y _ _ -> ivec2 y y

instance HasField "yz" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z _ -> ivec2 y z

instance HasField "yw" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y _ w -> ivec2 y w

instance HasField "zx" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z _ -> ivec2 z x

instance HasField "zy" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z _ -> ivec2 z y

instance HasField "zz" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z _ -> ivec2 z z

instance HasField "zw" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z w -> ivec2 z w

instance HasField "wx" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ _ w -> ivec2 w x

instance HasField "wy" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y _ w -> ivec2 w y

instance HasField "wz" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z w -> ivec2 w z

instance HasField "ww" IVec4 IVec2 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ _ w -> ivec2 w w

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

instance HasField "xxy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ _ -> ivec3 x x y

instance HasField "xxz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z _ -> ivec3 x x z

instance HasField "xxw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ _ w -> ivec3 x x w

instance HasField "xyx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ _ -> ivec3 x y x

instance HasField "xyy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ _ -> ivec3 x y y

instance HasField "xyz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y z _ -> ivec3 x y z

instance HasField "xyw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ w -> ivec3 x y w

instance HasField "xzx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z _ -> ivec3 x z x

instance HasField "xzy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y z _ -> ivec3 x z y

instance HasField "xzz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z _ -> ivec3 x z z

instance HasField "xzw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z w -> ivec3 x z w

instance HasField "xwx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ _ w -> ivec3 x w x

instance HasField "xwy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ w -> ivec3 x w y

instance HasField "xwz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z w -> ivec3 x w z

instance HasField "xww" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ _ w -> ivec3 x w w

instance HasField "yxx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ _ -> ivec3 y x x

instance HasField "yxy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ _ -> ivec3 y x y

instance HasField "yxz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y z _ -> ivec3 y x z

instance HasField "yxw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ w -> ivec3 y x w

instance HasField "yyx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ _ -> ivec3 y y x

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

instance HasField "yyz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z _ -> ivec3 y y z

instance HasField "yyw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y _ w -> ivec3 y y w

instance HasField "yzx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y z _ -> ivec3 y z x

instance HasField "yzy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z _ -> ivec3 y z y

instance HasField "yzz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z _ -> ivec3 y z z

instance HasField "yzw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z w -> ivec3 y z w

instance HasField "ywx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ w -> ivec3 y w x

instance HasField "ywy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y _ w -> ivec3 y w y

instance HasField "ywz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z w -> ivec3 y w z

instance HasField "yww" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y _ w -> ivec3 y w w

instance HasField "zxx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z _ -> ivec3 z x x

instance HasField "zxy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y z _ -> ivec3 z x y

instance HasField "zxz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z _ -> ivec3 z x z

instance HasField "zxw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z w -> ivec3 z x w

instance HasField "zyx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y z _ -> ivec3 z y x

instance HasField "zyy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z _ -> ivec3 z y y

instance HasField "zyz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z _ -> ivec3 z y z

instance HasField "zyw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z w -> ivec3 z y w

instance HasField "zzx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z _ -> ivec3 z z x

instance HasField "zzy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z _ -> ivec3 z z y

instance HasField "zzz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z _ -> ivec3 z z z

instance HasField "zzw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z w -> ivec3 z z w

instance HasField "zwx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z w -> ivec3 z w x

instance HasField "zwy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z w -> ivec3 z w y

instance HasField "zwz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z w -> ivec3 z w z

instance HasField "zww" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z w -> ivec3 z w w

instance HasField "wxx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ _ w -> ivec3 w x x

instance HasField "wxy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ w -> ivec3 w x y

instance HasField "wxz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z w -> ivec3 w x z

instance HasField "wxw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ _ w -> ivec3 w x w

instance HasField "wyx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x y _ w -> ivec3 w y x

instance HasField "wyy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y _ w -> ivec3 w y y

instance HasField "wyz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z w -> ivec3 w y z

instance HasField "wyw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y _ w -> ivec3 w y w

instance HasField "wzx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ z w -> ivec3 w z x

instance HasField "wzy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y z w -> ivec3 w z y

instance HasField "wzz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z w -> ivec3 w z z

instance HasField "wzw" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z w -> ivec3 w z w

instance HasField "wwx" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \x _ _ w -> ivec3 w w x

instance HasField "wwy" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ y _ w -> ivec3 w w y

instance HasField "wwz" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ z w -> ivec3 w w z

instance HasField "www" IVec4 IVec3 where
  {-# INLINE getField #-}
  getField v = withIVec4 v \_ _ _ w -> ivec3 w w w