parent
4acad3174f
commit
bc223f86c4
@ -0,0 +1 @@
|
||||
# Calculate append=skip
|
@ -0,0 +1 @@
|
||||
# Calculate append=skip merge()!=
|
@ -0,0 +1,130 @@
|
||||
# Calculate format=diff
|
||||
diff --git a/c2hs/c/CAST.hs b/c2hs/c/CAST.hs
|
||||
index 842d134..81e7852 100644
|
||||
--- a/c2hs/c/CAST.hs
|
||||
+++ b/c2hs/c/CAST.hs
|
||||
@@ -301,6 +301,7 @@ data CTypeSpec = CVoidType Attrs
|
||||
| CIntType Attrs
|
||||
| CLongType Attrs
|
||||
| CFloatType Attrs
|
||||
+ | CFloat128Type Attrs
|
||||
| CDoubleType Attrs
|
||||
| CSignedType Attrs
|
||||
| CUnsigType Attrs
|
||||
@@ -324,6 +325,7 @@ instance Pos CTypeSpec where
|
||||
posOf (CIntType at) = posOf at
|
||||
posOf (CLongType at) = posOf at
|
||||
posOf (CFloatType at) = posOf at
|
||||
+ posOf (CFloat128Type at) = posOf at
|
||||
posOf (CDoubleType at) = posOf at
|
||||
posOf (CSignedType at) = posOf at
|
||||
posOf (CUnsigType at) = posOf at
|
||||
@@ -342,6 +344,7 @@ instance Eq CTypeSpec where
|
||||
(CIntType at1) == (CIntType at2) = at1 == at2
|
||||
(CLongType at1) == (CLongType at2) = at1 == at2
|
||||
(CFloatType at1) == (CFloatType at2) = at1 == at2
|
||||
+ (CFloat128Type at1) == (CFloat128Type at2) = at1 == at2
|
||||
(CDoubleType at1) == (CDoubleType at2) = at1 == at2
|
||||
(CSignedType at1) == (CSignedType at2) = at1 == at2
|
||||
(CUnsigType at1) == (CUnsigType at2) = at1 == at2
|
||||
@@ -1058,6 +1061,9 @@ instance Binary CTypeSpec where
|
||||
putByte bh 13
|
||||
put_ bh ar
|
||||
put_ bh as
|
||||
+ put_ bh (CFloat128Type at) = do
|
||||
+ putByte bh 14
|
||||
+ put_ bh at
|
||||
get bh = do
|
||||
h <- getByte bh
|
||||
case h of
|
||||
@@ -1108,6 +1114,9 @@ instance Binary CTypeSpec where
|
||||
ar <- get bh
|
||||
as <- get bh
|
||||
return (CTypeOfType ar as)
|
||||
+ 14 -> do
|
||||
+ at <- get bh
|
||||
+ return (CFloat128Type at)
|
||||
|
||||
instance Binary CStorageSpec where
|
||||
put_ bh (CAuto aa) = do
|
||||
diff --git a/c2hs/c/CLexer.x b/c2hs/c/CLexer.x
|
||||
index b6097c3..0099af5 100644
|
||||
--- a/c2hs/c/CLexer.x
|
||||
+++ b/c2hs/c/CLexer.x
|
||||
@@ -111,7 +111,7 @@ $visible = \ -\127
|
||||
@fractpart = @digits
|
||||
@mantpart = @intpart?\.@fractpart|@intpart\.
|
||||
@exppart = [eE][\+\-]?@digits
|
||||
-@suffix = [fFlL]
|
||||
+@suffix = [fFlLqQwW]
|
||||
|
||||
|
||||
tokens :-
|
||||
@@ -259,6 +259,7 @@ idkwtok ('d':'o':'u':'b':'l':'e':[]) = tok CTokDouble
|
||||
idkwtok ('e':'l':'s':'e':[]) = tok CTokElse
|
||||
idkwtok ('e':'n':'u':'m':[]) = tok CTokEnum
|
||||
idkwtok ('e':'x':'t':'e':'r':'n':[]) = tok CTokExtern
|
||||
+idkwtok ('_':'_':'f':'l':'o':'a':'t':'1':'2':'8':[]) = tok CTokFloat128
|
||||
idkwtok ('f':'l':'o':'a':'t':[]) = tok CTokFloat
|
||||
idkwtok ('f':'o':'r':[]) = tok CTokFor
|
||||
idkwtok ('g':'o':'t':'o':[]) = tok CTokGoto
|
||||
diff --git a/c2hs/c/CParser.y b/c2hs/c/CParser.y
|
||||
index b457ce9..5ae0333 100644
|
||||
--- a/c2hs/c/CParser.y
|
||||
+++ b/c2hs/c/CParser.y
|
||||
@@ -191,6 +191,7 @@ else { CTokElse _ }
|
||||
enum { CTokEnum _ }
|
||||
extern { CTokExtern _ }
|
||||
float { CTokFloat _ }
|
||||
+"__float128" { CTokFloat128 _ }
|
||||
for { CTokFor _ }
|
||||
goto { CTokGoto _ }
|
||||
if { CTokIf _ }
|
||||
@@ -656,6 +657,7 @@ basic_type_name
|
||||
| int {% withAttrs $1 $ CIntType }
|
||||
| long {% withAttrs $1 $ CLongType }
|
||||
| float {% withAttrs $1 $ CFloatType }
|
||||
+ | "__float128" {% withAttrs $1 $ CFloat128Type }
|
||||
| double {% withAttrs $1 $ CDoubleType }
|
||||
| signed {% withAttrs $1 $ CSignedType }
|
||||
| unsigned {% withAttrs $1 $ CUnsigType }
|
||||
diff --git a/c2hs/c/CPretty.hs b/c2hs/c/CPretty.hs
|
||||
index 2d9ce26..d285436 100644
|
||||
--- a/c2hs/c/CPretty.hs
|
||||
+++ b/c2hs/c/CPretty.hs
|
||||
@@ -83,6 +83,7 @@ instance Pretty CTypeSpec where
|
||||
pretty (CIntType _) = text "int"
|
||||
pretty (CLongType _) = text "long"
|
||||
pretty (CFloatType _) = text "float"
|
||||
+ pretty (CFloat128Type _) = text "__float128"
|
||||
pretty (CDoubleType _) = text "double"
|
||||
pretty (CSignedType _) = text "signed"
|
||||
pretty (CUnsigType _) = text "unsigned"
|
||||
diff --git a/c2hs/c/CTokens.hs b/c2hs/c/CTokens.hs
|
||||
index 6ee2b04..1195d9f 100644
|
||||
--- a/c2hs/c/CTokens.hs
|
||||
+++ b/c2hs/c/CTokens.hs
|
||||
@@ -102,6 +102,7 @@ data CToken = CTokLParen !Position -- `('
|
||||
| CTokEnum !Position -- `enum'
|
||||
| CTokExtern !Position -- `extern'
|
||||
| CTokFloat !Position -- `float'
|
||||
+ | CTokFloat128 !Position -- `__float128'
|
||||
| CTokFor !Position -- `for'
|
||||
| CTokGoto !Position -- `goto'
|
||||
| CTokIf !Position -- `if'
|
||||
@@ -217,6 +218,7 @@ instance Pos CToken where
|
||||
posOf (CTokEnum pos ) = pos
|
||||
posOf (CTokExtern pos ) = pos
|
||||
posOf (CTokFloat pos ) = pos
|
||||
+ posOf (CTokFloat128 pos ) = pos
|
||||
posOf (CTokFor pos ) = pos
|
||||
posOf (CTokGoto pos ) = pos
|
||||
posOf (CTokInt pos ) = pos
|
||||
@@ -311,6 +313,7 @@ instance Show CToken where
|
||||
showsPrec _ (CTokEnum _ ) = showString "enum"
|
||||
showsPrec _ (CTokExtern _ ) = showString "extern"
|
||||
showsPrec _ (CTokFloat _ ) = showString "float"
|
||||
+ showsPrec _ (CTokFloat128 _ ) = showString "__float128"
|
||||
showsPrec _ (CTokFor _ ) = showString "for"
|
||||
showsPrec _ (CTokGoto _ ) = showString "goto"
|
||||
showsPrec _ (CTokIf _ ) = showString "if"
|
Loading…
Reference in new issue