{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RebindableSyntax #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeInType #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -fno-warn-missing-signatures #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {-# OPTIONS_GHC -fprint-explicit-kinds #-} module Graphics.IxShader.Types.Xbool where import Prelude hiding (Ord (..), Read, return, (>>), (>>=), Eq (..)) import Graphics.IxShader.Socket import Graphics.IxShader.Function.ToParams import Graphics.IxShader.IxShader newtype Xbool = Xbool { unXbool :: String } $(genKnownTypeSymbol [t|Xbool|] [e|"bool"|]) $(genSocketed [t|Xbool|] [e|unXbool|] [e|Xbool|]) $(genToParams [t|Xbool|]) ifThenElse :: Xbool -> IxShader ctx i i () -> IxShader ctx i i () -> IxShader ctx i i () ifThenElse x a b = do nxt_ $ "if (" ++ unSocket x ++ ")" sub_ "{" "}" a sub_ "else {" "}" b when :: Xbool -> IxShader ctx i i () -> IxShader ctx i i () when x a = do nxt_ $ "if (" ++ unSocket x ++ ")" sub_ "{" "}" a unless :: Xbool -> IxShader ctx i i () -> IxShader ctx i i () unless x a = do nxt_ $ "if (! " ++ unSocket x ++ ")" sub_ "{" "}" a