packages feed

dear-imgui-raw-1.0.0: src/DearImGui/Raw/ImGuiWindowClass.hsc

{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE PatternSynonyms #-}

-- This file was generated by dear-bindings-ffi. Do not edit by hand.

module DearImGui.Raw.ImGuiWindowClass
  ( ImGuiWindowClass (..)
  , destroy
  , init
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID)
import DearImGui.Raw.Enums.ImGuiDockNodeFlags (ImGuiDockNodeFlags)
import DearImGui.Raw.Enums.ImGuiTabItemFlags (ImGuiTabItemFlags)
import DearImGui.Raw.Enums.ImGuiViewportFlags (ImGuiViewportFlags)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Ptr (Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))
import Prelude hiding (init)

#include "dcimgui_nodefaultargfunctions.h"

-- structs (opaque)

data {-# CTYPE "dcimgui_nodefaultargfunctions.h" "ImGuiWindowClass" #-} ImGuiWindowClass = ImGuiWindowClass
  { classId :: ImGuiID
  , parentViewportId :: ImGuiID
  , focusRouteParentWindowId :: ImGuiID
  , viewportFlagsOverrideSet :: ImGuiViewportFlags
  , viewportFlagsOverrideClear :: ImGuiViewportFlags
  , tabItemFlagsOverrideSet :: ImGuiTabItemFlags
  , dockNodeFlagsOverrideSet :: ImGuiDockNodeFlags
  , dockingAlwaysTabBar :: CBool
  , dockingAllowUnclassed :: CBool
  , platformIconData :: Ptr ()
  }
  deriving (Eq, Show)
instance Storable ImGuiWindowClass where
  sizeOf _    = #{size ImGuiWindowClass}
  alignment _ = #{alignment ImGuiWindowClass}
  peek p = ImGuiWindowClass <$> #{peek ImGuiWindowClass, ClassId} p <*> #{peek ImGuiWindowClass, ParentViewportId} p <*> #{peek ImGuiWindowClass, FocusRouteParentWindowId} p <*> #{peek ImGuiWindowClass, ViewportFlagsOverrideSet} p <*> #{peek ImGuiWindowClass, ViewportFlagsOverrideClear} p <*> #{peek ImGuiWindowClass, TabItemFlagsOverrideSet} p <*> #{peek ImGuiWindowClass, DockNodeFlagsOverrideSet} p <*> #{peek ImGuiWindowClass, DockingAlwaysTabBar} p <*> #{peek ImGuiWindowClass, DockingAllowUnclassed} p <*> #{peek ImGuiWindowClass, PlatformIconData} p
  poke p v = do
    #{poke ImGuiWindowClass, ClassId} p v.classId
    #{poke ImGuiWindowClass, ParentViewportId} p v.parentViewportId
    #{poke ImGuiWindowClass, FocusRouteParentWindowId} p v.focusRouteParentWindowId
    #{poke ImGuiWindowClass, ViewportFlagsOverrideSet} p v.viewportFlagsOverrideSet
    #{poke ImGuiWindowClass, ViewportFlagsOverrideClear} p v.viewportFlagsOverrideClear
    #{poke ImGuiWindowClass, TabItemFlagsOverrideSet} p v.tabItemFlagsOverrideSet
    #{poke ImGuiWindowClass, DockNodeFlagsOverrideSet} p v.dockNodeFlagsOverrideSet
    #{poke ImGuiWindowClass, DockingAlwaysTabBar} p v.dockingAlwaysTabBar
    #{poke ImGuiWindowClass, DockingAllowUnclassed} p v.dockingAllowUnclassed
    #{poke ImGuiWindowClass, PlatformIconData} p v.platformIconData

instance HasField "classId" (Ptr ImGuiWindowClass) (Ptr ImGuiID) where
  getField = #{ptr ImGuiWindowClass, ClassId}

instance HasField "parentViewportId" (Ptr ImGuiWindowClass) (Ptr ImGuiID) where
  getField = #{ptr ImGuiWindowClass, ParentViewportId}

instance HasField "focusRouteParentWindowId" (Ptr ImGuiWindowClass) (Ptr ImGuiID) where
  getField = #{ptr ImGuiWindowClass, FocusRouteParentWindowId}

instance HasField "viewportFlagsOverrideSet" (Ptr ImGuiWindowClass) (Ptr ImGuiViewportFlags) where
  getField = #{ptr ImGuiWindowClass, ViewportFlagsOverrideSet}

instance HasField "viewportFlagsOverrideClear" (Ptr ImGuiWindowClass) (Ptr ImGuiViewportFlags) where
  getField = #{ptr ImGuiWindowClass, ViewportFlagsOverrideClear}

instance HasField "tabItemFlagsOverrideSet" (Ptr ImGuiWindowClass) (Ptr ImGuiTabItemFlags) where
  getField = #{ptr ImGuiWindowClass, TabItemFlagsOverrideSet}

instance HasField "dockNodeFlagsOverrideSet" (Ptr ImGuiWindowClass) (Ptr ImGuiDockNodeFlags) where
  getField = #{ptr ImGuiWindowClass, DockNodeFlagsOverrideSet}

instance HasField "dockingAlwaysTabBar" (Ptr ImGuiWindowClass) (Ptr CBool) where
  getField = #{ptr ImGuiWindowClass, DockingAlwaysTabBar}

instance HasField "dockingAllowUnclassed" (Ptr ImGuiWindowClass) (Ptr CBool) where
  getField = #{ptr ImGuiWindowClass, DockingAllowUnclassed}

instance HasField "platformIconData" (Ptr ImGuiWindowClass) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiWindowClass, PlatformIconData}

foreign import capi unsafe "DearImGuiWrappers.h ImGuiWindowClass_Init_wrap"
  init
    :: Ptr ImGuiWindowClass
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGuiWindowClass_Destroy_wrap"
  destroy
    :: Ptr ImGuiWindowClass
    -> IO ()

withDefault :: (Ptr ImGuiWindowClass -> IO a) -> IO a
withDefault k = alloca $ \p -> bracket_ (init p) (destroy p) (k p)