import Data.GenType
import Data.GenType.CType
+import Data.GenType.CParser
-derive gType Either, T, R, Frac, Tr, Fix, Odd, Even, SR, List, Enum, NT, Blurp, EnumList
+derive gType Either, T, R, Frac, Tr, Fix, Odd, Even, SR, List, Enum, NT, Blurp, EnumList, ER, CP
-:: T a =: T2 a
+:: T a = T2 a Char
:: NT =: NT Int
:: SR = {f1 :: Int, f2 :: Bool, f3 :: Tr Either Bool, f4 :: Enum}
:: R a = {f1 :: ? (R a), f2 :: Bool, f3 :: T a, f4 :: Char -> Dynamic,
:: EnumList = ECons Enum EnumList | ENil
+:: ER = {nat :: T Int, bool :: Bool}
+
+:: CP = CLeft Int Bool | CRight Char Char
+
////Start :: [String]
////Start = foldr (\i c->print i ["\n":c]) [] $ catMaybes $ map gTypeToType $ flattenGType $ unBox t
//:: Pair a b = Pair a b
Start =
( flatTypedef $ gTypeToType $ unBox t
, typedefs $ map (map gTypeToType) $ map (filter (not o isBasic)) $ flattenGType $ unBox t
+ , flatParser $ gTypeToType $ unBox t
)
//Start = typedefs //$ (\x->[[gTypeToType x]])
//t :: Box GType (Maybe [Maybe (Either Bool String)])
//t :: Box GType ([SR], Enum, T Int, NT, Blurp Int)
//t :: Box GType [EnumList]
-t :: Box GType (?(?(?(?^Enum))))
+t :: Box GType (Either (Int, Char) (?CP))
//t :: Box GType (Odd Int, (), [Either (R (T *World)) (Frac Real)], Tr Either Bool, Fix Maybe)
t = gType{|*|}