]>
git.ipfire.org Git - people/stevee/pakfire.git/blob - src/request.c
7 #include <satsolver/solver.h>
9 PyTypeObject RequestType
= {
10 PyObject_HEAD_INIT(NULL
)
11 tp_name
: "_pakfire.Request",
12 tp_basicsize
: sizeof(RequestObject
),
13 tp_flags
: Py_TPFLAGS_DEFAULT
| Py_TPFLAGS_BASETYPE
,
15 tp_dealloc
: (destructor
) Request_dealloc
,
16 tp_doc
: "Sat Request objects",
19 PyObject
* Request_new(PyTypeObject
*type
, PyObject
*args
, PyObject
*kwds
) {
23 if (!PyArg_ParseTuple(args
, "O", &pool
)) {
24 /* XXX raise exception */
27 self
= (RequestObject
*)type
->tp_alloc(type
, 0);
29 self
->_pool
= pool
->_pool
;
30 if (self
->_pool
== NULL
) {
35 queue_init(&self
->_queue
);
38 return (PyObject
*)self
;
41 PyObject
*Request_dealloc(RequestObject
*self
) {
42 self
->ob_type
->tp_free((PyObject
*)self
);
45 void _Request_solvable(RequestObject
*self
, Id what
, Id solvable
) {
46 queue_push(&self
->_queue
, what
|SOLVER_SOLVABLE
);
47 queue_push(&self
->_queue
, solvable
);
50 void _Request_relation(RequestObject
*self
, Id what
, Id relation
) {
51 queue_push(&self
->_queue
, what
|SOLVER_SOLVABLE_PROVIDES
);
52 queue_push(&self
->_queue
, relation
);
55 void _Request_name(RequestObject
*self
, Id what
, Id provides
) {
56 queue_push(&self
->_queue
, what
|SOLVER_SOLVABLE_NAME
);
57 queue_push(&self
->_queue
, provides
);
60 PyObject
*Request_install_solvable(RequestObject
*self
, PyObject
*args
) {
63 if (!PyArg_ParseTuple(args
, "O", &solv
)) {
64 /* XXX raise exception */
67 _Request_solvable(self
, SOLVER_INSTALL
, solv
->_id
);
72 PyObject
*Request_install_relation(RequestObject
*self
, PyObject
*args
) {
75 if (!PyArg_ParseTuple(args
, "O", &rel
)) {
76 /* XXX raise exception */
79 _Request_relation(self
, SOLVER_INSTALL
, rel
->_id
);
84 PyObject
*Request_install_name(RequestObject
*self
, PyObject
*args
) {
87 if (!PyArg_ParseTuple(args
, "s", &name
)) {
88 /* XXX raise exception */
91 Id _name
= pool_str2id(self
->_pool
, name
, 1);
92 _Request_name(self
, SOLVER_INSTALL
, _name
);
97 PyObject
*Request_remove_solvable(RequestObject
*self
, PyObject
*args
) {
100 if (!PyArg_ParseTuple(args
, "O", &solv
)) {
101 /* XXX raise exception */
104 _Request_solvable(self
, SOLVER_ERASE
, solv
->_id
);
109 PyObject
*Request_remove_relation(RequestObject
*self
, PyObject
*args
) {
112 if (!PyArg_ParseTuple(args
, "O", &rel
)) {
113 /* XXX raise exception */
116 _Request_relation(self
, SOLVER_ERASE
, rel
->_id
);
121 PyObject
*Request_remove_name(RequestObject
*self
, PyObject
*args
) {
124 if (!PyArg_ParseTuple(args
, "s", &name
)) {
125 /* XXX raise exception */
128 Id _name
= pool_str2id(self
->_pool
, name
, 1);
129 _Request_name(self
, SOLVER_ERASE
, _name
);
134 PyObject
*Request_update_solvable(RequestObject
*self
, PyObject
*args
) {
135 SolvableObject
*solv
;
137 if (!PyArg_ParseTuple(args
, "O", &solv
)) {
138 /* XXX raise exception */
141 _Request_solvable(self
, SOLVER_UPDATE
, solv
->_id
);
146 PyObject
*Request_update_relation(RequestObject
*self
, PyObject
*args
) {
149 if (!PyArg_ParseTuple(args
, "O", &rel
)) {
150 /* XXX raise exception */
153 _Request_relation(self
, SOLVER_UPDATE
, rel
->_id
);
158 PyObject
*Request_update_name(RequestObject
*self
, PyObject
*args
) {
161 if (!PyArg_ParseTuple(args
, "s", &name
)) {
162 /* XXX raise exception */
165 Id _name
= pool_str2id(self
->_pool
, name
, 1);
166 _Request_name(self
, SOLVER_UPDATE
, _name
);
171 PyObject
*Request_lock_solvable(RequestObject
*self
, PyObject
*args
) {
172 SolvableObject
*solv
;
174 if (!PyArg_ParseTuple(args
, "O", &solv
)) {
175 /* XXX raise exception */
178 _Request_solvable(self
, SOLVER_LOCK
, solv
->_id
);
183 PyObject
*Request_lock_relation(RequestObject
*self
, PyObject
*args
) {
186 if (!PyArg_ParseTuple(args
, "O", &rel
)) {
187 /* XXX raise exception */
190 _Request_relation(self
, SOLVER_LOCK
, rel
->_id
);
195 PyObject
*Request_lock_name(RequestObject
*self
, PyObject
*args
) {
198 if (!PyArg_ParseTuple(args
, "s", &name
)) {
199 /* XXX raise exception */
202 Id _name
= pool_str2id(self
->_pool
, name
, 1);
203 _Request_name(self
, SOLVER_LOCK
, _name
);