{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}
{-# LANGUAGE NoImplicitPrelude #-}

-- | SDL provides access to the system clipboard, both for reading information from other processes and publishing information of its own.
--
--     This is not just text! SDL apps can access and publish data by mimetype.
--
--     Basic use (text)
--
--     Obtaining and publishing simple text to the system clipboard is as easy as calling @SDL_GetClipboardText()@ and @SDL_SetClipboardText()@, respectively. These deal with C strings in UTF-8 encoding. Data transmission and encoding conversion is completely managed by SDL.
--
--     Clipboard callbacks (data other than text)
--
--     Things get more complicated when the clipboard contains something other than text. Not only can the system clipboard contain data of any type, in some cases it can contain the same data in different formats! For example, an image painting app might let the user copy a graphic to the clipboard, and offers it in .BMP, .JPG, or .PNG format for other apps to consume.
--
--     Obtaining clipboard data (\"pasting\") like this is a matter of calling @SDL_GetClipboardData()@ and telling it the mimetype of the data you want. But how does one know if that format is available? @SDL_HasClipboardData()@ can report if a specific mimetype is offered, and @SDL_GetClipboardMimeTypes()@ can provide the entire list of mimetypes available, so the app can decide what to do with the data and what formats it can support.
--
--     Setting the clipboard (\"copying\") to arbitrary data is done with SDL_SetClipboardData. The app does not provide the data in this call, but rather the mimetypes it is willing to provide and a callback function. During the callback, the app will generate the data. This allows massive data sets to be provided to the clipboard, without any data being copied before it is explicitly requested. More specifically, it allows an app to offer data in multiple formats without providing a copy of all of them upfront. If the app has an image that it could provide in PNG or JPG format, it doesn\'t have to encode it to either of those unless and until something tries to paste it.
--
--     Primary Selection
--
--     The X11 and Wayland video targets have a concept of the \"primary selection\" in addition to the usual clipboard. This is generally highlighted (but not explicitly copied) text from various apps. SDL offers APIs for this through @SDL_GetPrimarySelectionText()@ and @SDL_SetPrimarySelectionText()@. SDL offers these APIs on platforms without this concept, too, but only so far that it will keep a copy of a string that the app sets for later retrieval; the operating system will not ever attempt to change the string externally if it doesn\'t support a primary selection. Put UTF-8 text into the clipboard.
--
--     [@text@]: the text to store in the clipboard.
--
--     [Returns]: true on success or false on failure; call SDL_GetError() for more information.
--
--     [Thread safety]: This function should only be called on the main thread.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_GetClipboardText'
--
--     [See also]: 'sDL_HasClipboardText'
module SDL3.Sys.Bindgen.Clipboard (
  SDL3.Sys.Bindgen.Clipboard.SDL_ClipboardDataCallback_Aux (..),
  SDL3.Sys.Bindgen.Clipboard.SDL_ClipboardDataCallback (..),
  SDL3.Sys.Bindgen.Clipboard.SDL_ClipboardCleanupCallback_Aux (..),
  SDL3.Sys.Bindgen.Clipboard.SDL_ClipboardCleanupCallback (..),
)
where

import Prelude (Eq, IO, Ord, Show, fmap, type (~))

import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.LibC qualified
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.PtrConst qualified as PtrConst
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField

-- | Auxiliary type used by 'SDL_ClipboardDataCallback'
--
--     [C declaration]: @SDL_ClipboardDataCallback@, defined at @SDL3\/SDL_clipboard.h 210:31@
newtype SDL_ClipboardDataCallback_Aux = SDL_ClipboardDataCallback_Aux
  { SDL_ClipboardDataCallback_Aux
-> Ptr Void -> PtrConst CChar -> Ptr CSize -> IO (PtrConst Void)
unwrap
      :: BG.Ptr BG.Void
      -> PtrConst.PtrConst BG.CChar
      -> BG.Ptr HsBindgen.Runtime.LibC.CSize
      -> IO (PtrConst.PtrConst BG.Void)
  }
  deriving stock ((forall x.
 SDL_ClipboardDataCallback_Aux
 -> Rep SDL_ClipboardDataCallback_Aux x)
-> (forall x.
    Rep SDL_ClipboardDataCallback_Aux x
    -> SDL_ClipboardDataCallback_Aux)
-> Generic SDL_ClipboardDataCallback_Aux
forall x.
Rep SDL_ClipboardDataCallback_Aux x
-> SDL_ClipboardDataCallback_Aux
forall x.
SDL_ClipboardDataCallback_Aux
-> Rep SDL_ClipboardDataCallback_Aux x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_ClipboardDataCallback_Aux
-> Rep SDL_ClipboardDataCallback_Aux x
from :: forall x.
SDL_ClipboardDataCallback_Aux
-> Rep SDL_ClipboardDataCallback_Aux x
$cto :: forall x.
Rep SDL_ClipboardDataCallback_Aux x
-> SDL_ClipboardDataCallback_Aux
to :: forall x.
Rep SDL_ClipboardDataCallback_Aux x
-> SDL_ClipboardDataCallback_Aux
BG.Generic)

-- __unique:__ @toSDL_ClipboardDataCallback_Aux@
foreign import ccall safe "wrapper"
  hs_bindgen_4dc4029500cc2362_base
    :: (BG.Ptr BG.Void -> BG.Ptr BG.Void -> BG.Ptr BG.Void -> IO (BG.Ptr BG.Void))
    -> IO (BG.FunPtr (BG.Ptr BG.Void -> BG.Ptr BG.Void -> BG.Ptr BG.Void -> IO (BG.Ptr BG.Void)))

-- __unique:__ @toSDL_ClipboardDataCallback_Aux@
hs_bindgen_4dc4029500cc2362
  :: SDL_ClipboardDataCallback_Aux
  -> IO (BG.FunPtr SDL_ClipboardDataCallback_Aux)
hs_bindgen_4dc4029500cc2362 :: SDL_ClipboardDataCallback_Aux
-> IO (FunPtr SDL_ClipboardDataCallback_Aux)
hs_bindgen_4dc4029500cc2362 =
  \SDL_ClipboardDataCallback_Aux
fun0 ->
    (FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO (Ptr Void))
 -> FunPtr SDL_ClipboardDataCallback_Aux)
-> IO (FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO (Ptr Void)))
-> IO (FunPtr SDL_ClipboardDataCallback_Aux)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
      FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO (Ptr Void))
