module Graphics.XHB.Gen.SELinux
       (extension, queryVersion, setDeviceCreateContext,
        getDeviceCreateContext, setDeviceContext, getDeviceContext,
        setWindowCreateContext, getWindowCreateContext, getWindowContext,
        setPropertyCreateContext, getPropertyCreateContext,
        setPropertyUseContext, getPropertyUseContext, getPropertyContext,
        getPropertyDataContext, listProperties, setSelectionCreateContext,
        getSelectionCreateContext, setSelectionUseContext,
        getSelectionUseContext, getSelectionContext,
        getSelectionDataContext, listSelections, getClientContext,
        module Graphics.XHB.Gen.SELinux.Types)
       where
import Graphics.XHB.Gen.SELinux.Types
import Graphics.XHB.Connection.Internal
import Graphics.XHB.Connection.Extension
import Graphics.XHB.Connection.Types
import Control.Concurrent.STM
import Foreign.C.Types
import Data.Binary.Put (runPut)
import Graphics.XHB.Shared hiding (Event(..), Error(..))
import Graphics.XHB.Gen.Xproto.Types
       hiding (ListProperties(..), ListPropertiesReply(..),
               deserializeError, deserializeEvent)
import qualified Graphics.XHB.Gen.Xproto.Types
 
extension :: ExtensionId
extension = "SELinux"
 
queryVersion ::
               Graphics.XHB.Connection.Types.Connection ->
                 CARD8 -> CARD8 -> IO (Receipt QueryVersionReply)
queryVersion c client_major client_minor
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryVersion client_major client_minor
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setDeviceCreateContext ::
                         Graphics.XHB.Connection.Types.Connection ->
                           CARD32 -> [CChar] -> IO ()
setDeviceCreateContext c context_len context
  = do let req = MkSetDeviceCreateContext context_len context
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getDeviceCreateContext ::
                         Graphics.XHB.Connection.Types.Connection ->
                           IO (Receipt GetDeviceCreateContextReply)
getDeviceCreateContext c
  = do receipt <- newEmptyReceiptIO
       let req = MkGetDeviceCreateContext
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setDeviceContext ::
                   Graphics.XHB.Connection.Types.Connection ->
                     SetDeviceContext -> IO ()
setDeviceContext c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getDeviceContext ::
                   Graphics.XHB.Connection.Types.Connection ->
                     CARD32 -> IO (Receipt GetDeviceContextReply)
getDeviceContext c device
  = do receipt <- newEmptyReceiptIO
       let req = MkGetDeviceContext device
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setWindowCreateContext ::
                         Graphics.XHB.Connection.Types.Connection ->
                           CARD32 -> [CChar] -> IO ()
setWindowCreateContext c context_len context
  = do let req = MkSetWindowCreateContext context_len context
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getWindowCreateContext ::
                         Graphics.XHB.Connection.Types.Connection ->
                           IO (Receipt GetWindowCreateContextReply)
getWindowCreateContext c
  = do receipt <- newEmptyReceiptIO
       let req = MkGetWindowCreateContext
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getWindowContext ::
                   Graphics.XHB.Connection.Types.Connection ->
                     WINDOW -> IO (Receipt GetWindowContextReply)
getWindowContext c window
  = do receipt <- newEmptyReceiptIO
       let req = MkGetWindowContext window
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setPropertyCreateContext ::
                           Graphics.XHB.Connection.Types.Connection ->
                             CARD32 -> [CChar] -> IO ()
setPropertyCreateContext c context_len context
  = do let req = MkSetPropertyCreateContext context_len context
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getPropertyCreateContext ::
                           Graphics.XHB.Connection.Types.Connection ->
                             IO (Receipt GetPropertyCreateContextReply)
getPropertyCreateContext c
  = do receipt <- newEmptyReceiptIO
       let req = MkGetPropertyCreateContext
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setPropertyUseContext ::
                        Graphics.XHB.Connection.Types.Connection ->
                          CARD32 -> [CChar] -> IO ()
setPropertyUseContext c context_len context
  = do let req = MkSetPropertyUseContext context_len context
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getPropertyUseContext ::
                        Graphics.XHB.Connection.Types.Connection ->
                          IO (Receipt GetPropertyUseContextReply)
getPropertyUseContext c
  = do receipt <- newEmptyReceiptIO
       let req = MkGetPropertyUseContext
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getPropertyContext ::
                     Graphics.XHB.Connection.Types.Connection ->
                       WINDOW -> ATOM -> IO (Receipt GetPropertyContextReply)
getPropertyContext c window property
  = do receipt <- newEmptyReceiptIO
       let req = MkGetPropertyContext window property
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getPropertyDataContext ::
                         Graphics.XHB.Connection.Types.Connection ->
                           WINDOW -> ATOM -> IO (Receipt GetPropertyDataContextReply)
getPropertyDataContext c window property
  = do receipt <- newEmptyReceiptIO
       let req = MkGetPropertyDataContext window property
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
listProperties ::
                 Graphics.XHB.Connection.Types.Connection ->
                   WINDOW -> IO (Receipt ListPropertiesReply)
listProperties c window
  = do receipt <- newEmptyReceiptIO
       let req = MkListProperties window
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setSelectionCreateContext ::
                            Graphics.XHB.Connection.Types.Connection ->
                              CARD32 -> [CChar] -> IO ()
setSelectionCreateContext c context_len context
  = do let req = MkSetSelectionCreateContext context_len context
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getSelectionCreateContext ::
                            Graphics.XHB.Connection.Types.Connection ->
                              IO (Receipt GetSelectionCreateContextReply)
getSelectionCreateContext c
  = do receipt <- newEmptyReceiptIO
       let req = MkGetSelectionCreateContext
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setSelectionUseContext ::
                         Graphics.XHB.Connection.Types.Connection ->
                           CARD32 -> [CChar] -> IO ()
setSelectionUseContext c context_len context
  = do let req = MkSetSelectionUseContext context_len context
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getSelectionUseContext ::
                         Graphics.XHB.Connection.Types.Connection ->
                           IO (Receipt GetSelectionUseContextReply)
getSelectionUseContext c
  = do receipt <- newEmptyReceiptIO
       let req = MkGetSelectionUseContext
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getSelectionContext ::
                      Graphics.XHB.Connection.Types.Connection ->
                        ATOM -> IO (Receipt GetSelectionContextReply)
getSelectionContext c selection
  = do receipt <- newEmptyReceiptIO
       let req = MkGetSelectionContext selection
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getSelectionDataContext ::
                          Graphics.XHB.Connection.Types.Connection ->
                            ATOM -> IO (Receipt GetSelectionDataContextReply)
getSelectionDataContext c selection
  = do receipt <- newEmptyReceiptIO
       let req = MkGetSelectionDataContext selection
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
listSelections ::
                 Graphics.XHB.Connection.Types.Connection ->
                   IO (Receipt ListSelectionsReply)
listSelections c
  = do receipt <- newEmptyReceiptIO
       let req = MkListSelections
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getClientContext ::
                   Graphics.XHB.Connection.Types.Connection ->
                     CARD32 -> IO (Receipt GetClientContextReply)
getClientContext c resource
  = do receipt <- newEmptyReceiptIO
       let req = MkGetClientContext resource
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt