summaryrefslogtreecommitdiff
path: root/src/runtime/haskell-bind/PGF2.hsc
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/haskell-bind/PGF2.hsc')
-rw-r--r--src/runtime/haskell-bind/PGF2.hsc12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/runtime/haskell-bind/PGF2.hsc b/src/runtime/haskell-bind/PGF2.hsc
index 4990a1926..dfddb9708 100644
--- a/src/runtime/haskell-bind/PGF2.hsc
+++ b/src/runtime/haskell-bind/PGF2.hsc
@@ -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