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

-- | SDL offers a way to add items to the \"system tray\" (more correctly called the \"notification area\" on Windows). On platforms that offer this concept, an SDL app can add a tray icon, submenus, checkboxes, and clickable entries, and register a callback that is fired when the user clicks on these pieces. An opaque handle representing a toplevel system tray object.
--
--     @since 3.2.0
module SDL3.Sys.Bindgen.Tray (
  SDL3.Sys.Bindgen.Tray.SDL_Tray,
  SDL3.Sys.Bindgen.Tray.SDL_TrayMenu,
  SDL3.Sys.Bindgen.Tray.SDL_TrayEntry,
  SDL3.Sys.Bindgen.Tray.SDL_TrayEntryFlags (..),
  SDL3.Sys.Bindgen.Tray.sDL_TRAYENTRY_BUTTON,
  SDL3.Sys.Bindgen.Tray.sDL_TRAYENTRY_CHECKBOX,
  SDL3.Sys.Bindgen.Tray.sDL_TRAYENTRY_SUBMENU,
  SDL3.Sys.Bindgen.Tray.sDL_TRAYENTRY_DISABLED,
  SDL3.Sys.Bindgen.Tray.sDL_TRAYENTRY_CHECKED,
  SDL3.Sys.Bindgen.Tray.SDL_TrayCallback_Aux (..),
  SDL3.Sys.Bindgen.Tray.SDL_TrayCallback (..),
)
where

import Prelude (Bounded, Enum, Eq, IO, Integral, Num, Ord, Read, Real, Show, fmap, type (~))

import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField
import SDL3.Sys.Bindgen.Stdinc qualified

-- | [C declaration]: @struct SDL_Tray@, defined at @SDL3\/SDL_tray.h 51:16@
data SDL_Tray

-- | An opaque handle representing a menu\/submenu on a system tray object.
--
--     @since 3.2.0
--
--     [C declaration]: @struct SDL_TrayMenu@, defined at @SDL3\/SDL_tray.h 58:16@
data SDL_TrayMenu

-- | An opaque handle representing an entry on a system tray object.
--
--     @since 3.2.0
--
--     [C declaration]: @struct SDL_TrayEntry@, defined at @SDL3\/SDL_tray.h 65:16@
data SDL_TrayEntry

