Added builtin function 'empty'
authorChristiaan Baaij <christiaan.baaij@gmail.com>
Tue, 23 Jun 2009 11:45:22 +0000 (13:45 +0200)
committerChristiaan Baaij <christiaan.baaij@gmail.com>
Tue, 23 Jun 2009 11:45:22 +0000 (13:45 +0200)
Generate.hs
GlobalNameTable.hs

index 8053f9852a5653107e1f802842727214f14516fb..6405a6e620fb18e78ff41978f11e4370f2064eff 100644 (file)
@@ -62,7 +62,8 @@ genUnconsVectorFuns elemTM vectorTM  =
   , AST.SubProgBody tailSpec    [AST.SPVD tailVar]  [tailExpr, tailRet]         
   , AST.SubProgBody takeSpec    [AST.SPVD takeVar]  [takeExpr, takeRet]         
   , AST.SubProgBody dropSpec    [AST.SPVD dropVar]  [dropExpr, dropRet]    
-  , AST.SubProgBody plusgtSpec  [AST.SPVD plusgtVar] [plusgtExpr, plusgtRet]     
+  , AST.SubProgBody plusgtSpec  [AST.SPVD plusgtVar] [plusgtExpr, plusgtRet]
+  , AST.SubProgBody emptySpec   [AST.SPVD emptyVar] [emptyExpr]    
   ]
   where 
     ixPar   = AST.unsafeVHDLBasicId "ix"
@@ -201,3 +202,12 @@ genUnconsVectorFuns elemTM vectorTM  =
                    ((AST.PrimName $ AST.NSimple aPar) AST.:&: 
                     (AST.PrimName $ AST.NSimple vecPar))
     plusgtRet = AST.ReturnSm (Just $ AST.PrimName $ AST.NSimple resId)
+    emptySpec = AST.Function emptyId [] vectorTM
+    emptyVar = 
+          AST.VarDec resId 
+              (AST.SubtypeIn vectorTM
+                (Just $ AST.ConstraintIndex $ AST.IndexConstraint 
+                 [AST.ToRange (AST.PrimLit "0")
+                          (AST.PrimLit "-1")]))
+              Nothing
+    emptyExpr = AST.ReturnSm (Just $ AST.PrimName (AST.NSimple resId))
\ No newline at end of file
index cf585ea50a88607ef146f7654f2510a7ace02765..49b717cfb37994133d0e9470cf25640b46e2890e 100644 (file)
@@ -26,6 +26,7 @@ globalNameTable = mkGlobalNameTable
   , ("take"           , (2, genExprFCall takeId                           ) )
   , ("drop"           , (2, genExprFCall dropId                           ) )
   , ("+>"             , (2, genExprFCall plusgtId                         ) )
+  , ("empty"          , (0, genExprFCall emptyId                          ) )
   , ("hwxor"          , (2, genExprOp2 AST.Xor                            ) )
   , ("hwand"          , (2, genExprOp2 AST.And                            ) )
   , ("hwor"           , (2, genExprOp2 AST.Or                             ) )