Changed the type of genRetypeSizes to removed the unused AbbrevMode parameter

This commit is contained in:
Neil Brown 2007-10-13 15:38:04 +00:00
parent 9a48683033
commit ed38f80db0
3 changed files with 18 additions and 18 deletions

View File

@ -136,7 +136,7 @@ data GenOps = GenOps {
genReplicator :: GenOps -> A.Replicator -> CGen () -> CGen (), genReplicator :: GenOps -> A.Replicator -> CGen () -> CGen (),
-- | Generates the three bits of a for loop (e.g. "int i=0;i<10;i++" for the given replicator -- | Generates the three bits of a for loop (e.g. "int i=0;i<10;i++" for the given replicator
genReplicatorLoop :: GenOps -> A.Replicator -> CGen (), genReplicatorLoop :: GenOps -> A.Replicator -> CGen (),
genRetypeSizes :: GenOps -> Meta -> A.AbbrevMode -> A.Type -> A.Name -> A.Type -> A.Variable -> CGen (), genRetypeSizes :: GenOps -> Meta -> A.Type -> A.Name -> A.Type -> A.Variable -> CGen (),
genSeq :: GenOps -> A.Structured -> CGen (), genSeq :: GenOps -> A.Structured -> CGen (),
genSimpleDyadic :: GenOps -> String -> A.Expression -> A.Expression -> CGen (), genSimpleDyadic :: GenOps -> String -> A.Expression -> A.Expression -> CGen (),
genSimpleMonadic :: GenOps -> String -> A.Expression -> CGen (), genSimpleMonadic :: GenOps -> String -> A.Expression -> CGen (),
@ -1126,9 +1126,9 @@ abbrevVariable ops am t v
= (call genVariableAM ops v am, noSize) = (call genVariableAM ops v am, noSize)
-- | Generate the size part of a RETYPES\/RESHAPES abbrevation of a variable. -- | Generate the size part of a RETYPES\/RESHAPES abbrevation of a variable.
cgenRetypeSizes :: GenOps -> Meta -> A.AbbrevMode -> A.Type -> A.Name -> A.Type -> A.Variable -> CGen () cgenRetypeSizes :: GenOps -> Meta -> A.Type -> A.Name -> A.Type -> A.Variable -> CGen ()
cgenRetypeSizes _ _ _ (A.Chan {}) _ (A.Chan {}) _ = return () cgenRetypeSizes _ _ (A.Chan {}) _ (A.Chan {}) _ = return ()
cgenRetypeSizes ops m am destT destN srcT srcV cgenRetypeSizes ops m destT destN srcT srcV
= do size <- makeNonce "retype_size" = do size <- makeNonce "retype_size"
tell ["int ", size, " = occam_check_retype ("] tell ["int ", size, " = occam_check_retype ("]
call genBytesIn ops srcT (Just srcV) False call genBytesIn ops srcT (Just srcV) False
@ -1400,7 +1400,7 @@ cintroduceSpec ops (A.Specification _ n (A.Retypes m am t v))
tell [")"] tell [")"]
rhs rhs
tell [";"] tell [";"]
call genRetypeSizes ops m am t n origT v call genRetypeSizes ops m t n origT v
--cintroduceSpec ops (A.Specification _ n (A.RetypesExpr _ am t e)) --cintroduceSpec ops (A.Specification _ n (A.RetypesExpr _ am t e))
cintroduceSpec ops n = call genMissing ops $ "introduceSpec " ++ show n cintroduceSpec ops n = call genMissing ops $ "introduceSpec " ++ show n

View File

@ -1029,7 +1029,7 @@ cppintroduceSpec ops (A.Specification _ n (A.Retypes m am t v))
(A.Array _ _) -> tell ["("] >> rhs >> tell [".data())"] (A.Array _ _) -> tell ["("] >> rhs >> tell [".data())"]
_ -> rhs _ -> rhs
tell [";"] tell [";"]
call genRetypeSizes ops m am t n origT v call genRetypeSizes ops m t n origT v
--For all other cases, use the C implementation: --For all other cases, use the C implementation:
cppintroduceSpec ops n = cintroduceSpec ops n cppintroduceSpec ops n = cintroduceSpec ops n

View File

@ -201,8 +201,8 @@ override2 val = (\_ _ _ -> val)
override3 :: b -> (GenOps -> a0 -> a1 -> a2 -> b) override3 :: b -> (GenOps -> a0 -> a1 -> a2 -> b)
override3 val = (\_ _ _ _ -> val) override3 val = (\_ _ _ _ -> val)
override6 :: b -> (GenOps -> a0 -> a1 -> a2 -> a3 -> a4 -> a5 -> b) override5 :: b -> (GenOps -> a0 -> a1 -> a2 -> a3 -> a4 -> b)
override6 val = (\_ _ _ _ _ _ _ -> val) override5 val = (\_ _ _ _ _ _ -> val)
testGenType :: Test testGenType :: Test
testGenType = TestList testGenType = TestList
@ -557,16 +557,16 @@ testSpec = TestList
--Retypes: --Retypes:
-- Normal abbreviation: -- Normal abbreviation:
,testAllSameS 900 ("int*const foo=(int*const)&y;@","") (A.Retypes emptyMeta A.Abbrev A.Int (variable "y")) ,testAllSameS 900 ("int*const foo=(int*const)&y;@","") (A.Retypes emptyMeta A.Abbrev A.Int (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override5 at})
-- Val abbreviation: -- Val abbreviation:
,testAllSameS 901 ("const int foo=*(const int*)&y;@","") (A.Retypes emptyMeta A.ValAbbrev A.Int (variable "y")) ,testAllSameS 901 ("const int foo=*(const int*)&y;@","") (A.Retypes emptyMeta A.ValAbbrev A.Int (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override5 at})
--Abbreviations of records as records: --Abbreviations of records as records:
,testAllSameS 910 ("bar*const foo=(bar*const)(&y);@","") (A.Retypes emptyMeta A.Abbrev (A.Record bar) (variable "y")) ,testAllSameS 910 ("bar*const foo=(bar*const)(&y);@","") (A.Retypes emptyMeta A.Abbrev (A.Record bar) (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" (A.Record bar2))) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" (A.Record bar2))) (\ops -> ops {genRetypeSizes = override5 at})
-- Val abbreviation of records as records: -- Val abbreviation of records as records:
,testAllSameS 911 ("const bar*const foo=(const bar*const)(&y);@","") (A.Retypes emptyMeta A.ValAbbrev (A.Record bar) (variable "y")) ,testAllSameS 911 ("const bar*const foo=(const bar*const)(&y);@","") (A.Retypes emptyMeta A.ValAbbrev (A.Record bar) (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" (A.Record bar2))) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" (A.Record bar2))) (\ops -> ops {genRetypeSizes = override5 at})
-- Channel retyping doesn't require size checking: -- Channel retyping doesn't require size checking:
,testAllS 1000 ("Channel*const foo=(Channel*const)(&y);","") ("csp::One2OneChannel<tockSendableArrayOfBytes>*const foo=(csp::One2OneChannel<tockSendableArrayOfBytes>*const)(&y);","") ,testAllS 1000 ("Channel*const foo=(Channel*const)(&y);","") ("csp::One2OneChannel<tockSendableArrayOfBytes>*const foo=(csp::One2OneChannel<tockSendableArrayOfBytes>*const)(&y);","")
@ -577,28 +577,28 @@ testSpec = TestList
-- single (unknown) dimension: -- single (unknown) dimension:
,testAllS 1100 ("uint8_t* foo=(uint8_t*)&y;@","") ("tockArrayView<uint8_t,1> foo=tockArrayView<uint8_t,1>(tockDims(0),&y);@","") ,testAllS 1100 ("uint8_t* foo=(uint8_t*)&y;@","") ("tockArrayView<uint8_t,1> foo=tockArrayView<uint8_t,1>(tockDims(0),&y);@","")
(A.Retypes emptyMeta A.Abbrev (A.Array [A.UnknownDimension] A.Byte) (variable "y")) (A.Retypes emptyMeta A.Abbrev (A.Array [A.UnknownDimension] A.Byte) (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override5 at})
-- single (known) dimension: -- single (known) dimension:
,testAllS 1101 ("uint8_t* foo=(uint8_t*)&y;@","") ("tockArrayView<uint8_t,1> foo=tockArrayView<uint8_t,1>(tockDims(4),&y);@","") ,testAllS 1101 ("uint8_t* foo=(uint8_t*)&y;@","") ("tockArrayView<uint8_t,1> foo=tockArrayView<uint8_t,1>(tockDims(4),&y);@","")
(A.Retypes emptyMeta A.Abbrev (A.Array [A.Dimension 4] A.Byte) (variable "y")) (A.Retypes emptyMeta A.Abbrev (A.Array [A.Dimension 4] A.Byte) (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override5 at})
-- single (unknown) dimension, VAL: -- single (unknown) dimension, VAL:
,testAllS 1102 ("const uint8_t* foo=(const uint8_t*)&y;@","") ("tockArrayView<const uint8_t,1> foo=tockArrayView<const uint8_t,1>(tockDims(0),&y);@","") ,testAllS 1102 ("const uint8_t* foo=(const uint8_t*)&y;@","") ("tockArrayView<const uint8_t,1> foo=tockArrayView<const uint8_t,1>(tockDims(0),&y);@","")
(A.Retypes emptyMeta A.ValAbbrev (A.Array [A.UnknownDimension] A.Byte) (variable "y")) (A.Retypes emptyMeta A.ValAbbrev (A.Array [A.UnknownDimension] A.Byte) (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override5 at})
-- single (known) dimension, VAL: -- single (known) dimension, VAL:
,testAllS 1103 ("const uint8_t* foo=(const uint8_t*)&y;@","") ("tockArrayView<const uint8_t,1> foo=tockArrayView<const uint8_t,1>(tockDims(4),&y);@","") ,testAllS 1103 ("const uint8_t* foo=(const uint8_t*)&y;@","") ("tockArrayView<const uint8_t,1> foo=tockArrayView<const uint8_t,1>(tockDims(4),&y);@","")
(A.Retypes emptyMeta A.ValAbbrev (A.Array [A.Dimension 4] A.Byte) (variable "y")) (A.Retypes emptyMeta A.ValAbbrev (A.Array [A.Dimension 4] A.Byte) (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" A.Int32)) (\ops -> ops {genRetypeSizes = override5 at})
-- TODO test multiple dimensions plain-to-array (mainly for C++) -- TODO test multiple dimensions plain-to-array (mainly for C++)
-- Array-to-plain retyping: -- Array-to-plain retyping:
,testAllS 1200 ("int32_t*const foo=(int32_t*const)y;@","") ("int32_t*const foo=(int32_t*const)(y.data());@","") ,testAllS 1200 ("int32_t*const foo=(int32_t*const)y;@","") ("int32_t*const foo=(int32_t*const)(y.data());@","")
(A.Retypes emptyMeta A.Abbrev A.Int32 (variable "y")) (A.Retypes emptyMeta A.Abbrev A.Int32 (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" (A.Array [A.UnknownDimension] A.Byte))) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" (A.Array [A.UnknownDimension] A.Byte))) (\ops -> ops {genRetypeSizes = override5 at})
,testAllS 1201 ("const int32_t foo=*(const int32_t*)y;@","") ("const int32_t foo=*(const int32_t*)(y.data());@","") ,testAllS 1201 ("const int32_t foo=*(const int32_t*)y;@","") ("const int32_t foo=*(const int32_t*)(y.data());@","")
(A.Retypes emptyMeta A.ValAbbrev A.Int32 (variable "y")) (A.Retypes emptyMeta A.ValAbbrev A.Int32 (variable "y"))
(defineName (simpleName "y") (simpleDefDecl "y" (A.Array [A.UnknownDimension] A.Byte))) (\ops -> ops {genRetypeSizes = override6 at}) (defineName (simpleName "y") (simpleDefDecl "y" (A.Array [A.UnknownDimension] A.Byte))) (\ops -> ops {genRetypeSizes = override5 at})
--TODO test array-to-array retyping --TODO test array-to-array retyping