first draft of the new allocator with transactions support

This commit is contained in:
Krasimir Angelov
2022-05-20 13:55:45 +02:00
parent 546dc01b5d
commit 5594679a83
24 changed files with 1582 additions and 2372 deletions

View File

@@ -27,18 +27,6 @@ def gr3(gr1):
t.createCategory("R", [(BIND_TYPE_EXPLICIT, "x", ty)], prob)
yield gr
@pytest.fixture(scope="function")
def gr4(gr2):
gr = gr2
gr.checkoutBranch("master")
yield gr
@pytest.fixture(scope="function")
def gr5(gr3):
gr = gr3
gr.checkoutBranch("bar_branch")
yield gr
@pytest.fixture(scope="function")
def gr6(gr1):
gr = gr1
@@ -47,12 +35,6 @@ def gr6(gr1):
t.dropCategory("S")
yield gr
# general
def test_checkout_non_existant(gr1):
with pytest.raises(KeyError):
gr1.checkoutBranch("abc")
# gr1
def test_original_functions(gr1):
@@ -118,14 +100,6 @@ def test_branched_category_context(gr3):
def test_branched_function_type(gr3):
assert gr3.functionType("bar") == ty
# gr4, 5
def test_branched_functions(gr4):
assert gr4.functions == ["c", "foo", "ind", "s", "z"]
def test_branched_functions(gr5):
assert gr5.functions == ["bar", 'c', 'floatLit', 'ind', 'intLit', 'nat', 's', 'stringLit', 'z']
# gr6
def test_reduced_functions(gr6):

View File

@@ -10,16 +10,12 @@
PyObject *
PGF_checkoutBranch(PGFObject *self, PyObject *args)
{
const char *s = NULL;
Py_ssize_t size;
if (!PyArg_ParseTuple(args, "s#", &s, &size))
if (!PyArg_ParseTuple(args, ""))
return NULL;
PgfText *name = CString_AsPgfText(s, size);
PgfExn err;
PgfRevision rev = pgf_checkout_revision(self->db, name, &err);
FreePgfText(name);
PgfRevision rev = pgf_checkout_revision(self->db, &err);
if (handleError(err) != PGF_EXN_NONE) {
return NULL;
}
@@ -38,21 +34,13 @@ PGF_checkoutBranch(PGFObject *self, PyObject *args)
TransactionObject *
PGF_newTransaction(PGFObject *self, PyObject *args)
{
PgfText *name = NULL;
const char *s = NULL;
Py_ssize_t size;
if (!PyArg_ParseTuple(args, "|s#", &s, &size))
return NULL;
if (s != NULL) {
name = CString_AsPgfText(s, size);
}
PgfExn err;
PgfRevision rev = pgf_clone_revision(self->db, self->revision, name, &err);
if (name != NULL) {
FreePgfText(name);
}
PgfRevision rev = pgf_start_transaction(self->db, self->revision, &err);
if (handleError(err) != PGF_EXN_NONE) {
return NULL;
}
@@ -123,7 +111,7 @@ static PyObject *
Transaction_commit(TransactionObject *self, PyObject *args)
{
PgfExn err;
pgf_commit_revision(self->pgf->db, self->revision, &err);
pgf_commit_transaction(self->pgf->db, self->revision, &err);
if (handleError(err) != PGF_EXN_NONE) {
return NULL;
}