[code cleanups, add a 'BitsUnknown' class to types
John Meacham <john@repetae.net>**20080321202104] hunk ./C/Op.hs 145
-data ArchBits = BitsMax | BitsPtr
+data ArchBits = BitsMax | BitsPtr | BitsUnknown
hunk ./C/Op.hs 172
+readTy "bits<?>" = return $ TyBits (BitsArch BitsUnknown) HintNone
hunk ./C/Op.hs 202
-    showsPrec _ (BitsExt s) = showString "<" . showString s . showString ">"
-    showsPrec _ (BitsArch s) = showString "<" . shows s . showString ">"
+    showsPrec _ (BitsExt s) = showChar '<' . showString s . showChar '>'
+    showsPrec _ (BitsArch s) = showChar '<' . shows s . showChar '>'
hunk ./C/Op.hs 208
+    show BitsUnknown = "?"
hunk ./C/Op.hs 314
+binopFunc TyBool _ bop = Nothing where
hunk ./C/OpEval.hs 1
-module C.OpEval where
+module C.OpEval(
+    Expression(..),
+    convOp,
+    convNumber,
+    convCombine,
+    binOp,
+    binOp',
+    unOp
+    ) where
hunk ./C/OpEval.hs 47
+convOp F2U _ _ = Just F2U
+convOp U2F _ _ = Just U2F
hunk ./C/OpEval.hs 58
+{-
+convNumber :: ConvOp -> Val -> Ty -> Val
+convNumber F2I (Val _ (ValFloat f)) ty = Val ty (fromInteger $ truncate f)
+convNumber F2U (Val _ (ValFloat f)) ty = Val ty (if f < 0 then 0 else fromInteger $ truncate f)
+convNumber I2F (Val _ (ValInteger f)) ty = Val ty (ValFloat $ fromInteger f)
+convNumber U2F (Val _ (ValInteger f)) ty = Val ty (ValFloat $ fromInteger f)
+convNumber _ (Val _ v) ty  = (Val ty v)
+-}
hunk ./C/OpEval.hs 68
-convCombine _ c1 _ c2 _ | c1 `elem` [F2I,I2F] || c2 `elem` [F2I,I2F] = Nothing
+convCombine _ c1 _ c2 _ | c1 `elem` [F2I,I2F,U2F,F2U] || c2 `elem` [F2I,I2F,U2F,F2U] = Nothing
hunk ./Grin/HashConst.hs 21
-newConst n = newConst' False n
-
-newConst' :: MonadState HcHash m => Bool -> Val -> m (Bool,Int)
-newConst' fuzzy n = f n where
+newConst n = f n where
hunk ./Grin/HashConst.hs 24
-                | fuzzy = return $ Left (Lit 0 ty)
hunk ./Grin/HashConst.hs 26
-                | fuzzy = return $ Left (Lit 0 ty)