module Hydra.Module where
import qualified Hydra.Core as Core
import qualified Hydra.Graph as Graph
import Data.Int
import Data.List as L
import Data.Map as M
import Data.Set as S
newtype FileExtension =
FileExtension {
FileExtension -> String
unFileExtension :: String}
deriving (FileExtension -> FileExtension -> Bool
(FileExtension -> FileExtension -> Bool)
-> (FileExtension -> FileExtension -> Bool) -> Eq FileExtension
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FileExtension -> FileExtension -> Bool
== :: FileExtension -> FileExtension -> Bool
$c/= :: FileExtension -> FileExtension -> Bool
/= :: FileExtension -> FileExtension -> Bool
Eq, Eq FileExtension
Eq FileExtension =>
(FileExtension -> FileExtension -> Ordering)
-> (FileExtension -> FileExtension -> Bool)
-> (FileExtension -> FileExtension -> Bool)
-> (FileExtension -> FileExtension -> Bool)
-> (FileExtension -> FileExtension -> Bool)
-> (FileExtension -> FileExtension -> FileExtension)
-> (FileExtension -> FileExtension -> FileExtension)
-> Ord FileExtension
FileExtension -> FileExtension -> Bool
FileExtension -> FileExtension -> Ordering
FileExtension -> FileExtension -> FileExtension
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: FileExtension -> FileExtension -> Ordering
compare :: FileExtension -> FileExtension -> Ordering
$c< :: FileExtension -> FileExtension -> Bool
< :: FileExtension -> FileExtension -> Bool
$c<= :: FileExtension -> FileExtension -> Bool
<= :: FileExtension -> FileExtension -> Bool
$c> :: FileExtension -> FileExtension -> Bool
> :: FileExtension -> FileExtension -> Bool
$c>= :: FileExtension -> FileExtension -> Bool
>= :: FileExtension -> FileExtension -> Bool
$cmax :: FileExtension -> FileExtension -> FileExtension
max :: FileExtension -> FileExtension -> FileExtension
$cmin :: FileExtension -> FileExtension -> FileExtension
min :: FileExtension -> FileExtension -> FileExtension
Ord, ReadPrec [FileExtension]
ReadPrec FileExtension
Int -> ReadS FileExtension
ReadS [FileExtension]
(Int -> ReadS FileExtension)
-> ReadS [FileExtension]
-> ReadPrec FileExtension
-> ReadPrec [FileExtension]
-> Read FileExtension
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS FileExtension
readsPrec :: Int -> ReadS FileExtension
$creadList :: ReadS [FileExtension]
readList :: ReadS [FileExtension]
$creadPrec :: ReadPrec FileExtension
readPrec :: ReadPrec FileExtension
$creadListPrec :: ReadPrec [FileExtension]
readListPrec :: ReadPrec [FileExtension]
Read, Int -> FileExtension -> String -> String
[FileExtension] -> String -> String
FileExtension -> String
(Int -> FileExtension -> String -> String)
-> (FileExtension -> String)
-> ([FileExtension] -> String -> String)
-> Show FileExtension
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> FileExtension -> String -> String
showsPrec :: Int -> FileExtension -> String -> String
$cshow :: FileExtension -> String
show :: FileExtension -> String
$cshowList :: [FileExtension] -> String -> String
showList :: [FileExtension] -> String -> String
Show)
_FileExtension :: Name
_FileExtension = (String -> Name
Core.Name String
"hydra/module.FileExtension")
data Library =
Library {
Library -> Namespace
libraryNamespace :: Namespace,
Library -> String
libraryPrefix :: String,
Library -> [Primitive]
libraryPrimitives :: [Graph.Primitive]}
_Library :: Name
_Library = (String -> Name
Core.Name String
"hydra/module.Library")
_Library_namespace :: Name
_Library_namespace = (String -> Name
Core.Name String
"namespace")
_Library_prefix :: Name
_Library_prefix = (String -> Name
Core.Name String
"prefix")
_Library_primitives :: Name
_Library_primitives = (String -> Name
Core.Name String
"primitives")
data Module =
Module {
Module -> Namespace
moduleNamespace :: Namespace,
Module -> [Element]
moduleElements :: [Graph.Element],
Module -> [Module]
moduleTermDependencies :: [Module],
Module -> [Module]
moduleTypeDependencies :: [Module],
Module -> Maybe String
moduleDescription :: (Maybe String)}
deriving (Module -> Module -> Bool
(Module -> Module -> Bool)
-> (Module -> Module -> Bool) -> Eq Module
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Module -> Module -> Bool
== :: Module -> Module -> Bool
$c/= :: Module -> Module -> Bool
/= :: Module -> Module -> Bool
Eq, Eq Module
Eq Module =>
(Module -> Module -> Ordering)
-> (Module -> Module -> Bool)
-> (Module -> Module -> Bool)
-> (Module -> Module -> Bool)
-> (Module -> Module -> Bool)
-> (Module -> Module -> Module)
-> (Module -> Module -> Module)
-> Ord Module
Module -> Module -> Bool
Module -> Module -> Ordering
Module -> Module -> Module
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Module -> Module -> Ordering
compare :: Module -> Module -> Ordering
$c< :: Module -> Module -> Bool
< :: Module -> Module -> Bool
$c<= :: Module -> Module -> Bool
<= :: Module -> Module -> Bool
$c> :: Module -> Module -> Bool
> :: Module -> Module -> Bool
$c>= :: Module -> Module -> Bool
>= :: Module -> Module -> Bool
$cmax :: Module -> Module -> Module
max :: Module -> Module -> Module
$cmin :: Module -> Module -> Module
min :: Module -> Module -> Module
Ord, ReadPrec [Module]
ReadPrec Module
Int -> ReadS Module
ReadS [Module]
(Int -> ReadS Module)
-> ReadS [Module]
-> ReadPrec Module
-> ReadPrec [Module]
-> Read Module
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS Module
readsPrec :: Int -> ReadS Module
$creadList :: ReadS [Module]
readList :: ReadS [Module]
$creadPrec :: ReadPrec Module
readPrec :: ReadPrec Module
$creadListPrec :: ReadPrec [Module]
readListPrec :: ReadPrec [Module]
Read, Int -> Module -> String -> String
[Module] -> String -> String
Module -> String
(Int -> Module -> String -> String)
-> (Module -> String)
-> ([Module] -> String -> String)
-> Show Module
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> Module -> String -> String
showsPrec :: Int -> Module -> String -> String
$cshow :: Module -> String
show :: Module -> String
$cshowList :: [Module] -> String -> String
showList :: [Module] -> String -> String
Show)
_Module :: Name
_Module = (String -> Name
Core.Name String
"hydra/module.Module")
_Module_namespace :: Name
_Module_namespace = (String -> Name
Core.Name String
"namespace")
_Module_elements :: Name
_Module_elements = (String -> Name
Core.Name String
"elements")
_Module_termDependencies :: Name
_Module_termDependencies = (String -> Name
Core.Name String
"termDependencies")
_Module_typeDependencies :: Name
_Module_typeDependencies = (String -> Name
Core.Name String
"typeDependencies")
_Module_description :: Name
_Module_description = (String -> Name
Core.Name String
"description")
newtype Namespace =
Namespace {
Namespace -> String
unNamespace :: String}
deriving (Namespace -> Namespace -> Bool
(Namespace -> Namespace -> Bool)
-> (Namespace -> Namespace -> Bool) -> Eq Namespace
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Namespace -> Namespace -> Bool
== :: Namespace -> Namespace -> Bool
$c/= :: Namespace -> Namespace -> Bool
/= :: Namespace -> Namespace -> Bool
Eq, Eq Namespace
Eq Namespace =>
(Namespace -> Namespace -> Ordering)
-> (Namespace -> Namespace -> Bool)
-> (Namespace -> Namespace -> Bool)
-> (Namespace -> Namespace -> Bool)
-> (Namespace -> Namespace -> Bool)
-> (Namespace -> Namespace -> Namespace)
-> (Namespace -> Namespace -> Namespace)
-> Ord Namespace
Namespace -> Namespace -> Bool
Namespace -> Namespace -> Ordering
Namespace -> Namespace -> Namespace
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Namespace -> Namespace -> Ordering
compare :: Namespace -> Namespace -> Ordering
$c< :: Namespace -> Namespace -> Bool
< :: Namespace -> Namespace -> Bool
$c<= :: Namespace -> Namespace -> Bool
<= :: Namespace -> Namespace -> Bool
$c> :: Namespace -> Namespace -> Bool
> :: Namespace -> Namespace -> Bool
$c>= :: Namespace -> Namespace -> Bool
>= :: Namespace -> Namespace -> Bool
$cmax :: Namespace -> Namespace -> Namespace
max :: Namespace -> Namespace -> Namespace
$cmin :: Namespace -> Namespace -> Namespace
min :: Namespace -> Namespace -> Namespace
Ord, ReadPrec [Namespace]
ReadPrec Namespace
Int -> ReadS Namespace
ReadS [Namespace]
(Int -> ReadS Namespace)
-> ReadS [Namespace]
-> ReadPrec Namespace
-> ReadPrec [Namespace]
-> Read Namespace
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS Namespace
readsPrec :: Int -> ReadS Namespace
$creadList :: ReadS [Namespace]
readList :: ReadS [Namespace]
$creadPrec :: ReadPrec Namespace
readPrec :: ReadPrec Namespace
$creadListPrec :: ReadPrec [Namespace]
readListPrec :: ReadPrec [Namespace]
Read, Int -> Namespace -> String -> String
[Namespace] -> String -> String
Namespace -> String
(Int -> Namespace -> String -> String)
-> (Namespace -> String)
-> ([Namespace] -> String -> String)
-> Show Namespace
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> Namespace -> String -> String
showsPrec :: Int -> Namespace -> String -> String
$cshow :: Namespace -> String
show :: Namespace -> String
$cshowList :: [Namespace] -> String -> String
showList :: [Namespace] -> String -> String
Show)
_Namespace :: Name
_Namespace = (String -> Name
Core.Name String
"hydra/module.Namespace")
data QualifiedName =
QualifiedName {
QualifiedName -> Maybe Namespace
qualifiedNameNamespace :: (Maybe Namespace),
QualifiedName -> String
qualifiedNameLocal :: String}
deriving (QualifiedName -> QualifiedName -> Bool
(QualifiedName -> QualifiedName -> Bool)
-> (QualifiedName -> QualifiedName -> Bool) -> Eq QualifiedName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: QualifiedName -> QualifiedName -> Bool
== :: QualifiedName -> QualifiedName -> Bool
$c/= :: QualifiedName -> QualifiedName -> Bool
/= :: QualifiedName -> QualifiedName -> Bool
Eq, Eq QualifiedName
Eq QualifiedName =>
(QualifiedName -> QualifiedName -> Ordering)
-> (QualifiedName -> QualifiedName -> Bool)
-> (QualifiedName -> QualifiedName -> Bool)
-> (QualifiedName -> QualifiedName -> Bool)
-> (QualifiedName -> QualifiedName -> Bool)
-> (QualifiedName -> QualifiedName -> QualifiedName)
-> (QualifiedName -> QualifiedName -> QualifiedName)
-> Ord QualifiedName
QualifiedName -> QualifiedName -> Bool
QualifiedName -> QualifiedName -> Ordering
QualifiedName -> QualifiedName -> QualifiedName
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: QualifiedName -> QualifiedName -> Ordering
compare :: QualifiedName -> QualifiedName -> Ordering
$c< :: QualifiedName -> QualifiedName -> Bool
< :: QualifiedName -> QualifiedName -> Bool
$c<= :: QualifiedName -> QualifiedName -> Bool
<= :: QualifiedName -> QualifiedName -> Bool
$c> :: QualifiedName -> QualifiedName -> Bool
> :: QualifiedName -> QualifiedName -> Bool
$c>= :: QualifiedName -> QualifiedName -> Bool
>= :: QualifiedName -> QualifiedName -> Bool
$cmax :: QualifiedName -> QualifiedName -> QualifiedName
max :: QualifiedName -> QualifiedName -> QualifiedName
$cmin :: QualifiedName -> QualifiedName -> QualifiedName
min :: QualifiedName -> QualifiedName -> QualifiedName
Ord, ReadPrec [QualifiedName]
ReadPrec QualifiedName
Int -> ReadS QualifiedName
ReadS [QualifiedName]
(Int -> ReadS QualifiedName)
-> ReadS [QualifiedName]
-> ReadPrec QualifiedName
-> ReadPrec [QualifiedName]
-> Read QualifiedName
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS QualifiedName
readsPrec :: Int -> ReadS QualifiedName
$creadList :: ReadS [QualifiedName]
readList :: ReadS [QualifiedName]
$creadPrec :: ReadPrec QualifiedName
readPrec :: ReadPrec QualifiedName
$creadListPrec :: ReadPrec [QualifiedName]
readListPrec :: ReadPrec [QualifiedName]
Read, Int -> QualifiedName -> String -> String
[QualifiedName] -> String -> String
QualifiedName -> String
(Int -> QualifiedName -> String -> String)
-> (QualifiedName -> String)
-> ([QualifiedName] -> String -> String)
-> Show QualifiedName
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> QualifiedName -> String -> String
showsPrec :: Int -> QualifiedName -> String -> String
$cshow :: QualifiedName -> String
show :: QualifiedName -> String
$cshowList :: [QualifiedName] -> String -> String
showList :: [QualifiedName] -> String -> String
Show)
_QualifiedName :: Name
_QualifiedName = (String -> Name
Core.Name String
"hydra/module.QualifiedName")
_QualifiedName_namespace :: Name
_QualifiedName_namespace = (String -> Name
Core.Name String
"namespace")
_QualifiedName_local :: Name
_QualifiedName_local = (String -> Name
Core.Name String
"local")