{-# LANGUAGE DeriveGeneric #-}
module FFICXX.Generate.Type.Config where

import Data.Hashable (Hashable(..))
import Data.HashMap.Strict (HashMap)
import GHC.Generics (Generic)
--
import FFICXX.Generate.Type.PackageInterface (HeaderName(..),Namespace(..))

data ModuleUnit = MU_TopLevel
                | MU_Class String
                deriving (Show,Eq,Generic)

instance Hashable ModuleUnit

data ModuleUnitImports =
  ModuleUnitImports {
    muimports_namespaces :: [Namespace]
  , muimports_headers    :: [HeaderName]
  }
  deriving (Show)

emptyModuleUnitImports = ModuleUnitImports [] []

newtype ModuleUnitMap = ModuleUnitMap { unModuleUnitMap :: HashMap ModuleUnit ModuleUnitImports }