[add c-- types for complex and vector values
John Meacham <john@repetae.net>**20120210051026
 Ignore-this: 4a1e4c8cec01f73b75913622c22fa55
] hunk ./Makefile.am 212
+i2: $(BUILT_SOURCES)
+	$(HC) --interactive $(GHCOPTS)  $(CFILES)
+
hunk ./lib/jhc-prim/Jhc/Prim/Bits.hs 25
--- data Complex_ :: # -> #
+data Complex_ :: # -> #
hunk ./lib/jhc/System/Mem/StableName.hs 19
-foreign import primitive "U2I" bitsPtrToInt :: BitsPtr_ -> Int
+foreign import primitive "U2U" bitsPtrToInt :: BitsPtr_ -> Int
hunk ./selftest/Makefile 9
-	-fglasgow-exts -XNoMonoLocalBinds -XNamedFieldPuns
+	-fglasgow-exts -XNoMonoLocalBinds -XNamedFieldPuns 
hunk ./selftest/SelfTest.hs 18
+import PackedString
hunk ./selftest/SelfTest.hs 22
-import PackedString
-import qualified Data.ByteString as BS
hunk ./selftest/SelfTest.hs 23
+import qualified Cmm.Op as Op
+import qualified Data.ByteString as BS
hunk ./selftest/SelfTest.hs 71
-    putStrLn "Testing PackedString"
hunk ./selftest/SelfTest.hs 76
-    quickCheck prop_psid
+    qc "PackedString.psid" prop_psid
+    qc "PackedString.sort"  prop_sort
+    qc "PackedString.psappend"  prop_psappend
+    qc "PackedString.psappend'"  prop_psappend'
hunk ./selftest/SelfTest.hs 81
-    doTime "prop_sort" $ quickCheck prop_sort
-    quickCheck prop_psappend
-    quickCheck prop_psappend'
-    print $ map packString strings
-    print $ sort $ map packString strings
-    print $ sort strings
+--    print $ map packString strings
+--    print $ sort $ map packString strings
+--    print $ sort strings
hunk ./selftest/SelfTest.hs 109
-    qc "name.noquote" $ \ t a b -> (nn b && (t /= QuotedName)) ==> fromQuotedName (toName t (a :: Maybe Module,b)) == Nothing
+    qc "name.noquote" $ \ t a b -> t /= QuotedName && nn b ==> collect t $ fromQuotedName (toName t (a :: Maybe Module,b)) == Nothing
hunk ./selftest/SelfTest.hs 174
+deriving instance Bounded NameType
+deriving instance Enum Op.ValOp
+--deriving instance Bounded Op.ValOp
+
hunk ./selftest/SelfTest.hs 179
-    arbitrary = oneof $ map return [ TypeConstructor .. ]
+    arbitrary = oneof $ map return [ minBound .. ]
+instance Arbitrary Op.BinOp where
+    arbitrary = oneof $ map return [ minBound .. ]
+instance Arbitrary Op.UnOp where
+    arbitrary = oneof $ map return [ minBound .. ]
+instance Arbitrary Op.ConvOp where
+    arbitrary = oneof $ map return [ minBound .. ]
+instance Arbitrary Op.ValOp where
+    arbitrary = oneof $ map return [ minBound .. ]
hunk ./selftest/SelfTest.hs 201
---instance Arbitrary Char where
---    arbitrary     = Test.QuickCheck.choose ('\32', '\128')
---    coarbitrary c = variant (fromEnum c `rem` 4)
+instance Arbitrary Char where
+    arbitrary     = Test.QuickCheck.choose ('\32', '\128')
+    coarbitrary c = variant (fromEnum c `rem` 4)
hunk ./src/C/FromGrin2.hs 295
+tyToC dh (Op.TyComplex ty) = "_Complex " ++ tyToC dh ty
hunk ./src/C/Prims.hs 150
-            s -> Func { funcName = (packString s), primArgTypes = [], primRetType = "" }
+            s -> Func { funcName = (packString s), primArgTypes = [], primRetType = "", primRequires = reqs, primRetArgs = [] }
hunk ./src/Cmm/Op.hs 6
+import Text.ParserCombinators.ReadP as P
+import Text.Read.Lex
hunk ./src/Cmm/Op.hs 172
+    | TyComplex Ty
+    | TyVector !Int Ty
hunk ./src/Cmm/Op.hs 177
+--runReadP :: ReadP a -> String -> Maybe a
+--runReadP rp s = case readP_to_S rp s of
+--    [(x,"")] -> Just x
+--    _ -> Nothing
+
+preadTy :: ReadP Ty
+preadTy = choice cs where
+    cs = [ do string "bool"; return TyBool
+         , do char 's'; TyBits x _ <- preadTy; return $ TyBits x HintSigned
+         , do char 'u'; TyBits x _ <- preadTy; return $ TyBits x HintUnsigned
+         , do char 'f'; TyBits x _ <- preadTy; return $ TyBits x HintFloat
+         , do char 'c'; TyBits x _ <- preadTy; return $ TyBits x HintCharacter
+         , do string "bits<"; x <- manyTill P.get (char '>'); return $ TyBits (f x) HintNone
+         , do string "bits"; x <- readDecP; return $ TyBits (Bits x) HintNone
+         , do n <- readDecP; char '*'; t <- preadTy; return (TyVector n t)
+         , do string "i"; t <- preadTy; return (TyComplex t)
+         ]
+    f "ptr" = BitsArch BitsPtr
+    f "max" = BitsArch BitsMax
+    f "?"   = BitsArch BitsUnknown
+    f x     = BitsExt x
+
hunk ./src/Cmm/Op.hs 200
-readTy "bool" = return TyBool
-readTy "bits<ptr>" = return $ TyBits (BitsArch BitsPtr) HintNone
-readTy "bits<max>" = return $ TyBits (BitsArch BitsMax) HintNone
-readTy "bits<?>" = return $ TyBits (BitsArch BitsUnknown) HintNone
-readTy ('b':'i':'t':'s':'<':rs) = return $ TyBits (BitsExt (takeWhile ('>' /=) rs)) HintNone
-readTy ('b':'i':'t':'s':rs) = do n <- readM rs; return $ TyBits (Bits n) HintNone
-readTy ('s':rs) = do TyBits x _ <- readTy rs; return $ TyBits x HintSigned
-readTy ('u':rs) = do TyBits x _ <- readTy rs; return $ TyBits x HintUnsigned
-readTy ('f':rs) = do TyBits x _ <- readTy rs; return $ TyBits x HintFloat
-readTy ('c':rs) = do TyBits x _ <- readTy rs; return $ TyBits x HintCharacter
-readTy _ = fail "readTy: not type"
+readTy s = case runReadP preadTy s of
+    Nothing -> fail "readTy: not type"
+    Just x -> return x
hunk ./src/Cmm/Op.hs 240
+    showsPrec _ (TyVector n t) = shows n . showChar '*' . shows t
+    showsPrec _ (TyComplex t) = showChar 'i' . shows t
hunk ./src/E/FromHs.hs 421
+            (False,ExtTypeRaw  _,[]) -> do
+                cFun $ \rs -> return (id,prim [EVar t | t <- rs ] rt')
hunk ./src/data/names.txt 83
+Complex    Jhc.Prim.Bits.Complex_
+