From c733ac2cff9c3821ea63f738ae9a0a697b40524e Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Sun, 9 Mar 2008 12:48:26 +0000 Subject: [PATCH] Fixed the C++ backends so that it continues to declare timer variables, even though the C backend doesn't any more --- backends/GenerateC.hs | 2 +- backends/GenerateCPPCSP.hs | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/backends/GenerateC.hs b/backends/GenerateC.hs index 7c0dcb6..5c93149 100644 --- a/backends/GenerateC.hs +++ b/backends/GenerateC.hs @@ -17,7 +17,7 @@ with this program. If not, see . -} -- | Generate C code from the mangled AST. -module GenerateC (cgenOps, cgenType, cintroduceSpec, cPreReq, genComma, genCPasses, generate, generateC, genLeftB, genMeta, genName, genRightB, indexOfFreeDimensions, seqComma, withIf ) where +module GenerateC (cgenOps, cgenDeclaration, cgenType, cintroduceSpec, cPreReq, genComma, genCPasses, generate, generateC, genLeftB, genMeta, genName, genRightB, indexOfFreeDimensions, seqComma, withIf ) where import Data.Char import Data.Generics diff --git a/backends/GenerateCPPCSP.hs b/backends/GenerateCPPCSP.hs index dc9fd28..1df7f25 100644 --- a/backends/GenerateCPPCSP.hs +++ b/backends/GenerateCPPCSP.hs @@ -39,7 +39,7 @@ import System.IO import qualified AST as A import CompState -import GenerateC (cgenOps, cintroduceSpec, cgenType, generate, genComma, genLeftB, genMeta, genName, genRightB, indexOfFreeDimensions, seqComma, withIf) +import GenerateC (cgenDeclaration, cgenOps, cintroduceSpec, cgenType, generate, genComma, genLeftB, genMeta, genName, genRightB, indexOfFreeDimensions, seqComma, withIf) import GenerateCBased import Metadata import Pass @@ -60,6 +60,7 @@ cppgenOps = cgenOps { genAllocMobile = cppgenAllocMobile, genAlt = cppgenAlt, genClearMobile = cppgenClearMobile, + genDeclaration = cppgenDeclaration, genDirectedVariable = cppgenDirectedVariable, genForwardDeclaration = cppgenForwardDeclaration, genGetTime = cppgenGetTime, @@ -472,6 +473,14 @@ cppgenProcCall n as call genActuals as tell [");"] +cppgenDeclaration :: A.Type -> A.Name -> Bool -> CGen () +cppgenDeclaration A.Timer n _ + = do call genType A.Timer + tell [" "] + genName n + tell [";"] +cppgenDeclaration t n b = cgenDeclaration t n b + -- | Changed because we initialise channels and arrays differently in C++ cppdeclareInit :: Meta -> A.Type -> A.Variable -> Maybe (CGen ()) cppdeclareInit m t@(A.Array ds t') var