createFunction now takes arity as argument

This commit is contained in:
krangelov
2021-09-16 11:04:45 +02:00
parent fc268a16df
commit b408650125
5 changed files with 8 additions and 8 deletions

View File

@@ -638,7 +638,7 @@ PgfRevision pgf_checkout_revision(PgfDB *db, PgfText *name,
PGF_API
void pgf_create_function(PgfDB *db, PgfRevision revision,
PgfText *name,
PgfType ty, prob_t prob,
PgfType ty, size_t arity, prob_t prob,
PgfMarshaller *m,
PgfExn *err)
{
@@ -651,7 +651,7 @@ void pgf_create_function(PgfDB *db, PgfRevision revision,
ref<PgfAbsFun> absfun = PgfDB::malloc<PgfAbsFun>(name->size+1);
absfun->ref_count = 1;
absfun->type = m->match_type(&u, ty);
absfun->arity = 0;
absfun->arity = arity;
absfun->defns = 0;
absfun->ep.prob = prob;
ref<PgfExprFun> efun =

View File

@@ -368,7 +368,7 @@ PgfRevision pgf_checkout_revision(PgfDB *db, PgfText *name,
PGF_API_DECL
void pgf_create_function(PgfDB *db, PgfRevision revision,
PgfText *name,
PgfType ty, prob_t prob,
PgfType ty, size_t arity, prob_t prob,
PgfMarshaller *m,
PgfExn *err);

View File

@@ -127,7 +127,7 @@ foreign import ccall pgf_commit_revision :: Ptr PgfDB -> Ptr PgfRevision -> Ptr
foreign import ccall pgf_checkout_revision :: Ptr PgfDB -> Ptr PgfText -> Ptr PgfExn -> IO (Ptr PgfRevision)
foreign import ccall pgf_create_function :: Ptr PgfDB -> Ptr PgfRevision -> Ptr PgfText -> StablePtr Type -> (#type prob_t) -> Ptr PgfMarshaller -> Ptr PgfExn -> IO ()
foreign import ccall pgf_create_function :: Ptr PgfDB -> Ptr PgfRevision -> Ptr PgfText -> StablePtr Type -> CSize -> (#type prob_t) -> Ptr PgfMarshaller -> Ptr PgfExn -> IO ()
foreign import ccall pgf_drop_function :: Ptr PgfDB -> Ptr PgfRevision -> Ptr PgfText -> Ptr PgfExn -> IO ()

View File

@@ -109,12 +109,12 @@ checkoutPGF p name =
else do fptr2 <- C.newForeignPtr c_revision (withForeignPtr (a_db p) (\c_db -> pgf_free_revision c_db c_revision))
return (Just (PGF (a_db p) fptr2 (languages p)))
createFunction :: Fun -> Type -> Float -> Transaction ()
createFunction name ty prob = Transaction $ \c_db c_revision c_exn ->
createFunction :: Fun -> Type -> Int -> Float -> Transaction ()
createFunction name ty arity prob = Transaction $ \c_db c_revision c_exn ->
withText name $ \c_name ->
bracket (newStablePtr ty) freeStablePtr $ \c_ty ->
withForeignPtr marshaller $ \m -> do
pgf_create_function c_db c_revision c_name c_ty prob m c_exn
pgf_create_function c_db c_revision c_name c_ty (fromIntegral arity) prob m c_exn
dropFunction :: Fun -> Transaction ()
dropFunction name = Transaction $ \c_db c_revision c_exn ->