packages feed

hic-0.0.0.1: src/Language/Cimple/Hic/Context.hs

{-# LANGUAGE StrictData #-}
module Language.Cimple.Hic.Context
    ( Context (..)
    , emptyContext
    ) where

import           Data.Map.Strict                     (Map)
import qualified Data.Map.Strict                     as Map
import           Data.Text                           (Text)
import qualified Language.Cimple                     as C
import           Language.Cimple.Analysis.TypeSystem (TypeSystem)
import           Language.Cimple.Hic.Ast             (HicNode, Node)

data Context = Context
    { ctxEnums         :: Map Text [Text]
    , ctxUnions        :: Map Text [Text]
    , ctxTypedefs      :: Map Text (C.Node (C.Lexeme Text))
    -- | Registry of inferred TaggedUnions.
    -- This is populated by the TaggedUnion feature.
    , ctxTaggedUnions  :: Map Text (HicNode (C.Lexeme Text) (Node (C.Lexeme Text)))
    , ctxTypeSystem    :: TypeSystem
    } deriving (Eq, Show)


emptyContext :: Context
emptyContext = Context Map.empty Map.empty Map.empty Map.empty Map.empty