{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskellQuotes #-}

module Hercules.CNix.Std.String.Context
  ( CStdString,
    stdStringCtx,
  )
where

import qualified Data.Map as M
import qualified Language.C.Inline as C
import qualified Language.C.Inline.Context as C
import qualified Language.C.Inline.Cpp as C
import qualified Language.C.Types as C
import Prelude

data CStdString

stdStringCtx :: C.Context
stdStringCtx :: Context
stdStringCtx =
  Context
C.cppCtx
    forall a. Semigroup a => a -> a -> a
<> forall a. Monoid a => a
mempty
      { ctxTypesTable :: TypesTable
C.ctxTypesTable =
          forall k a. k -> a -> Map k a
M.singleton (CIdentifier -> TypeSpecifier
C.TypeName CIdentifier
"std::string") [t|CStdString|]
      }