diff options
| author | aarne <unknown> | 2004-09-14 17:05:46 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2004-09-14 17:05:46 +0000 |
| commit | fe045070cf4333cee0e634db5c877493d1b16030 (patch) | |
| tree | 285273eb564dbd3ad510a183a1c701ec02a1b57a /src/GF/Infra/Modules.hs | |
| parent | 35f884ddfd984edb7d580cd54c6f2f1ad9358a34 (diff) | |
gfcm header
Diffstat (limited to 'src/GF/Infra/Modules.hs')
| -rw-r--r-- | src/GF/Infra/Modules.hs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/GF/Infra/Modules.hs b/src/GF/Infra/Modules.hs index 762edb0e2..ffd622b54 100644 --- a/src/GF/Infra/Modules.hs +++ b/src/GF/Infra/Modules.hs @@ -296,3 +296,28 @@ isCompilableModule m = case m of -- interface and "incomplete M" are not complete isCompleteModule :: (Eq i) => Module i f a -> Bool isCompleteModule m = mstatus m == MSComplete && mtype m /= MTInterface + + +-- all abstract modules +allAbstracts :: Eq i => MGrammar i f a -> [i] +allAbstracts gr = [i | (i,ModMod m) <- modules gr, mtype m == MTAbstract] + +-- the last abstract in dependency order (head of list) +greatestAbstract :: Eq i => MGrammar i f a -> Maybe i +greatestAbstract gr = case allAbstracts gr of + [] -> Nothing + a:_ -> return a + +-- all resource modules +allResources :: MGrammar i f a -> [i] +allResources gr = [i | (i,ModMod m) <- modules gr, isModRes m] + +-- the greatest resource in dependency order +greatestResource :: MGrammar i f a -> Maybe i +greatestResource gr = case allResources gr of + [] -> Nothing + a -> return $ head a + +-- all concretes for a given abstract +allConcretes :: Eq i => MGrammar i f a -> i -> [i] +allConcretes gr a = [i | (i, ModMod m) <- modules gr, mtype m == MTConcrete a] |