-> FunPtr SDL_ClipboardDataCallback_Aux
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr
      ( (Ptr Void -> Ptr Void -> Ptr Void -> IO (Ptr Void))
-> IO (FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO (Ptr Void)))
hs_bindgen_4dc4029500cc2362_base
          ( \Ptr Void
x1 ->
              \Ptr Void
x2 ->
                \Ptr Void
x3 ->
                  (PtrConst Void -> Ptr Void) -> IO (PtrConst Void) -> IO (Ptr Void)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
                    PtrConst Void -> Ptr Void
PtrConst Void -> FFIType (PtrConst Void)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType
                    (forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_ClipboardDataCallback_Aux
fun0 (FFIType (Ptr Void) -> Ptr Void
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr Void)
x1) (FFIType (PtrConst CChar) -> PtrConst CChar
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (PtrConst CChar)
x2) (FFIType (Ptr CSize) -> Ptr CSize
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr CSize)
x3))
          )
      )

-- __unique:__ @fromSDL_ClipboardDataCallback_Aux@
foreign import ccall safe "dynamic"
  hs_bindgen_941a517724689596_base
    :: BG.FunPtr (BG.Ptr BG.Void -> BG.Ptr BG.Void -> BG.Ptr BG.Void -> IO (BG.Ptr BG.Void))
    -> BG.Ptr BG.Void
    -> BG.Ptr BG.Void
    -> BG.Ptr BG.Void
    -> IO (BG.Ptr BG.Void)

-- __unique:__ @fromSDL_ClipboardDataCallback_Aux@
hs_bindgen_941a517724689596
  :: BG.FunPtr SDL_ClipboardDataCallback_Aux
  -> SDL_ClipboardDataCallback_Aux
hs_bindgen_941a517724689596 :: FunPtr SDL_ClipboardDataCallback_Aux
-> SDL_ClipboardDataCallback_Aux
hs_bindgen_941a517724689596 =
  \FunPtr SDL_ClipboardDataCallback_Aux
funPtr0 ->
    (Ptr Void -> PtrConst CChar -> Ptr CSize -> IO (PtrConst Void))
-> SDL_ClipboardDataCallback_Aux
SDL_ClipboardDataCallback_Aux
      ( \Ptr Void
x1 ->
          \PtrConst CChar
x2 ->
            \Ptr CSize
x3 ->
              (Ptr Void -> PtrConst Void) -> IO (Ptr Void) -> IO (PtrConst Void)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
                Ptr Void -> PtrConst Void
FFIType (PtrConst Void) -> PtrConst Void
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType
                ( FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO (Ptr Void))
-> Ptr Void -> Ptr Void -> Ptr Void -> IO (Ptr Void)
hs_bindgen_941a517724689596_base
                    (FunPtr SDL_ClipboardDataCallback_Aux
-> FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO (Ptr Void))
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr FunPtr SDL_ClipboardDataCallback_Aux
funPtr0)
                    (Ptr Void -> FFIType (Ptr Void)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr Void
x1)
                    (PtrConst CChar -> FFIType (PtrConst CChar)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType PtrConst CChar
x2)
                    (Ptr CSize -> FFIType (Ptr CSize)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr CSize
x3)
                )
      )

instance BG.ToFunPtr SDL_ClipboardDataCallback_Aux where
  toFunPtr :: SDL_ClipboardDataCallback_Aux
-> IO (FunPtr SDL_ClipboardDataCallback_Aux)
toFunPtr = SDL_ClipboardDataCallback_Aux
-> IO (FunPtr SDL_ClipboardDataCallback_Aux)
hs_bindgen_4dc4029500cc2362

