added exprFunctions in the Haskell binding

This commit is contained in:
Krasimir Angelov
2017-09-05 10:07:43 +02:00
parent 85cf2d9f5a
commit 30b7ba04c7
4 changed files with 66 additions and 1 deletions

View File

@@ -39,7 +39,7 @@ module PGF2 (-- * PGF
mkFloat,unFloat,
mkMeta,unMeta,
mkCId,
exprHash, exprSize,
exprHash, exprSize, exprFunctions,
treeProbability,
-- ** Types
@@ -338,6 +338,16 @@ exprSize (Expr c_expr touch1) =
touch1
return (fromIntegral size)
exprFunctions :: Expr -> [Fun]
exprFunctions (Expr c_expr touch) =
unsafePerformIO $
withGuPool $ \tmpPl -> do
seq <- pgf_expr_functions c_expr tmpPl
len <- (#peek GuSeq, len) seq
arr <- peekArray (fromIntegral (len :: CInt)) (seq `plusPtr` (#offset GuSeq, data))
funs <- mapM peekUtf8CString arr
touch
return funs
-----------------------------------------------------------------------------
-- Graphviz