packages feed

exitcode-0.1.0.6: src/Control/Process/FD.hs

{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeSynonymInstances #-}

module Control.Process.FD(
  HasFD(..)
, AsFD(..)
) where

import Control.Category((.), id)
import Control.Lens ( iso, Lens', Prism' )
import Data.Int ( Int32 )
import Foreign.C.Types ( CInt(CInt) )
import System.Posix.Internals ( FD )

class HasFD a where
  fd ::
    Lens' a FD
  fdInt32 ::
    Lens' a Int32
  fdInt32 =
    fd .
      iso
        (\(CInt x) -> x)
        CInt

instance HasFD FD where
  fd =
    id

class AsFD a where
  _FD ::
    Prism' a FD
  _FDInt32 ::
    Prism' a Int32
  _FDInt32 =
    _FD .
      iso
        (\(CInt x) -> x)
        CInt

instance AsFD FD where
  _FD =
    id