{-# language DerivingStrategies #-}
{-# language DuplicateRecordFields #-}
{-# language GeneralizedNewtypeDeriving #-}
{-# language NamedFieldPuns #-}
{-# language OverloadedStrings #-}
{-# language PatternSynonyms #-}
{-# language TemplateHaskell #-}

module DearImGui.Context where

-- containers
import qualified Data.Map.Strict as Map

-- inline-c
import Language.C.Inline.Context
  ( Context(..) )
import Language.C.Types
  ( pattern TypeName )

-- dear-imgui
import DearImGui.Structs

-- dear-imgui-generator
import DearImGui.Generator
  ( enumerationsTypesTable )

--------------------------------------------------------------------------------

imguiContext :: Context
imguiContext :: Context
imguiContext = Context
forall a. Monoid a => a
mempty
  { ctxTypesTable :: TypesTable
ctxTypesTable = TypesTable
enumerationsTypesTable TypesTable -> TypesTable -> TypesTable
forall a. Semigroup a => a -> a -> a
<>
    [(TypeSpecifier, TypeQ)] -> TypesTable
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
      [ ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImVec2", [t| ImVec2 |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImVec3", [t| ImVec3 |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImVec4", [t| ImVec4 |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImU32", [t| ImU32 |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImWchar", [t| ImWchar |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImDrawList", [t| ImDrawList |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImGuiContext", [t| ImGuiContext |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImFont", [t| ImFont |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImFontConfig", [t| ImFontConfig |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImFontGlyphRangesBuilder", [t| ImFontGlyphRangesBuilder |] )
      , ( CIdentifier -> TypeSpecifier
TypeName CIdentifier
"ImGuiListClipper", [t| ImGuiListClipper |] )
      ]
  }