Skip to content
Snippets Groups Projects
InlineC.hs 1.16 KiB
Newer Older
Jens Nolte's avatar
Jens Nolte committed
{-# LANGUAGE TemplateHaskell #-}

module Glest.Utils.InlineC (
  ctx
) where

import Data.Map.Strict as Map
import Glest.Egl.Types
Jens Nolte's avatar
Jens Nolte committed
import Graphics.GL.Types
import Foreign
Jens Nolte's avatar
Jens Nolte committed
import Language.C.Inline.Context
import Language.C.Types
import Language.Haskell.TH
import Quasar.Prelude
import System.Posix.Types (COff(..))

ctx :: Context
ctx = baseCtx <> extraTypesCtx

emptyCtx :: Context
emptyCtx = Context {
  ctxTypesTable = mempty,
  ctxAntiQuoters = mempty,
  ctxOutput = mempty,
  ctxForeignSrcLang = Nothing,
  ctxEnableCpp = False
}

extraTypesCtx :: Context
extraTypesCtx =
  emptyCtx {
    ctxTypesTable = Map.fromList types
  }

types :: [(TypeSpecifier, TypeQ)]
types = [
  (TypeName "off_t", [t|COff|]),

Jens Nolte's avatar
Jens Nolte committed
  (TypeName "GLuint", [t|GLuint|]),

  (TypeName "EGLenum", [t|EGLenum|]),
Jens Nolte's avatar
Jens Nolte committed
  (TypeName "EGLint", [t|EGLint|]),
  (TypeName "EGLBoolean", [t|EGLBoolean|]),
  (TypeName "EGLConfig", [t|EGLConfig|]),
  (TypeName "EGLContext", [t|EGLContext|]),
  (TypeName "EGLDisplay", [t|EGLDisplay|]),
Jens Nolte's avatar
Jens Nolte committed
  (TypeName "EGLDeviceEXT", [t|EGLDeviceEXT|]),
  (TypeName "EGLImage", [t|EGLImage|]),
  (TypeName "EGLLabel", [t|EGLLabel|]),
  (TypeName "EGLDEBUGPROCKHR", [t|FunPtr EglDebugCallback|])
Jens Nolte's avatar
Jens Nolte committed
  ]