raise Exception, "Unknown type"
+ def remove(self, what):
+ if isinstance(what, Solvable):
+ self.remove_solvable(what)
+ return
+
+ elif isinstance(what, Relation):
+ self.remove_relation(what)
+ return
+
+ elif type(what) == type("string"):
+ self.remove_name(what)
+ return
+
+ raise Exception, "Unknown type"
+
+ def update(self, what):
+ if isinstance(what, Solvable):
+ self.update_solvable(what)
+ return
+
+ elif isinstance(what, Relation):
+ self.update_relation(what)
+ return
+
+ elif type(what) == type("string"):
+ self.update_name(what)
+ return
+
+ raise Exception, "Unknown type"
+
+ def lock(self, what):
+ if isinstance(what, Solvable):
+ self.lock_solvable(what)
+ return
+
+ elif isinstance(what, Relation):
+ self.lock_relation(what)
+ return
+
+ elif type(what) == type("string"):
+ self.lock_name(what)
+ return
+
+ raise Exception, "Unknown type"
+
class Solver(object):
def __init__(self, pakfire, pool):
{"install_solvable", (PyCFunction)Request_install_solvable, METH_VARARGS, NULL},
{"install_relation", (PyCFunction)Request_install_relation, METH_VARARGS, NULL},
{"install_name", (PyCFunction)Request_install_name, METH_VARARGS, NULL},
+ {"remove_solvable", (PyCFunction)Request_remove_solvable, METH_VARARGS, NULL},
+ {"remove_relation", (PyCFunction)Request_remove_relation, METH_VARARGS, NULL},
+ {"remove_name", (PyCFunction)Request_remove_name, METH_VARARGS, NULL},
+ {"update_solvable", (PyCFunction)Request_update_solvable, METH_VARARGS, NULL},
+ {"update_relation", (PyCFunction)Request_update_relation, METH_VARARGS, NULL},
+ {"update_name", (PyCFunction)Request_update_name, METH_VARARGS, NULL},
+ {"lock_solvable", (PyCFunction)Request_lock_solvable, METH_VARARGS, NULL},
+ {"lock_relation", (PyCFunction)Request_lock_relation, METH_VARARGS, NULL},
+ {"lock_name", (PyCFunction)Request_lock_name, METH_VARARGS, NULL},
{ NULL, NULL, 0, NULL }
};
self->ob_type->tp_free((PyObject *)self);
}
+void _Request_solvable(RequestObject *self, Id what, Id solvable) {
+ queue_push(&self->_queue, what|SOLVER_SOLVABLE);
+ queue_push(&self->_queue, solvable);
+}
+
+void _Request_relation(RequestObject *self, Id what, Id relation) {
+ queue_push(&self->_queue, what|SOLVER_SOLVABLE_PROVIDES);
+ queue_push(&self->_queue, relation);
+}
+
+void _Request_name(RequestObject *self, Id what, Id provides) {
+ queue_push(&self->_queue, what|SOLVER_SOLVABLE_NAME);
+ queue_push(&self->_queue, provides);
+}
+
PyObject *Request_install_solvable(RequestObject *self, PyObject *args) {
SolvableObject *solv;
/* XXX raise exception */
}
- queue_push(&self->_queue, SOLVER_INSTALL|SOLVER_SOLVABLE);
- queue_push(&self->_queue, solv->_id);
+ _Request_solvable(self, SOLVER_INSTALL, solv->_id);
Py_RETURN_NONE;
}
/* XXX raise exception */
}
- queue_push(&self->_queue, SOLVER_INSTALL|SOLVER_SOLVABLE_PROVIDES);
- queue_push(&self->_queue, rel->_id);
+ _Request_relation(self, SOLVER_INSTALL, rel->_id);
Py_RETURN_NONE;
}
/* XXX raise exception */
}
- queue_push(&self->_queue, SOLVER_INSTALL|SOLVER_SOLVABLE_NAME);
- queue_push(&self->_queue, pool_str2id(self->_pool, name, 1));
+ Id _name = pool_str2id(self->_pool, name, 1);
+ _Request_name(self, SOLVER_INSTALL, _name);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *Request_remove_solvable(RequestObject *self, PyObject *args) {
+ SolvableObject *solv;
+
+ if (!PyArg_ParseTuple(args, "O", &solv)) {
+ /* XXX raise exception */
+ }
+
+ _Request_solvable(self, SOLVER_ERASE, solv->_id);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *Request_remove_relation(RequestObject *self, PyObject *args) {
+ RelationObject *rel;
+
+ if (!PyArg_ParseTuple(args, "O", &rel)) {
+ /* XXX raise exception */
+ }
+
+ _Request_relation(self, SOLVER_ERASE, rel->_id);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *Request_remove_name(RequestObject *self, PyObject *args) {
+ const char *name;
+
+ if (!PyArg_ParseTuple(args, "s", &name)) {
+ /* XXX raise exception */
+ }
+
+ Id _name = pool_str2id(self->_pool, name, 1);
+ _Request_name(self, SOLVER_ERASE, _name);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *Request_update_solvable(RequestObject *self, PyObject *args) {
+ SolvableObject *solv;
+
+ if (!PyArg_ParseTuple(args, "O", &solv)) {
+ /* XXX raise exception */
+ }
+
+ _Request_solvable(self, SOLVER_UPDATE, solv->_id);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *Request_update_relation(RequestObject *self, PyObject *args) {
+ RelationObject *rel;
+
+ if (!PyArg_ParseTuple(args, "O", &rel)) {
+ /* XXX raise exception */
+ }
+
+ _Request_relation(self, SOLVER_UPDATE, rel->_id);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *Request_update_name(RequestObject *self, PyObject *args) {
+ const char *name;
+
+ if (!PyArg_ParseTuple(args, "s", &name)) {
+ /* XXX raise exception */
+ }
+
+ Id _name = pool_str2id(self->_pool, name, 1);
+ _Request_name(self, SOLVER_UPDATE, _name);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *Request_lock_solvable(RequestObject *self, PyObject *args) {
+ SolvableObject *solv;
+
+ if (!PyArg_ParseTuple(args, "O", &solv)) {
+ /* XXX raise exception */
+ }
+
+ _Request_solvable(self, SOLVER_LOCK, solv->_id);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *Request_lock_relation(RequestObject *self, PyObject *args) {
+ RelationObject *rel;
+
+ if (!PyArg_ParseTuple(args, "O", &rel)) {
+ /* XXX raise exception */
+ }
+
+ _Request_relation(self, SOLVER_LOCK, rel->_id);
+
+ Py_RETURN_NONE;
+}
+
+PyObject *Request_lock_name(RequestObject *self, PyObject *args) {
+ const char *name;
+
+ if (!PyArg_ParseTuple(args, "s", &name)) {
+ /* XXX raise exception */
+ }
+
+ Id _name = pool_str2id(self->_pool, name, 1);
+ _Request_name(self, SOLVER_LOCK, _name);
Py_RETURN_NONE;
}
extern PyObject* Request_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
extern PyObject *Request_dealloc(RequestObject *self);
+
+extern void _Request_solvable(RequestObject *self, Id what, Id solvable);
+extern void _Request_relation(RequestObject *self, Id what, Id relation);
+extern void _Request_name(RequestObject *self, Id what, Id provides);
+
extern PyObject *Request_install_solvable(RequestObject *self, PyObject *args);
extern PyObject *Request_install_relation(RequestObject *self, PyObject *args);
extern PyObject *Request_install_name(RequestObject *self, PyObject *args);
+extern PyObject *Request_remove_solvable(RequestObject *self, PyObject *args);
+extern PyObject *Request_remove_relation(RequestObject *self, PyObject *args);
+extern PyObject *Request_remove_name(RequestObject *self, PyObject *args);
+
+extern PyObject *Request_update_solvable(RequestObject *self, PyObject *args);
+extern PyObject *Request_update_relation(RequestObject *self, PyObject *args);
+extern PyObject *Request_update_name(RequestObject *self, PyObject *args);
+
+extern PyObject *Request_lock_solvable(RequestObject *self, PyObject *args);
+extern PyObject *Request_lock_relation(RequestObject *self, PyObject *args);
+extern PyObject *Request_lock_name(RequestObject *self, PyObject *args);
+
extern PyTypeObject RequestType;
#endif