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

module Control.Process.GroupID(
  HasGroupID(..)
, AsGroupID(..)
) where

import Control.Category(id)
import Control.Lens ( Lens', Prism' )
import System.Process.Internals ( GroupID )

class HasGroupID a where
  groupID ::
    Lens' a GroupID

instance HasGroupID GroupID where
  groupID :: (GroupID -> f GroupID) -> GroupID -> f GroupID
groupID =
    (GroupID -> f GroupID) -> GroupID -> f GroupID
forall k (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id

class AsGroupID a where
  _GroupID ::
    Prism' a GroupID

instance AsGroupID GroupID where
  _GroupID :: p GroupID (f GroupID) -> p GroupID (f GroupID)
_GroupID =
    p GroupID (f GroupID) -> p GroupID (f GroupID)
forall k (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id