summaryrefslogtreecommitdiff
path: root/src/GF/Canon/CMacros.hs
diff options
context:
space:
mode:
authoraarne <unknown>2004-06-24 14:06:09 +0000
committeraarne <unknown>2004-06-24 14:06:09 +0000
commit3b39607bbac8e6ab99198ab608f14e1f84c2f60e (patch)
tree35b823c38ef0ed7439f1a057d939fbdfa96bc719 /src/GF/Canon/CMacros.hs
parentd3db78ad31fe8b27c7ebb4e05b92d4c3986cb119 (diff)
last-minute bug fixes
Diffstat (limited to 'src/GF/Canon/CMacros.hs')
-rw-r--r--src/GF/Canon/CMacros.hs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/GF/Canon/CMacros.hs b/src/GF/Canon/CMacros.hs
index da936e735..37693efa5 100644
--- a/src/GF/Canon/CMacros.hs
+++ b/src/GF/Canon/CMacros.hs
@@ -104,6 +104,16 @@ defLinType = RecType [Lbg (L (A.identC "s")) TStr]
defLindef :: Term
defLindef = R [Ass (L (A.identC "s")) (Arg (A (A.identC "str") 0))]
+isDiscontinuousCType :: CType -> Bool
+isDiscontinuousCType t = case t of
+ RecType rs -> length [t | Lbg _ t <- rs, valTableType t == TStr] > 1
+ _ -> True --- does not occur; would not behave well in lin commands
+
+valTableType :: CType -> CType
+valTableType t = case t of
+ Table _ v -> valTableType v
+ _ -> t
+
strsFromTerm :: Term -> Err [Str]
strsFromTerm t = case t of
K (KS s) -> return [str s]