instance BG.FromFunPtr SDL_ClipboardDataCallback_Aux where
  fromFunPtr :: FunPtr SDL_ClipboardDataCallback_Aux
-> SDL_ClipboardDataCallback_Aux
fromFunPtr = FunPtr SDL_ClipboardDataCallback_Aux
-> SDL_ClipboardDataCallback_Aux
hs_bindgen_941a517724689596

instance
  ( ty
      ~ ( BG.Ptr BG.Void
          -> PtrConst.PtrConst BG.CChar
          -> BG.Ptr HsBindgen.Runtime.LibC.CSize
          -> IO (PtrConst.PtrConst BG.Void)
        )
  )
  => BG.CompatHasField.HasField "unwrap" SDL_ClipboardDataCallback_Aux ty
  where
  hasField :: SDL_ClipboardDataCallback_Aux
-> (ty -> SDL_ClipboardDataCallback_Aux, ty)
hasField =
    \SDL_ClipboardDataCallback_Aux
x0 ->
      ( \ty
y1 -> SDL_ClipboardDataCallback_Aux{unwrap :: Ptr Void -> PtrConst CChar -> Ptr CSize -> IO (PtrConst Void)
unwrap = ty
Ptr Void -> PtrConst CChar -> Ptr CSize -> IO (PtrConst Void)
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_ClipboardDataCallback_Aux
x0
      )

instance
  ( ty
      ~ ( BG.Ptr BG.Void
          -> PtrConst.PtrConst BG.CChar
          -> BG.Ptr HsBindgen.Runtime.LibC.CSize
          -> IO (PtrConst.PtrConst BG.Void)
        )
  )
  => BG.HasField "unwrap" (BG.Ptr SDL_ClipboardDataCallback_Aux) (BG.Ptr ty)
  where
  getField :: Ptr SDL_ClipboardDataCallback_Aux -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_ClipboardDataCallback_Aux
-> Ptr (CFieldType SDL_ClipboardDataCallback_Aux "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_ClipboardDataCallback_Aux "unwrap" where
  type
    CFieldType SDL_ClipboardDataCallback_Aux "unwrap" =
      BG.Ptr BG.Void
      -> PtrConst.PtrConst BG.CChar
      -> BG.Ptr HsBindgen.Runtime.LibC.CSize
      -> IO (PtrConst.PtrConst BG.Void)

  offset# :: Proxy# SDL_ClipboardDataCallback_Aux -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_ClipboardDataCallback_Aux
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | Callback function that will be called when data for the specified mime-type is requested by the OS.
--
--     The callback function is called with NULL as the mime_type when the clipboard is cleared or new data is set. The clipboard is automatically cleared in SDL_Quit().
--
--     [@userdata@]: a pointer to the provided user data.
--
--     [@mime_type@]: the requested mime-type.
--
--     [@size@]: a pointer filled in with the length of the returned data.
--
--     [Returns]: a pointer to the data for the provided mime-type. Returning NULL or setting the length to 0 will cause zero length data to be sent to the \"receiver\", which should be able to handle this. The returned data will not be freed, so it needs to be retained and dealt with internally.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_SetClipboardData'
--
--     [C declaration]: @SDL_ClipboardDataCallback@, defined at @SDL3\/SDL_clipboard.h 210:31@
newtype SDL_ClipboardDataCallback = SDL_ClipboardDataCallback
  { SDL_ClipboardDataCallback -> FunPtr SDL_ClipboardDataCallback_Aux
unwrap :: BG.FunPtr SDL_ClipboardDataCallback_Aux
  }
  deriving stock ((forall x.
 SDL_ClipboardDataCallback -> Rep SDL_ClipboardDataCallback x)
-> (forall x.
    Rep SDL_ClipboardDataCallback x -> SDL_ClipboardDataCallback)
-> Generic SDL_ClipboardDataCallback
forall x.
Rep SDL_ClipboardDataCallback x -> SDL_ClipboardDataCallback
forall x.
SDL_ClipboardDataCallback -> Rep SDL_ClipboardDataCallback x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_ClipboardDataCallback -> Rep SDL_ClipboardDataCallback x
from :: forall x.
SDL_ClipboardDataCallback -> Rep SDL_ClipboardDataCallback x
$cto :: forall x.
Rep SDL_ClipboardDataCallback x -> SDL_ClipboardDataCallback
to :: forall x.
Rep SDL_ClipboardDataCallback x -> SDL_ClipboardDataCallback
BG.Generic, SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
(SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool)
-> (SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool)
-> Eq SDL_ClipboardDataCallback
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
== :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
$c/= :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
/= :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
Eq, Eq SDL_ClipboardDataCallback
Eq SDL_ClipboardDataCallback =>
(SDL_ClipboardDataCallback
 -> SDL_ClipboardDataCallback -> Ordering)
-> (SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool)
-> (SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool)
-> (SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool)
-> (SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool)
-> (SDL_ClipboardDataCallback
    -> SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback)
-> (SDL_ClipboardDataCallback
    -> SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback)
-> Ord SDL_ClipboardDataCallback
SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Ordering
SDL_ClipboardDataCallback
-> SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Ordering
compare :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Ordering
$c< :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
< :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
$c<= :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
<= :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
$c> :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
> :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
$c>= :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
>= :: SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> Bool
$cmax :: SDL_ClipboardDataCallback
-> SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback
max :: SDL_ClipboardDataCallback
-> SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback
$cmin :: SDL_ClipboardDataCallback
-> SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback
min :: SDL_ClipboardDataCallback
-> SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback
Ord, Int -> SDL_ClipboardDataCallback -> ShowS
[SDL_ClipboardDataCallback] -> ShowS
SDL_ClipboardDataCallback -> String
(Int -> SDL_ClipboardDataCallback -> ShowS)
-> (SDL_ClipboardDataCallback -> String)
-> ([SDL_ClipboardDataCallback] -> ShowS)
-> Show SDL_ClipboardDataCallback
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_ClipboardDataCallback -> ShowS
showsPrec :: Int -> SDL_ClipboardDataCallback -> ShowS
$cshow :: SDL_ClipboardDataCallback -> String
show :: SDL_ClipboardDataCallback -> String
$cshowList :: [SDL_ClipboardDataCallback] -> ShowS
showList :: [SDL_ClipboardDataCallback] -> ShowS
Show)
  deriving newtype
    ( FFIType SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback
SDL_ClipboardDataCallback -> FFIType SDL_ClipboardDataCallback
(SDL_ClipboardDataCallback -> FFIType SDL_ClipboardDataCallback)
-> (FFIType SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback)
-> HasFFIType SDL_ClipboardDataCallback
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_ClipboardDataCallback -> FFIType SDL_ClipboardDataCallback
toFFIType :: SDL_ClipboardDataCallback -> FFIType SDL_ClipboardDataCallback
$cfromFFIType :: FFIType SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback
fromFFIType :: FFIType SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback
BG.HasFFIType
    , Ptr SDL_ClipboardDataCallback -> IO SDL_ClipboardDataCallback
Ptr SDL_ClipboardDataCallback
-> Int -> IO SDL_ClipboardDataCallback
Ptr SDL_ClipboardDataCallback
-> Int -> SDL_ClipboardDataCallback -> IO ()
Ptr SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> IO ()
SDL_ClipboardDataCallback -> Int
(SDL_ClipboardDataCallback -> Int)
-> (SDL_ClipboardDataCallback -> Int)
-> (Ptr SDL_ClipboardDataCallback
    -> Int -> IO SDL_ClipboardDataCallback)
-> (Ptr SDL_ClipboardDataCallback
    -> Int -> SDL_ClipboardDataCallback -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_ClipboardDataCallback)
-> (forall b. Ptr b -> Int -> SDL_ClipboardDataCallback -> IO ())
-> (Ptr SDL_ClipboardDataCallback -> IO SDL_ClipboardDataCallback)
-> (Ptr SDL_ClipboardDataCallback
    -> SDL_ClipboardDataCallback -> IO ())
-> Storable SDL_ClipboardDataCallback
forall b. Ptr b -> Int -> IO SDL_ClipboardDataCallback
forall b. Ptr b -> Int -> SDL_ClipboardDataCallback -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: SDL_ClipboardDataCallback -> Int
sizeOf :: SDL_ClipboardDataCallback -> Int
$calignment :: SDL_ClipboardDataCallback -> Int
alignment :: SDL_ClipboardDataCallback -> Int
$cpeekElemOff :: Ptr SDL_ClipboardDataCallback
-> Int -> IO SDL_ClipboardDataCallback
peekElemOff :: Ptr SDL_ClipboardDataCallback
-> Int -> IO SDL_ClipboardDataCallback
$cpokeElemOff :: Ptr SDL_ClipboardDataCallback
-> Int -> SDL_ClipboardDataCallback -> IO ()
pokeElemOff :: Ptr SDL_ClipboardDataCallback
-> Int -> SDL_ClipboardDataCallback -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_ClipboardDataCallback
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_ClipboardDataCallback
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_ClipboardDataCallback -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_ClipboardDataCallback -> IO ()
$cpeek :: Ptr SDL_ClipboardDataCallback -> IO SDL_ClipboardDataCallback
peek :: Ptr SDL_ClipboardDataCallback -> IO SDL_ClipboardDataCallback
$cpoke :: Ptr SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> IO ()
poke :: Ptr SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> IO ()
BG.Storable
    , Ptr SDL_ClipboardDataCallback -> IO SDL_ClipboardDataCallback
(Ptr SDL_ClipboardDataCallback -> IO SDL_ClipboardDataCallback)
-> ReadRaw SDL_ClipboardDataCallback
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_ClipboardDataCallback -> IO SDL_ClipboardDataCallback
readRaw :: Ptr SDL_ClipboardDataCallback -> IO SDL_ClipboardDataCallback
Marshal.ReadRaw
    , Proxy SDL_ClipboardDataCallback -> Int
(Proxy SDL_ClipboardDataCallback -> Int)
-> (Proxy SDL_ClipboardDataCallback -> Int)
-> StaticSize SDL_ClipboardDataCallback
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_ClipboardDataCallback -> Int
staticSizeOf :: Proxy SDL_ClipboardDataCallback -> Int
$cstaticAlignment :: Proxy SDL_ClipboardDataCallback -> Int
staticAlignment :: Proxy SDL_ClipboardDataCallback -> Int
Marshal.StaticSize
    , Ptr SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> IO ()
(Ptr SDL_ClipboardDataCallback
 -> SDL_ClipboardDataCallback -> IO ())
-> WriteRaw SDL_ClipboardDataCallback
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> IO ()
writeRaw :: Ptr SDL_ClipboardDataCallback -> SDL_ClipboardDataCallback -> IO ()
Marshal.WriteRaw
    )

instance
  (ty ~ BG.FunPtr SDL_ClipboardDataCallback_Aux)
  => BG.CompatHasField.HasField "unwrap" SDL_ClipboardDataCallback ty
  where
  hasField :: SDL_ClipboardDataCallback -> (ty -> SDL_ClipboardDataCallback, ty)
hasField =
    \SDL_ClipboardDataCallback
x0 ->
      ( \ty
y1 ->
          SDL_ClipboardDataCallback{unwrap :: FunPtr SDL_ClipboardDataCallback_Aux
unwrap = ty
FunPtr SDL_ClipboardDataCallback_Aux
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_ClipboardDataCallback
x0
      )

instance
  (ty ~ BG.FunPtr SDL_ClipboardDataCallback_Aux)
  => BG.HasField "unwrap" (BG.Ptr SDL_ClipboardDataCallback) (BG.Ptr ty)
  where
  getField :: Ptr SDL_ClipboardDataCallback -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_ClipboardDataCallback
-> Ptr (CFieldType SDL_ClipboardDataCallback "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_ClipboardDataCallback "unwrap" where
  type
    CFieldType SDL_ClipboardDataCallback "unwrap" =
      BG.FunPtr SDL_ClipboardDataCallback_Aux

  offset# :: Proxy# SDL_ClipboardDataCallback -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_ClipboardDataCallback
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | Auxiliary type used by 'SDL_ClipboardCleanupCallback'
--
--     [C declaration]: @SDL_ClipboardCleanupCallback@, defined at @SDL3\/SDL_clipboard.h 222:24@
newtype SDL_ClipboardCleanupCallback_Aux = SDL_ClipboardCleanupCallback_Aux
  { SDL_ClipboardCleanupCallback_Aux -> Ptr Void -> IO ()
unwrap :: BG.Ptr BG.Void -> IO ()
  }
  deriving stock ((forall x.
 SDL_ClipboardCleanupCallback_Aux
 -> Rep SDL_ClipboardCleanupCallback_Aux x)
-> (forall x.
    Rep SDL_ClipboardCleanupCallback_Aux x
    -> SDL_ClipboardCleanupCallback_Aux)
-> Generic SDL_ClipboardCleanupCallback_Aux
forall x.
Rep SDL_ClipboardCleanupCallback_Aux x
-> SDL_ClipboardCleanupCallback_Aux
forall x.
SDL_ClipboardCleanupCallback_Aux
-> Rep SDL_ClipboardCleanupCallback_Aux x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_ClipboardCleanupCallback_Aux
-> Rep SDL_ClipboardCleanupCallback_Aux x
from :: forall x.
SDL_ClipboardCleanupCallback_Aux
-> Rep SDL_ClipboardCleanupCallback_Aux x
$cto :: forall x.
Rep SDL_ClipboardCleanupCallback_Aux x
-> SDL_ClipboardCleanupCallback_Aux
to :: forall x.
Rep SDL_ClipboardCleanupCallback_Aux x
-> SDL_ClipboardCleanupCallback_Aux
BG.Generic)

-- __unique:__ @toSDL_ClipboardCleanupCallback_Aux@
foreign import ccall safe "wrapper"
  hs_bindgen_dec1734c1f7f2a3f_base
    :: (BG.Ptr BG.Void -> IO ())
    -> IO (BG.FunPtr (BG.Ptr BG.Void -> IO ()))

-- __unique:__ @toSDL_ClipboardCleanupCallback_Aux@
hs_bindgen_dec1734c1f7f2a3f
  :: SDL_ClipboardCleanupCallback_Aux
  -> IO (BG.FunPtr SDL_ClipboardCleanupCallback_Aux)
hs_bindgen_dec1734c1f7f2a3f :: SDL_ClipboardCleanupCallback_Aux
-> IO (FunPtr SDL_ClipboardCleanupCallback_Aux)
hs_bindgen_dec1734c1f7f2a3f =
  \SDL_ClipboardCleanupCallback_Aux
fun0 ->
    (FunPtr (Ptr Void -> IO ())
 -> FunPtr SDL_ClipboardCleanupCallback_Aux)
-> IO (FunPtr (Ptr Void -> IO ()))
-> IO (FunPtr SDL_ClipboardCleanupCallback_Aux)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
      FunPtr (Ptr Void -> IO ())
-> FunPtr SDL_ClipboardCleanupCallback_Aux
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr
      ( (Ptr Void -> IO ()) -> IO (FunPtr (Ptr Void -> IO ()))
hs_bindgen_dec1734c1f7f2a3f_base
          ( \Ptr Void
x1 ->
              forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_ClipboardCleanupCallback_Aux
fun0 (FFIType (Ptr Void) -> Ptr Void
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr Void)
x1)
          )
      )

-- __unique:__ @fromSDL_ClipboardCleanupCallback_Aux@
foreign import ccall safe "dynamic"
  hs_bindgen_0ab064059cf117ee_base
    :: BG.FunPtr (BG.Ptr BG.Void -> IO ())
    -> BG.Ptr BG.Void
    -> IO ()

-- __unique:__ @fromSDL_ClipboardCleanupCallback_Aux@
hs_bindgen_0ab064059cf117ee
  :: BG.FunPtr SDL_ClipboardCleanupCallback_Aux
  -> SDL_ClipboardCleanupCallback_Aux
hs_bindgen_0ab064059cf117ee :: FunPtr SDL_ClipboardCleanupCallback_Aux
-> SDL_ClipboardCleanupCallback_Aux
hs_bindgen_0ab064059cf117ee =
  \FunPtr SDL_ClipboardCleanupCallback_Aux
funPtr0 ->
    (Ptr Void -> IO ()) -> SDL_ClipboardCleanupCallback_Aux
SDL_ClipboardCleanupCallback_Aux
      ( \Ptr Void
x1 ->
          FunPtr (Ptr Void -> IO ()) -> Ptr Void -> IO ()
hs_bindgen_0ab064059cf117ee_base (FunPtr SDL_ClipboardCleanupCallback_Aux
-> FunPtr (Ptr Void -> IO ())
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr FunPtr SDL_ClipboardCleanupCallback_Aux
funPtr0) (Ptr Void -> FFIType (Ptr Void)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr Void
x1)
      )

instance BG.ToFunPtr SDL_ClipboardCleanupCallback_Aux where
  toFunPtr :: SDL_ClipboardCleanupCallback_Aux
-> IO (FunPtr SDL_ClipboardCleanupCallback_Aux)
toFunPtr = SDL_ClipboardCleanupCallback_Aux
-> IO (FunPtr SDL_ClipboardCleanupCallback_Aux)
hs_bindgen_dec1734c1f7f2a3f

instance BG.FromFunPtr SDL_ClipboardCleanupCallback_Aux where
  fromFunPtr :: FunPtr SDL_ClipboardCleanupCallback_Aux
-> SDL_ClipboardCleanupCallback_Aux
fromFunPtr = FunPtr SDL_ClipboardCleanupCallback_Aux
-> SDL_ClipboardCleanupCallback_Aux
hs_bindgen_0ab064059cf117ee

instance
  (ty ~ (BG.Ptr BG.Void -> IO ()))
  => BG.CompatHasField.HasField "unwrap" SDL_ClipboardCleanupCallback_Aux ty
  where
  hasField :: SDL_ClipboardCleanupCallback_Aux
-> (ty -> SDL_ClipboardCleanupCallback_Aux, ty)
hasField =
    \SDL_ClipboardCleanupCallback_Aux
x0 ->
      ( \ty
y1 ->
          SDL_ClipboardCleanupCallback_Aux{unwrap :: Ptr Void -> IO ()
unwrap = ty
Ptr Void -> IO ()
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_ClipboardCleanupCallback_Aux
x0
      )

instance
  (ty ~ (BG.Ptr BG.Void -> IO ()))
  => BG.HasField "unwrap" (BG.Ptr SDL_ClipboardCleanupCallback_Aux) (BG.Ptr ty)
  where
  getField :: Ptr SDL_ClipboardCleanupCallback_Aux -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_ClipboardCleanupCallback_Aux
-> Ptr (CFieldType SDL_ClipboardCleanupCallback_Aux "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_ClipboardCleanupCallback_Aux "unwrap" where
  type
    CFieldType SDL_ClipboardCleanupCallback_Aux "unwrap" =
      BG.Ptr BG.Void -> IO ()

  offset# :: Proxy# SDL_ClipboardCleanupCallback_Aux -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_ClipboardCleanupCallback_Aux
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | Callback function that will be called when the clipboard is cleared, or when new data is set.
--
--     [@userdata@]: a pointer to the provided user data.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_SetClipboardData'
--
--     [C declaration]: @SDL_ClipboardCleanupCallback@, defined at @SDL3\/SDL_clipboard.h 222:24@
newtype SDL_ClipboardCleanupCallback = SDL_ClipboardCleanupCallback
  { SDL_ClipboardCleanupCallback
-> FunPtr SDL_ClipboardCleanupCallback_Aux
unwrap :: BG.FunPtr SDL_ClipboardCleanupCallback_Aux
  }
  deriving stock ((forall x.
 SDL_ClipboardCleanupCallback -> Rep SDL_ClipboardCleanupCallback x)
-> (forall x.
    Rep SDL_ClipboardCleanupCallback x -> SDL_ClipboardCleanupCallback)
-> Generic SDL_ClipboardCleanupCallback
forall x.
Rep SDL_ClipboardCleanupCallback x -> SDL_ClipboardCleanupCallback
forall x.
SDL_ClipboardCleanupCallback -> Rep SDL_ClipboardCleanupCallback x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_ClipboardCleanupCallback -> Rep SDL_ClipboardCleanupCallback x
from :: forall x.
SDL_ClipboardCleanupCallback -> Rep SDL_ClipboardCleanupCallback x
$cto :: forall x.
Rep SDL_ClipboardCleanupCallback x -> SDL_ClipboardCleanupCallback
to :: forall x.
Rep SDL_ClipboardCleanupCallback x -> SDL_ClipboardCleanupCallback
BG.Generic, SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
(SDL_ClipboardCleanupCallback
 -> SDL_ClipboardCleanupCallback -> Bool)
-> (SDL_ClipboardCleanupCallback
    -> SDL_ClipboardCleanupCallback -> Bool)
-> Eq SDL_ClipboardCleanupCallback
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
== :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
$c/= :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
/= :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
Eq, Eq SDL_ClipboardCleanupCallback
Eq SDL_ClipboardCleanupCallback =>
(SDL_ClipboardCleanupCallback
 -> SDL_ClipboardCleanupCallback -> Ordering)
-> (SDL_ClipboardCleanupCallback
    -> SDL_ClipboardCleanupCallback -> Bool)
-> (SDL_ClipboardCleanupCallback
    -> SDL_ClipboardCleanupCallback -> Bool)
-> (SDL_ClipboardCleanupCallback
    -> SDL_ClipboardCleanupCallback -> Bool)
-> (SDL_ClipboardCleanupCallback
    -> SDL_ClipboardCleanupCallback -> Bool)
-> (SDL_ClipboardCleanupCallback
    -> SDL_ClipboardCleanupCallback -> SDL_ClipboardCleanupCallback)
-> (SDL_ClipboardCleanupCallback
    -> SDL_ClipboardCleanupCallback -> SDL_ClipboardCleanupCallback)
-> Ord SDL_ClipboardCleanupCallback
SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Ordering
SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> SDL_ClipboardCleanupCallback
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Ordering
compare :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Ordering
$c< :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
< :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
$c<= :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
<= :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
$c> :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
> :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
$c>= :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
>= :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> Bool
$cmax :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> SDL_ClipboardCleanupCallback
max :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> SDL_ClipboardCleanupCallback
$cmin :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> SDL_ClipboardCleanupCallback
min :: SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> SDL_ClipboardCleanupCallback
Ord, Int -> SDL_ClipboardCleanupCallback -> ShowS
[SDL_ClipboardCleanupCallback] -> ShowS
SDL_ClipboardCleanupCallback -> String
(Int -> SDL_ClipboardCleanupCallback -> ShowS)
-> (SDL_ClipboardCleanupCallback -> String)
-> ([SDL_ClipboardCleanupCallback] -> ShowS)
-> Show SDL_ClipboardCleanupCallback
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_ClipboardCleanupCallback -> ShowS
showsPrec :: Int -> SDL_ClipboardCleanupCallback -> ShowS
$cshow :: SDL_ClipboardCleanupCallback -> String
show :: SDL_ClipboardCleanupCallback -> String
$cshowList :: [SDL_ClipboardCleanupCallback] -> ShowS
showList :: [SDL_ClipboardCleanupCallback] -> ShowS
Show)
  deriving newtype
    ( FFIType SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback
SDL_ClipboardCleanupCallback
-> FFIType SDL_ClipboardCleanupCallback
(SDL_ClipboardCleanupCallback
 -> FFIType SDL_ClipboardCleanupCallback)
-> (FFIType SDL_ClipboardCleanupCallback
    -> SDL_ClipboardCleanupCallback)
-> HasFFIType SDL_ClipboardCleanupCallback
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_ClipboardCleanupCallback
-> FFIType SDL_ClipboardCleanupCallback
toFFIType :: SDL_ClipboardCleanupCallback
-> FFIType SDL_ClipboardCleanupCallback
$cfromFFIType :: FFIType SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback
fromFFIType :: FFIType SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback
BG.HasFFIType
    , Ptr SDL_ClipboardCleanupCallback -> IO SDL_ClipboardCleanupCallback
Ptr SDL_ClipboardCleanupCallback
-> Int -> IO SDL_ClipboardCleanupCallback
Ptr SDL_ClipboardCleanupCallback
-> Int -> SDL_ClipboardCleanupCallback -> IO ()
Ptr SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> IO ()
SDL_ClipboardCleanupCallback -> Int
(SDL_ClipboardCleanupCallback -> Int)
-> (SDL_ClipboardCleanupCallback -> Int)
-> (Ptr SDL_ClipboardCleanupCallback
    -> Int -> IO SDL_ClipboardCleanupCallback)
-> (Ptr SDL_ClipboardCleanupCallback
    -> Int -> SDL_ClipboardCleanupCallback -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_ClipboardCleanupCallback)
-> (forall b.
    Ptr b -> Int -> SDL_ClipboardCleanupCallback -> IO ())
-> (Ptr SDL_ClipboardCleanupCallback
    -> IO SDL_ClipboardCleanupCallback)
-> (Ptr SDL_ClipboardCleanupCallback
    -> SDL_ClipboardCleanupCallback -> IO ())
-> Storable SDL_ClipboardCleanupCallback
forall b. Ptr b -> Int -> IO SDL_ClipboardCleanupCallback
forall b. Ptr b -> Int -> SDL_ClipboardCleanupCallback -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: SDL_ClipboardCleanupCallback -> Int
sizeOf :: SDL_ClipboardCleanupCallback -> Int
$calignment :: SDL_ClipboardCleanupCallback -> Int
alignment :: SDL_ClipboardCleanupCallback -> Int
$cpeekElemOff :: Ptr SDL_ClipboardCleanupCallback
-> Int -> IO SDL_ClipboardCleanupCallback
peekElemOff :: Ptr SDL_ClipboardCleanupCallback
-> Int -> IO SDL_ClipboardCleanupCallback
$cpokeElemOff :: Ptr SDL_ClipboardCleanupCallback
-> Int -> SDL_ClipboardCleanupCallback -> IO ()
pokeElemOff :: Ptr SDL_ClipboardCleanupCallback
-> Int -> SDL_ClipboardCleanupCallback -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_ClipboardCleanupCallback
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_ClipboardCleanupCallback
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_ClipboardCleanupCallback -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_ClipboardCleanupCallback -> IO ()
$cpeek :: Ptr SDL_ClipboardCleanupCallback -> IO SDL_ClipboardCleanupCallback
peek :: Ptr SDL_ClipboardCleanupCallback -> IO SDL_ClipboardCleanupCallback
$cpoke :: Ptr SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> IO ()
poke :: Ptr SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> IO ()
BG.Storable
    , Ptr SDL_ClipboardCleanupCallback -> IO SDL_ClipboardCleanupCallback
(Ptr SDL_ClipboardCleanupCallback
 -> IO SDL_ClipboardCleanupCallback)
-> ReadRaw SDL_ClipboardCleanupCallback
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_ClipboardCleanupCallback -> IO SDL_ClipboardCleanupCallback
readRaw :: Ptr SDL_ClipboardCleanupCallback -> IO SDL_ClipboardCleanupCallback
Marshal.ReadRaw
    , Proxy SDL_ClipboardCleanupCallback -> Int
(Proxy SDL_ClipboardCleanupCallback -> Int)
-> (Proxy SDL_ClipboardCleanupCallback -> Int)
-> StaticSize SDL_ClipboardCleanupCallback
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_ClipboardCleanupCallback -> Int
staticSizeOf :: Proxy SDL_ClipboardCleanupCallback -> Int
$cstaticAlignment :: Proxy SDL_ClipboardCleanupCallback -> Int
staticAlignment :: Proxy SDL_ClipboardCleanupCallback -> Int
Marshal.StaticSize
    , Ptr SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> IO ()
(Ptr SDL_ClipboardCleanupCallback
 -> SDL_ClipboardCleanupCallback -> IO ())
-> WriteRaw SDL_ClipboardCleanupCallback
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> IO ()
writeRaw :: Ptr SDL_ClipboardCleanupCallback
-> SDL_ClipboardCleanupCallback -> IO ()
Marshal.WriteRaw
    )

instance
  (ty ~ BG.FunPtr SDL_ClipboardCleanupCallback_Aux)
  => BG.CompatHasField.HasField "unwrap" SDL_ClipboardCleanupCallback ty
  where
  hasField :: SDL_ClipboardCleanupCallback
-> (ty -> SDL_ClipboardCleanupCallback, ty)
hasField =
    \SDL_ClipboardCleanupCallback
x0 ->
      ( \ty
y1 ->
          SDL_ClipboardCleanupCallback{unwrap :: FunPtr SDL_ClipboardCleanupCallback_Aux
unwrap = ty
FunPtr SDL_ClipboardCleanupCallback_Aux
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_ClipboardCleanupCallback
x0
      )

instance
  (ty ~ BG.FunPtr SDL_ClipboardCleanupCallback_Aux)
  => BG.HasField "unwrap" (BG.Ptr SDL_ClipboardCleanupCallback) (BG.Ptr ty)
  where
  getField :: Ptr SDL_ClipboardCleanupCallback -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_ClipboardCleanupCallback
-> Ptr (CFieldType SDL_ClipboardCleanupCallback "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_ClipboardCleanupCallback "unwrap" where
  type
    CFieldType SDL_ClipboardCleanupCallback "unwrap" =
      BG.FunPtr SDL_ClipboardCleanupCallback_Aux

  offset# :: Proxy# SDL_ClipboardCleanupCallback -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_ClipboardCleanupCallback
_ -> \Proxy# "unwrap"
_ -> Int
0