{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}

module Language.C.Inline.ObjC
  ( module Language.C.Inline
  , objcCtx
  , CId, Id(..)
  ) where

import qualified Language.Haskell.TH.Syntax as TH
import qualified Language.C.Types as CT
import Foreign

import           Language.C.Inline
import           Language.C.Inline.Context

import qualified Data.Map as Map

objcCtx :: Context
objcCtx :: Context
objcCtx = Context
baseCtx forall a. Semigroup a => a -> a -> a
<> forall a. Monoid a => a
mempty
  { ctxForeignSrcLang :: Maybe ForeignSrcLang
ctxForeignSrcLang = forall a. a -> Maybe a
Just ForeignSrcLang
TH.LangObjc
  , ctxTypesTable :: TypesTable
ctxTypesTable = forall k a. k -> a -> Map k a
Map.singleton (CIdentifier -> TypeSpecifier
CT.TypeName CIdentifier
"id") [t|Id|]
  }

data CId
newtype Id = Id (Ptr CId)