summaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/haskell-bind/PGF2.hsc10
-rw-r--r--src/runtime/haskell-bind/PGF2/FFI.hs3
2 files changed, 13 insertions, 0 deletions
diff --git a/src/runtime/haskell-bind/PGF2.hsc b/src/runtime/haskell-bind/PGF2.hsc
index 037145ee6..f2f1b4113 100644
--- a/src/runtime/haskell-bind/PGF2.hsc
+++ b/src/runtime/haskell-bind/PGF2.hsc
@@ -39,6 +39,7 @@ module PGF2 (-- * PGF
mkFloat,unFloat,
mkMeta,unMeta,
mkCId,
+ exprHash,
treeProbability,
-- ** Types
@@ -323,6 +324,15 @@ treeProbability (PGF p _) (Expr c_expr touch1) =
touch1
return (realToFrac res)
+exprHash :: Int32 -> Expr -> Int32
+exprHash h (Expr c_expr touch1) =
+ unsafePerformIO $ do
+ h <- pgf_expr_hash (fromIntegral h) c_expr
+ touch1
+ return (fromIntegral h)
+
+
+
-----------------------------------------------------------------------------
-- Graphviz
diff --git a/src/runtime/haskell-bind/PGF2/FFI.hs b/src/runtime/haskell-bind/PGF2/FFI.hs
index 3870e2fba..ce4dd6983 100644
--- a/src/runtime/haskell-bind/PGF2/FFI.hs
+++ b/src/runtime/haskell-bind/PGF2/FFI.hs
@@ -328,6 +328,9 @@ foreign import ccall "pgf/expr.h pgf_expr_arity"
foreign import ccall "pgf/expr.h pgf_expr_eq"
pgf_expr_eq :: PgfExpr -> PgfExpr -> IO CInt
+foreign import ccall "pgf/expr.h pgf_expr_hash"
+ pgf_expr_hash :: Word -> PgfExpr -> IO Word
+
foreign import ccall "pgf/expr.h pgf_compute_tree_probability"
pgf_compute_tree_probability :: Ptr PgfPGF -> PgfExpr -> IO CFloat