-- | Flags that control the creation of system tray entries.
--
--     Some of these flags are required; exactly one of them must be specified at the time a tray entry is created. Other flags are optional; zero or more of those can be OR\'ed together with the required flag.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_InsertTrayEntryAt'
--
--     [C declaration]: @SDL_TrayEntryFlags@, defined at @SDL3\/SDL_tray.h 78:16@
newtype SDL_TrayEntryFlags = SDL_TrayEntryFlags
  { SDL_TrayEntryFlags -> Uint32
unwrap :: SDL3.Sys.Bindgen.Stdinc.Uint32
  }
  deriving stock ((forall x. SDL_TrayEntryFlags -> Rep SDL_TrayEntryFlags x)
-> (forall x. Rep SDL_TrayEntryFlags x -> SDL_TrayEntryFlags)
-> Generic SDL_TrayEntryFlags
forall x. Rep SDL_TrayEntryFlags x -> SDL_TrayEntryFlags
forall x. SDL_TrayEntryFlags -> Rep SDL_TrayEntryFlags x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_TrayEntryFlags -> Rep SDL_TrayEntryFlags x
from :: forall x. SDL_TrayEntryFlags -> Rep SDL_TrayEntryFlags x
$cto :: forall x. Rep SDL_TrayEntryFlags x -> SDL_TrayEntryFlags
to :: forall x. Rep SDL_TrayEntryFlags x -> SDL_TrayEntryFlags
BG.Generic, SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
(SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool)
-> Eq SDL_TrayEntryFlags
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
== :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
$c/= :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
/= :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
Eq, Eq SDL_TrayEntryFlags
Eq SDL_TrayEntryFlags =>
(SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Ordering)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> Ord SDL_TrayEntryFlags
SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Ordering
SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
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_TrayEntryFlags -> SDL_TrayEntryFlags -> Ordering
compare :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Ordering
$c< :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
< :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
$c<= :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
<= :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
$c> :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
> :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
$c>= :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
>= :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> Bool
$cmax :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
max :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cmin :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
min :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
Ord, ReadPrec [SDL_TrayEntryFlags]
ReadPrec SDL_TrayEntryFlags
Int -> ReadS SDL_TrayEntryFlags
ReadS [SDL_TrayEntryFlags]
(Int -> ReadS SDL_TrayEntryFlags)
-> ReadS [SDL_TrayEntryFlags]
-> ReadPrec SDL_TrayEntryFlags
-> ReadPrec [SDL_TrayEntryFlags]
-> Read SDL_TrayEntryFlags
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS SDL_TrayEntryFlags
readsPrec :: Int -> ReadS SDL_TrayEntryFlags
$creadList :: ReadS [SDL_TrayEntryFlags]
readList :: ReadS [SDL_TrayEntryFlags]
$creadPrec :: ReadPrec SDL_TrayEntryFlags
readPrec :: ReadPrec SDL_TrayEntryFlags
$creadListPrec :: ReadPrec [SDL_TrayEntryFlags]
readListPrec :: ReadPrec [SDL_TrayEntryFlags]
Read, Int -> SDL_TrayEntryFlags -> ShowS
[SDL_TrayEntryFlags] -> ShowS
SDL_TrayEntryFlags -> String
(Int -> SDL_TrayEntryFlags -> ShowS)
-> (SDL_TrayEntryFlags -> String)
-> ([SDL_TrayEntryFlags] -> ShowS)
-> Show SDL_TrayEntryFlags
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_TrayEntryFlags -> ShowS
showsPrec :: Int -> SDL_TrayEntryFlags -> ShowS
$cshow :: SDL_TrayEntryFlags -> String
show :: SDL_TrayEntryFlags -> String
$cshowList :: [SDL_TrayEntryFlags] -> ShowS
showList :: [SDL_TrayEntryFlags] -> ShowS
Show)
  deriving newtype
    ( Word64 -> Int -> SDL_TrayEntryFlags
SDL_TrayEntryFlags -> Int -> Word64
(SDL_TrayEntryFlags -> Int -> Word64)
-> (Word64 -> Int -> SDL_TrayEntryFlags)
-> Bitfield SDL_TrayEntryFlags
forall a.
(a -> Int -> Word64) -> (Word64 -> Int -> a) -> Bitfield a
$cnarrow :: SDL_TrayEntryFlags -> Int -> Word64
narrow :: SDL_TrayEntryFlags -> Int -> Word64
$cextend :: Word64 -> Int -> SDL_TrayEntryFlags
extend :: Word64 -> Int -> SDL_TrayEntryFlags
BG.Bitfield
    , Eq SDL_TrayEntryFlags
SDL_TrayEntryFlags
Eq SDL_TrayEntryFlags =>
(SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> SDL_TrayEntryFlags
-> (Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> Bool)
-> (SDL_TrayEntryFlags -> Maybe Int)
-> (SDL_TrayEntryFlags -> Int)
-> (SDL_TrayEntryFlags -> Bool)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int)
-> Bits SDL_TrayEntryFlags
Int -> SDL_TrayEntryFlags
SDL_TrayEntryFlags -> Bool
SDL_TrayEntryFlags -> Int
SDL_TrayEntryFlags -> Maybe Int
SDL_TrayEntryFlags -> SDL_TrayEntryFlags
SDL_TrayEntryFlags -> Int -> Bool
SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
.&. :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$c.|. :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
.|. :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cxor :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
xor :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$ccomplement :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
complement :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cshift :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
shift :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$crotate :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
rotate :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$czeroBits :: SDL_TrayEntryFlags
zeroBits :: SDL_TrayEntryFlags
$cbit :: Int -> SDL_TrayEntryFlags
bit :: Int -> SDL_TrayEntryFlags
$csetBit :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
setBit :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$cclearBit :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
clearBit :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$ccomplementBit :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
complementBit :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$ctestBit :: SDL_TrayEntryFlags -> Int -> Bool
testBit :: SDL_TrayEntryFlags -> Int -> Bool
$cbitSizeMaybe :: SDL_TrayEntryFlags -> Maybe Int
bitSizeMaybe :: SDL_TrayEntryFlags -> Maybe Int
$cbitSize :: SDL_TrayEntryFlags -> Int
bitSize :: SDL_TrayEntryFlags -> Int
$cisSigned :: SDL_TrayEntryFlags -> Bool
isSigned :: SDL_TrayEntryFlags -> Bool
$cshiftL :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
shiftL :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$cunsafeShiftL :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
unsafeShiftL :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$cshiftR :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
shiftR :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$cunsafeShiftR :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
unsafeShiftR :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$crotateL :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
rotateL :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$crotateR :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
rotateR :: SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags
$cpopCount :: SDL_TrayEntryFlags -> Int
popCount :: SDL_TrayEntryFlags -> Int
BG.Bits
    , Bits SDL_TrayEntryFlags
Bits SDL_TrayEntryFlags =>
(SDL_TrayEntryFlags -> Int)
-> (SDL_TrayEntryFlags -> Int)
-> (SDL_TrayEntryFlags -> Int)
-> FiniteBits SDL_TrayEntryFlags
SDL_TrayEntryFlags -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: SDL_TrayEntryFlags -> Int
finiteBitSize :: SDL_TrayEntryFlags -> Int
$ccountLeadingZeros :: SDL_TrayEntryFlags -> Int
countLeadingZeros :: SDL_TrayEntryFlags -> Int
$ccountTrailingZeros :: SDL_TrayEntryFlags -> Int
countTrailingZeros :: SDL_TrayEntryFlags -> Int
BG.FiniteBits
    , FFIType SDL_TrayEntryFlags -> SDL_TrayEntryFlags
SDL_TrayEntryFlags -> FFIType SDL_TrayEntryFlags
(SDL_TrayEntryFlags -> FFIType SDL_TrayEntryFlags)
-> (FFIType SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> HasFFIType SDL_TrayEntryFlags
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_TrayEntryFlags -> FFIType SDL_TrayEntryFlags
toFFIType :: SDL_TrayEntryFlags -> FFIType SDL_TrayEntryFlags
$cfromFFIType :: FFIType SDL_TrayEntryFlags -> SDL_TrayEntryFlags
fromFFIType :: FFIType SDL_TrayEntryFlags -> SDL_TrayEntryFlags
BG.HasFFIType
    , Ord SDL_TrayEntryFlags
Ord SDL_TrayEntryFlags =>
((SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> [SDL_TrayEntryFlags])
-> ((SDL_TrayEntryFlags, SDL_TrayEntryFlags)
    -> SDL_TrayEntryFlags -> Int)
-> ((SDL_TrayEntryFlags, SDL_TrayEntryFlags)
    -> SDL_TrayEntryFlags -> Int)
-> ((SDL_TrayEntryFlags, SDL_TrayEntryFlags)
    -> SDL_TrayEntryFlags -> Bool)
-> ((SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> Int)
-> ((SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> Int)
-> Ix SDL_TrayEntryFlags
(SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> Int
(SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> [SDL_TrayEntryFlags]
(SDL_TrayEntryFlags, SDL_TrayEntryFlags)
-> SDL_TrayEntryFlags -> Bool
(SDL_TrayEntryFlags, SDL_TrayEntryFlags)
-> SDL_TrayEntryFlags -> Int
forall a.
Ord a =>
((a, a) -> [a])
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Bool)
-> ((a, a) -> Int)
-> ((a, a) -> Int)
-> Ix a
$crange :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> [SDL_TrayEntryFlags]
range :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> [SDL_TrayEntryFlags]
$cindex :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
-> SDL_TrayEntryFlags -> Int
index :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
-> SDL_TrayEntryFlags -> Int
$cunsafeIndex :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
-> SDL_TrayEntryFlags -> Int
unsafeIndex :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
-> SDL_TrayEntryFlags -> Int
$cinRange :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
-> SDL_TrayEntryFlags -> Bool
inRange :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
-> SDL_TrayEntryFlags -> Bool
$crangeSize :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> Int
rangeSize :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> Int
$cunsafeRangeSize :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> Int
unsafeRangeSize :: (SDL_TrayEntryFlags, SDL_TrayEntryFlags) -> Int
BG.Ix
    , Addr# -> Int# -> SDL_TrayEntryFlags
ByteArray# -> Int# -> SDL_TrayEntryFlags
Proxy SDL_TrayEntryFlags -> Int#
SDL_TrayEntryFlags -> Int#
(Proxy SDL_TrayEntryFlags -> Int#)
-> (SDL_TrayEntryFlags -> Int#)
-> (Proxy SDL_TrayEntryFlags -> Int#)
-> (SDL_TrayEntryFlags -> Int#)
-> (ByteArray# -> Int# -> SDL_TrayEntryFlags)
-> (forall s.
    MutableByteArray# s
    -> Int# -> State# s -> (# State# s, SDL_TrayEntryFlags #))
-> (forall s.
    MutableByteArray# s
    -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s)
-> (forall s.
    MutableByteArray# s
    -> Int# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s)
-> (Addr# -> Int# -> SDL_TrayEntryFlags)
-> (forall s.
    Addr# -> Int# -> State# s -> (# State# s, SDL_TrayEntryFlags #))
-> (forall s.
    Addr# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s)
-> (forall s.
    Addr#
    -> Int# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s)
-> Prim SDL_TrayEntryFlags
forall s.
Addr# -> Int# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
forall s.
Addr# -> Int# -> State# s -> (# State# s, SDL_TrayEntryFlags #)
forall s.
Addr# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_TrayEntryFlags #)
forall s.
MutableByteArray# s
-> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
forall a.
(Proxy a -> Int#)
-> (a -> Int#)
-> (Proxy a -> Int#)
-> (a -> Int#)
-> (ByteArray# -> Int# -> a)
-> (forall s.
    MutableByteArray# s -> Int# -> State# s -> (# State# s, a #))
-> (forall s.
    MutableByteArray# s -> Int# -> a -> State# s -> State# s)
-> (forall s.
    MutableByteArray# s -> Int# -> Int# -> a -> State# s -> State# s)
-> (Addr# -> Int# -> a)
-> (forall s. Addr# -> Int# -> State# s -> (# State# s, a #))
-> (forall s. Addr# -> Int# -> a -> State# s -> State# s)
-> (forall s. Addr# -> Int# -> Int# -> a -> State# s -> State# s)
-> Prim a
$csizeOfType# :: Proxy SDL_TrayEntryFlags -> Int#
sizeOfType# :: Proxy SDL_TrayEntryFlags -> Int#
$csizeOf# :: SDL_TrayEntryFlags -> Int#
sizeOf# :: SDL_TrayEntryFlags -> Int#
$calignmentOfType# :: Proxy SDL_TrayEntryFlags -> Int#
alignmentOfType# :: Proxy SDL_TrayEntryFlags -> Int#
$calignment# :: SDL_TrayEntryFlags -> Int#
alignment# :: SDL_TrayEntryFlags -> Int#
$cindexByteArray# :: ByteArray# -> Int# -> SDL_TrayEntryFlags
indexByteArray# :: ByteArray# -> Int# -> SDL_TrayEntryFlags
$creadByteArray# :: forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_TrayEntryFlags #)
readByteArray# :: forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_TrayEntryFlags #)
$cwriteByteArray# :: forall s.
MutableByteArray# s
-> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
writeByteArray# :: forall s.
MutableByteArray# s
-> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
$csetByteArray# :: forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
setByteArray# :: forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
$cindexOffAddr# :: Addr# -> Int# -> SDL_TrayEntryFlags
indexOffAddr# :: Addr# -> Int# -> SDL_TrayEntryFlags
$creadOffAddr# :: forall s.
Addr# -> Int# -> State# s -> (# State# s, SDL_TrayEntryFlags #)
readOffAddr# :: forall s.
Addr# -> Int# -> State# s -> (# State# s, SDL_TrayEntryFlags #)
$cwriteOffAddr# :: forall s.
Addr# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
writeOffAddr# :: forall s.
Addr# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
$csetOffAddr# :: forall s.
Addr# -> Int# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
setOffAddr# :: forall s.
Addr# -> Int# -> Int# -> SDL_TrayEntryFlags -> State# s -> State# s
BG.Prim
    , Ptr SDL_TrayEntryFlags -> IO SDL_TrayEntryFlags
Ptr SDL_TrayEntryFlags -> Int -> IO SDL_TrayEntryFlags
Ptr SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags -> IO ()
Ptr SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> IO ()
SDL_TrayEntryFlags -> Int
(SDL_TrayEntryFlags -> Int)
-> (SDL_TrayEntryFlags -> Int)
-> (Ptr SDL_TrayEntryFlags -> Int -> IO SDL_TrayEntryFlags)
-> (Ptr SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_TrayEntryFlags)
-> (forall b. Ptr b -> Int -> SDL_TrayEntryFlags -> IO ())
-> (Ptr SDL_TrayEntryFlags -> IO SDL_TrayEntryFlags)
-> (Ptr SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> IO ())
-> Storable SDL_TrayEntryFlags
forall b. Ptr b -> Int -> IO SDL_TrayEntryFlags
forall b. Ptr b -> Int -> SDL_TrayEntryFlags -> 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_TrayEntryFlags -> Int
sizeOf :: SDL_TrayEntryFlags -> Int
$calignment :: SDL_TrayEntryFlags -> Int
alignment :: SDL_TrayEntryFlags -> Int
$cpeekElemOff :: Ptr SDL_TrayEntryFlags -> Int -> IO SDL_TrayEntryFlags
peekElemOff :: Ptr SDL_TrayEntryFlags -> Int -> IO SDL_TrayEntryFlags
$cpokeElemOff :: Ptr SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags -> IO ()
pokeElemOff :: Ptr SDL_TrayEntryFlags -> Int -> SDL_TrayEntryFlags -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_TrayEntryFlags
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_TrayEntryFlags
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_TrayEntryFlags -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_TrayEntryFlags -> IO ()
$cpeek :: Ptr SDL_TrayEntryFlags -> IO SDL_TrayEntryFlags
peek :: Ptr SDL_TrayEntryFlags -> IO SDL_TrayEntryFlags
$cpoke :: Ptr SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> IO ()
poke :: Ptr SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> IO ()
BG.Storable
    , SDL_TrayEntryFlags
SDL_TrayEntryFlags
-> SDL_TrayEntryFlags -> Bounded SDL_TrayEntryFlags
forall a. a -> a -> Bounded a
$cminBound :: SDL_TrayEntryFlags
minBound :: SDL_TrayEntryFlags
$cmaxBound :: SDL_TrayEntryFlags
maxBound :: SDL_TrayEntryFlags
Bounded
    , Int -> SDL_TrayEntryFlags
SDL_TrayEntryFlags -> Int
SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
SDL_TrayEntryFlags -> SDL_TrayEntryFlags
SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
SDL_TrayEntryFlags
-> SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
(SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (Int -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> Int)
-> (SDL_TrayEntryFlags -> [SDL_TrayEntryFlags])
-> (SDL_TrayEntryFlags
    -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags])
-> (SDL_TrayEntryFlags
    -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags])
-> (SDL_TrayEntryFlags
    -> SDL_TrayEntryFlags
    -> SDL_TrayEntryFlags
    -> [SDL_TrayEntryFlags])
-> Enum SDL_TrayEntryFlags
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
succ :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cpred :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
pred :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$ctoEnum :: Int -> SDL_TrayEntryFlags
toEnum :: Int -> SDL_TrayEntryFlags
$cfromEnum :: SDL_TrayEntryFlags -> Int
fromEnum :: SDL_TrayEntryFlags -> Int
$cenumFrom :: SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
enumFrom :: SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
$cenumFromThen :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
enumFromThen :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
$cenumFromTo :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
enumFromTo :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
$cenumFromThenTo :: SDL_TrayEntryFlags
-> SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
enumFromThenTo :: SDL_TrayEntryFlags
-> SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> [SDL_TrayEntryFlags]
Enum
    , Enum SDL_TrayEntryFlags
Real SDL_TrayEntryFlags
(Real SDL_TrayEntryFlags, Enum SDL_TrayEntryFlags) =>
(SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags
    -> SDL_TrayEntryFlags -> (SDL_TrayEntryFlags, SDL_TrayEntryFlags))
-> (SDL_TrayEntryFlags
    -> SDL_TrayEntryFlags -> (SDL_TrayEntryFlags, SDL_TrayEntryFlags))
-> (SDL_TrayEntryFlags -> Integer)
-> Integral SDL_TrayEntryFlags
SDL_TrayEntryFlags -> Integer
SDL_TrayEntryFlags
-> SDL_TrayEntryFlags -> (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
quot :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$crem :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
rem :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cdiv :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
div :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cmod :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
mod :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cquotRem :: SDL_TrayEntryFlags
-> SDL_TrayEntryFlags -> (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
quotRem :: SDL_TrayEntryFlags
-> SDL_TrayEntryFlags -> (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
$cdivMod :: SDL_TrayEntryFlags
-> SDL_TrayEntryFlags -> (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
divMod :: SDL_TrayEntryFlags
-> SDL_TrayEntryFlags -> (SDL_TrayEntryFlags, SDL_TrayEntryFlags)
$ctoInteger :: SDL_TrayEntryFlags -> Integer
toInteger :: SDL_TrayEntryFlags -> Integer
Integral
    , Ptr SDL_TrayEntryFlags -> IO SDL_TrayEntryFlags
(Ptr SDL_TrayEntryFlags -> IO SDL_TrayEntryFlags)
-> ReadRaw SDL_TrayEntryFlags
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_TrayEntryFlags -> IO SDL_TrayEntryFlags
readRaw :: Ptr SDL_TrayEntryFlags -> IO SDL_TrayEntryFlags
Marshal.ReadRaw
    , Proxy SDL_TrayEntryFlags -> Int
(Proxy SDL_TrayEntryFlags -> Int)
-> (Proxy SDL_TrayEntryFlags -> Int)
-> StaticSize SDL_TrayEntryFlags
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_TrayEntryFlags -> Int
staticSizeOf :: Proxy SDL_TrayEntryFlags -> Int
$cstaticAlignment :: Proxy SDL_TrayEntryFlags -> Int
staticAlignment :: Proxy SDL_TrayEntryFlags -> Int
Marshal.StaticSize
    , Ptr SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> IO ()
(Ptr SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> IO ())
-> WriteRaw SDL_TrayEntryFlags
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> IO ()
writeRaw :: Ptr SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> IO ()
Marshal.WriteRaw
    , Integer -> SDL_TrayEntryFlags
SDL_TrayEntryFlags -> SDL_TrayEntryFlags
SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
(SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (SDL_TrayEntryFlags -> SDL_TrayEntryFlags)
-> (Integer -> SDL_TrayEntryFlags)
-> Num SDL_TrayEntryFlags
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
+ :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$c- :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
- :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$c* :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
* :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cnegate :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
negate :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cabs :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
abs :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$csignum :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
signum :: SDL_TrayEntryFlags -> SDL_TrayEntryFlags
$cfromInteger :: Integer -> SDL_TrayEntryFlags
fromInteger :: Integer -> SDL_TrayEntryFlags
Num
    , Num SDL_TrayEntryFlags
Ord SDL_TrayEntryFlags
(Num SDL_TrayEntryFlags, Ord SDL_TrayEntryFlags) =>
(SDL_TrayEntryFlags -> Rational) -> Real SDL_TrayEntryFlags
SDL_TrayEntryFlags -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: SDL_TrayEntryFlags -> Rational
toRational :: SDL_TrayEntryFlags -> Rational
Real
    )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "unwrap" SDL_TrayEntryFlags ty
  where
  hasField :: SDL_TrayEntryFlags -> (ty -> SDL_TrayEntryFlags, ty)
hasField =
    \SDL_TrayEntryFlags
x0 ->
      ( \ty
y1 ->
          SDL_TrayEntryFlags{unwrap :: Uint32
unwrap = ty
Uint32
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_TrayEntryFlags
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.HasField "unwrap" (BG.Ptr SDL_TrayEntryFlags) (BG.Ptr ty)
  where
  getField :: Ptr SDL_TrayEntryFlags -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_TrayEntryFlags
-> Ptr (CFieldType SDL_TrayEntryFlags "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_TrayEntryFlags "unwrap" where
  type
    CFieldType SDL_TrayEntryFlags "unwrap" =
      SDL3.Sys.Bindgen.Stdinc.Uint32

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

-- | Make the entry a simple button. Required.
--
--     [C declaration]: @macro SDL_TRAYENTRY_BUTTON@, defined at @SDL3\/SDL_tray.h 80:9@
sDL_TRAYENTRY_BUTTON :: BG.CUInt
sDL_TRAYENTRY_BUTTON :: CUInt
sDL_TRAYENTRY_BUTTON = (CUInt
1 :: BG.CUInt)

-- | Make the entry a checkbox. Required.
--
--     [C declaration]: @macro SDL_TRAYENTRY_CHECKBOX@, defined at @SDL3\/SDL_tray.h 81:9@
sDL_TRAYENTRY_CHECKBOX :: BG.CUInt
sDL_TRAYENTRY_CHECKBOX :: CUInt
sDL_TRAYENTRY_CHECKBOX = (CUInt
2 :: BG.CUInt)

-- | Prepare the entry to have a submenu. Required
--
--     [C declaration]: @macro SDL_TRAYENTRY_SUBMENU@, defined at @SDL3\/SDL_tray.h 82:9@
sDL_TRAYENTRY_SUBMENU :: BG.CUInt
sDL_TRAYENTRY_SUBMENU :: CUInt
sDL_TRAYENTRY_SUBMENU = (CUInt
4 :: BG.CUInt)

-- | Make the entry disabled. Optional.
--
--     [C declaration]: @macro SDL_TRAYENTRY_DISABLED@, defined at @SDL3\/SDL_tray.h 83:9@
sDL_TRAYENTRY_DISABLED :: BG.CUInt
sDL_TRAYENTRY_DISABLED :: CUInt
sDL_TRAYENTRY_DISABLED = (CUInt
2147483648 :: BG.CUInt)

-- | Make the entry checked. This is valid only for checkboxes. Optional.
--
--     [C declaration]: @macro SDL_TRAYENTRY_CHECKED@, defined at @SDL3\/SDL_tray.h 84:9@
sDL_TRAYENTRY_CHECKED :: BG.CUInt
sDL_TRAYENTRY_CHECKED :: CUInt
sDL_TRAYENTRY_CHECKED = (CUInt
1073741824 :: BG.CUInt)

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

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

-- __unique:__ @toSDL_TrayCallback_Aux@
hs_bindgen_6a8b13b7097ccaf5
  :: SDL_TrayCallback_Aux
  -> IO (BG.FunPtr SDL_TrayCallback_Aux)
hs_bindgen_6a8b13b7097ccaf5 :: SDL_TrayCallback_Aux -> IO (FunPtr SDL_TrayCallback_Aux)
hs_bindgen_6a8b13b7097ccaf5 =
  \SDL_TrayCallback_Aux
fun0 ->
    (FunPtr (Ptr Void -> Ptr Void -> IO ())
 -> FunPtr SDL_TrayCallback_Aux)
-> IO (FunPtr (Ptr Void -> Ptr Void -> IO ()))
-> IO (FunPtr SDL_TrayCallback_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 -> IO ())
-> FunPtr SDL_TrayCallback_Aux
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr
      ( (Ptr Void -> Ptr Void -> IO ())
-> IO (FunPtr (Ptr Void -> Ptr Void -> IO ()))
hs_bindgen_6a8b13b7097ccaf5_base
          ( \Ptr Void
x1 ->
              \Ptr Void
x2 ->
                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_TrayCallback_Aux
fun0 (FFIType (Ptr Void) -> Ptr Void
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr Void)
x1) (FFIType (Ptr SDL_TrayEntry) -> Ptr SDL_TrayEntry
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr SDL_TrayEntry)
x2)
          )
      )

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

-- __unique:__ @fromSDL_TrayCallback_Aux@
hs_bindgen_0aa010ee3dd2ffa9
  :: BG.FunPtr SDL_TrayCallback_Aux
  -> SDL_TrayCallback_Aux
hs_bindgen_0aa010ee3dd2ffa9 :: FunPtr SDL_TrayCallback_Aux -> SDL_TrayCallback_Aux
hs_bindgen_0aa010ee3dd2ffa9 =
  \FunPtr SDL_TrayCallback_Aux
funPtr0 ->
    (Ptr Void -> Ptr SDL_TrayEntry -> IO ()) -> SDL_TrayCallback_Aux
SDL_TrayCallback_Aux
      ( \Ptr Void
x1 ->
          \Ptr SDL_TrayEntry
x2 ->
            FunPtr (Ptr Void -> Ptr Void -> IO ())
-> Ptr Void -> Ptr Void -> IO ()
hs_bindgen_0aa010ee3dd2ffa9_base (FunPtr SDL_TrayCallback_Aux
-> FunPtr (Ptr Void -> Ptr Void -> IO ())
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr FunPtr SDL_TrayCallback_Aux
funPtr0) (Ptr Void -> FFIType (Ptr Void)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr Void
x1) (Ptr SDL_TrayEntry -> FFIType (Ptr SDL_TrayEntry)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr SDL_TrayEntry
x2)
      )

instance BG.ToFunPtr SDL_TrayCallback_Aux where
  toFunPtr :: SDL_TrayCallback_Aux -> IO (FunPtr SDL_TrayCallback_Aux)
toFunPtr = SDL_TrayCallback_Aux -> IO (FunPtr SDL_TrayCallback_Aux)
hs_bindgen_6a8b13b7097ccaf5

instance BG.FromFunPtr SDL_TrayCallback_Aux where
  fromFunPtr :: FunPtr SDL_TrayCallback_Aux -> SDL_TrayCallback_Aux
fromFunPtr = FunPtr SDL_TrayCallback_Aux -> SDL_TrayCallback_Aux
hs_bindgen_0aa010ee3dd2ffa9

instance
  (ty ~ (BG.Ptr BG.Void -> BG.Ptr SDL_TrayEntry -> IO ()))
  => BG.CompatHasField.HasField "unwrap" SDL_TrayCallback_Aux ty
  where
  hasField :: SDL_TrayCallback_Aux -> (ty -> SDL_TrayCallback_Aux, ty)
hasField =
    \SDL_TrayCallback_Aux
x0 ->
      ( \ty
y1 ->
          SDL_TrayCallback_Aux{unwrap :: Ptr Void -> Ptr SDL_TrayEntry -> IO ()
unwrap = ty
Ptr Void -> Ptr SDL_TrayEntry -> 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_TrayCallback_Aux
x0
      )

instance
  (ty ~ (BG.Ptr BG.Void -> BG.Ptr SDL_TrayEntry -> IO ()))
  => BG.HasField "unwrap" (BG.Ptr SDL_TrayCallback_Aux) (BG.Ptr ty)
  where
  getField :: Ptr SDL_TrayCallback_Aux -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_TrayCallback_Aux
-> Ptr (CFieldType SDL_TrayCallback_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_TrayCallback_Aux "unwrap" where
  type
    CFieldType SDL_TrayCallback_Aux "unwrap" =
      BG.Ptr BG.Void -> BG.Ptr SDL_TrayEntry -> IO ()

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

-- | A callback that is invoked when a tray entry is selected.
--
--     [@userdata@]: an optional pointer to pass extra data to the callback when it will be invoked.
--
--     [@entry@]: the tray entry that was selected.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_SetTrayEntryCallback'
--
--     [C declaration]: @SDL_TrayCallback@, defined at @SDL3\/SDL_tray.h 97:24@
newtype SDL_TrayCallback = SDL_TrayCallback
  { SDL_TrayCallback -> FunPtr SDL_TrayCallback_Aux
unwrap :: BG.FunPtr SDL_TrayCallback_Aux
  }
  deriving stock ((forall x. SDL_TrayCallback -> Rep SDL_TrayCallback x)
-> (forall x. Rep SDL_TrayCallback x -> SDL_TrayCallback)
-> Generic SDL_TrayCallback
forall x. Rep SDL_TrayCallback x -> SDL_TrayCallback
forall x. SDL_TrayCallback -> Rep SDL_TrayCallback x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_TrayCallback -> Rep SDL_TrayCallback x
from :: forall x. SDL_TrayCallback -> Rep SDL_TrayCallback x
$cto :: forall x. Rep SDL_TrayCallback x -> SDL_TrayCallback
to :: forall x. Rep SDL_TrayCallback x -> SDL_TrayCallback
BG.Generic, SDL_TrayCallback -> SDL_TrayCallback -> Bool
(SDL_TrayCallback -> SDL_TrayCallback -> Bool)
-> (SDL_TrayCallback -> SDL_TrayCallback -> Bool)
-> Eq SDL_TrayCallback
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
== :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
$c/= :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
/= :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
Eq, Eq SDL_TrayCallback
Eq SDL_TrayCallback =>
(SDL_TrayCallback -> SDL_TrayCallback -> Ordering)
-> (SDL_TrayCallback -> SDL_TrayCallback -> Bool)
-> (SDL_TrayCallback -> SDL_TrayCallback -> Bool)
-> (SDL_TrayCallback -> SDL_TrayCallback -> Bool)
-> (SDL_TrayCallback -> SDL_TrayCallback -> Bool)
-> (SDL_TrayCallback -> SDL_TrayCallback -> SDL_TrayCallback)
-> (SDL_TrayCallback -> SDL_TrayCallback -> SDL_TrayCallback)
-> Ord SDL_TrayCallback
SDL_TrayCallback -> SDL_TrayCallback -> Bool
SDL_TrayCallback -> SDL_TrayCallback -> Ordering
SDL_TrayCallback -> SDL_TrayCallback -> SDL_TrayCallback
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_TrayCallback -> SDL_TrayCallback -> Ordering
compare :: SDL_TrayCallback -> SDL_TrayCallback -> Ordering
$c< :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
< :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
$c<= :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
<= :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
$c> :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
> :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
$c>= :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
>= :: SDL_TrayCallback -> SDL_TrayCallback -> Bool
$cmax :: SDL_TrayCallback -> SDL_TrayCallback -> SDL_TrayCallback
max :: SDL_TrayCallback -> SDL_TrayCallback -> SDL_TrayCallback
$cmin :: SDL_TrayCallback -> SDL_TrayCallback -> SDL_TrayCallback
min :: SDL_TrayCallback -> SDL_TrayCallback -> SDL_TrayCallback
Ord, Int -> SDL_TrayCallback -> ShowS
[SDL_TrayCallback] -> ShowS
SDL_TrayCallback -> String
(Int -> SDL_TrayCallback -> ShowS)
-> (SDL_TrayCallback -> String)
-> ([SDL_TrayCallback] -> ShowS)
-> Show SDL_TrayCallback
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_TrayCallback -> ShowS
showsPrec :: Int -> SDL_TrayCallback -> ShowS
$cshow :: SDL_TrayCallback -> String
show :: SDL_TrayCallback -> String
$cshowList :: [SDL_TrayCallback] -> ShowS
showList :: [SDL_TrayCallback] -> ShowS
Show)
  deriving newtype
    ( FFIType SDL_TrayCallback -> SDL_TrayCallback
SDL_TrayCallback -> FFIType SDL_TrayCallback
(SDL_TrayCallback -> FFIType SDL_TrayCallback)
-> (FFIType SDL_TrayCallback -> SDL_TrayCallback)
-> HasFFIType SDL_TrayCallback
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_TrayCallback -> FFIType SDL_TrayCallback
toFFIType :: SDL_TrayCallback -> FFIType SDL_TrayCallback
$cfromFFIType :: FFIType SDL_TrayCallback -> SDL_TrayCallback
fromFFIType :: FFIType SDL_TrayCallback -> SDL_TrayCallback
BG.HasFFIType
    , Ptr SDL_TrayCallback -> IO SDL_TrayCallback
Ptr SDL_TrayCallback -> Int -> IO SDL_TrayCallback
Ptr SDL_TrayCallback -> Int -> SDL_TrayCallback -> IO ()
Ptr SDL_TrayCallback -> SDL_TrayCallback -> IO ()
SDL_TrayCallback -> Int
(SDL_TrayCallback -> Int)
-> (SDL_TrayCallback -> Int)
-> (Ptr SDL_TrayCallback -> Int -> IO SDL_TrayCallback)
-> (Ptr SDL_TrayCallback -> Int -> SDL_TrayCallback -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_TrayCallback)
-> (forall b. Ptr b -> Int -> SDL_TrayCallback -> IO ())
-> (Ptr SDL_TrayCallback -> IO SDL_TrayCallback)
-> (Ptr SDL_TrayCallback -> SDL_TrayCallback -> IO ())
-> Storable SDL_TrayCallback
forall b. Ptr b -> Int -> IO SDL_TrayCallback
forall b. Ptr b -> Int -> SDL_TrayCallback -> 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_TrayCallback -> Int
sizeOf :: SDL_TrayCallback -> Int
$calignment :: SDL_TrayCallback -> Int
alignment :: SDL_TrayCallback -> Int
$cpeekElemOff :: Ptr SDL_TrayCallback -> Int -> IO SDL_TrayCallback
peekElemOff :: Ptr SDL_TrayCallback -> Int -> IO SDL_TrayCallback
$cpokeElemOff :: Ptr SDL_TrayCallback -> Int -> SDL_TrayCallback -> IO ()
pokeElemOff :: Ptr SDL_TrayCallback -> Int -> SDL_TrayCallback -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_TrayCallback
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_TrayCallback
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_TrayCallback -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_TrayCallback -> IO ()
$cpeek :: Ptr SDL_TrayCallback -> IO SDL_TrayCallback
peek :: Ptr SDL_TrayCallback -> IO SDL_TrayCallback
$cpoke :: Ptr SDL_TrayCallback -> SDL_TrayCallback -> IO ()
poke :: Ptr SDL_TrayCallback -> SDL_TrayCallback -> IO ()
BG.Storable
    , Ptr SDL_TrayCallback -> IO SDL_TrayCallback
(Ptr SDL_TrayCallback -> IO SDL_TrayCallback)
-> ReadRaw SDL_TrayCallback
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_TrayCallback -> IO SDL_TrayCallback
readRaw :: Ptr SDL_TrayCallback -> IO SDL_TrayCallback
Marshal.ReadRaw
    , Proxy SDL_TrayCallback -> Int
(Proxy SDL_TrayCallback -> Int)
-> (Proxy SDL_TrayCallback -> Int) -> StaticSize SDL_TrayCallback
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_TrayCallback -> Int
staticSizeOf :: Proxy SDL_TrayCallback -> Int
$cstaticAlignment :: Proxy SDL_TrayCallback -> Int
staticAlignment :: Proxy SDL_TrayCallback -> Int
Marshal.StaticSize
    , Ptr SDL_TrayCallback -> SDL_TrayCallback -> IO ()
(Ptr SDL_TrayCallback -> SDL_TrayCallback -> IO ())
-> WriteRaw SDL_TrayCallback
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_TrayCallback -> SDL_TrayCallback -> IO ()
writeRaw :: Ptr SDL_TrayCallback -> SDL_TrayCallback -> IO ()
Marshal.WriteRaw
    )

instance
  (ty ~ BG.FunPtr SDL_TrayCallback_Aux)
  => BG.CompatHasField.HasField "unwrap" SDL_TrayCallback ty
  where
  hasField :: SDL_TrayCallback -> (ty -> SDL_TrayCallback, ty)
hasField =
    \SDL_TrayCallback
x0 ->
      ( \ty
y1 ->
          SDL_TrayCallback{unwrap :: FunPtr SDL_TrayCallback_Aux
unwrap = ty
FunPtr SDL_TrayCallback_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_TrayCallback
x0
      )

instance
  (ty ~ BG.FunPtr SDL_TrayCallback_Aux)
  => BG.HasField "unwrap" (BG.Ptr SDL_TrayCallback) (BG.Ptr ty)
  where
  getField :: Ptr SDL_TrayCallback -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_TrayCallback
-> Ptr (CFieldType SDL_TrayCallback "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_TrayCallback "unwrap" where
  type
    CFieldType SDL_TrayCallback "unwrap" =
      BG.FunPtr SDL_TrayCallback_Aux

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