diff options
| author | krasimir <krasimir@chalmers.se> | 2016-05-10 17:11:39 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2016-05-10 17:11:39 +0000 |
| commit | 80a96b3a851c9af7635e31a95dc0d6edaa386051 (patch) | |
| tree | 798a222078e18ac7294254e014561e55e7febf23 /src/runtime/haskell-bind/PGF2 | |
| parent | 3f0fe438cd37bd9f9ece835b6f3bc90ed5566110 (diff) | |
an API for oracles in the GF parser
Diffstat (limited to 'src/runtime/haskell-bind/PGF2')
| -rw-r--r-- | src/runtime/haskell-bind/PGF2/FFI.hs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/runtime/haskell-bind/PGF2/FFI.hs b/src/runtime/haskell-bind/PGF2/FFI.hs index fc658d83d..67830e890 100644 --- a/src/runtime/haskell-bind/PGF2/FFI.hs +++ b/src/runtime/haskell-bind/PGF2/FFI.hs @@ -98,6 +98,7 @@ data PgfMorphoCallback data PgfPrintContext data PgfType data PgfCallbacksMap +data PgfOracleCallback data PgfCncTree foreign import ccall "pgf/pgf.h pgf_read" @@ -179,6 +180,21 @@ foreign import ccall "pgf/pgf.h pgf_new_callbacks_map" foreign import ccall hspgf_callbacks_map_add_literal :: Ptr PgfConcr -> Ptr PgfCallbacksMap -> CString -> FunPtr LiteralMatchCallback -> FunPtr LiteralPredictCallback -> Ptr GuPool -> IO () +type OracleCallback = Ptr PgfOracleCallback -> CString -> CString -> CInt -> IO Bool +type OracleLiteralCallback = Ptr PgfOracleCallback -> CString -> CString -> Ptr CInt -> Ptr GuPool -> IO (Ptr PgfExprProb) + +foreign import ccall "wrapper" + wrapOracleCallback :: OracleCallback -> IO (FunPtr OracleCallback) + +foreign import ccall "wrapper" + wrapOracleLiteralCallback :: OracleLiteralCallback -> IO (FunPtr OracleLiteralCallback) + +foreign import ccall + hspgf_new_oracle_callback :: FunPtr OracleCallback -> FunPtr OracleCallback -> FunPtr OracleLiteralCallback -> Ptr GuPool -> IO (Ptr PgfOracleCallback) + +foreign import ccall "pgf/pgf.h pgf_parse_with_oracle" + pgf_parse_with_oracle :: Ptr PgfConcr -> CString -> CString -> Ptr PgfOracleCallback -> Ptr GuExn -> Ptr GuPool -> Ptr GuPool -> IO (Ptr GuEnum) + foreign import ccall "pgf/pgf.h pgf_lookup_morpho" pgf_lookup_morpho :: Ptr PgfConcr -> CString -> Ptr PgfMorphoCallback -> Ptr GuExn -> IO () |
