00001
00005 #include "system.h"
00006
00007 #include <rpmio.h>
00008 #include <rpmiotypes.h>
00009 #include <rpmtypes.h>
00010 #include <rpmtag.h>
00011
00012 #include "rpmal-py.h"
00013 #include "rpmds-py.h"
00014 #include "rpmfi-py.h"
00015
00016 #include "debug.h"
00017
00018
00019 static PyObject *
00020 rpmal_Add(rpmalObject * s, PyObject * args, PyObject * kwds)
00021
00022 {
00023 rpmdsObject * dso;
00024 rpmfiObject * fio;
00025 PyObject * key;
00026 alKey pkgKey;
00027 char * kwlist[] = {"packageKey", "key", "dso", "fileInfo", NULL};
00028
00029 if (!PyArg_ParseTupleAndKeywords(args, kwds, "iOO!O!:Add", kwlist,
00030 &pkgKey, &key, &rpmds_Type, &dso, &rpmfi_Type, &fio))
00031 return NULL;
00032
00033
00034
00035 pkgKey = rpmalAdd(&s->al, pkgKey, key, dso->ds, fio->fi, 0);
00036
00037 return Py_BuildValue("i", pkgKey);
00038 }
00039
00040
00041 static PyObject *
00042 rpmal_Del(rpmalObject * s, PyObject * args, PyObject * kwds)
00043
00044
00045 {
00046 alKey pkgKey;
00047 char * kwlist[] = {"key", NULL};
00048
00049 if (!PyArg_ParseTupleAndKeywords(args, kwds, "i:Del", kwlist, &pkgKey))
00050 return NULL;
00051
00052 rpmalDel(s->al, pkgKey);
00053
00054 Py_INCREF(Py_None);
00055 return Py_None;
00056 }
00057
00058
00059 static PyObject *
00060 rpmal_AddProvides(rpmalObject * s, PyObject * args, PyObject * kwds)
00061
00062
00063 {
00064 rpmdsObject * dso;
00065 alKey pkgKey;
00066 char * kwlist[] = {"index", "packageIndex", "dso", NULL};
00067
00068
00069
00070 if (!PyArg_ParseTupleAndKeywords(args, kwds, "iOO!O!:AddProvides", kwlist,
00071 &pkgKey, &rpmds_Type, &dso))
00072 return NULL;
00073
00074
00075 rpmalAddProvides(s->al, pkgKey, dso->ds, 0);
00076
00077 Py_INCREF(Py_None);
00078 return Py_None;
00079 }
00080
00081
00082 static PyObject *
00083 rpmal_MakeIndex(rpmalObject * s)
00084
00085
00086 {
00087 rpmalMakeIndex(s->al);
00088
00089 Py_INCREF(Py_None);
00090 return Py_None;
00091 }
00092
00093
00094
00095 static struct PyMethodDef rpmal_methods[] = {
00096 {"add", (PyCFunction)rpmal_Add, METH_VARARGS|METH_KEYWORDS,
00097 NULL},
00098 {"delete", (PyCFunction)rpmal_Del, METH_VARARGS|METH_KEYWORDS,
00099 NULL},
00100 {"addProvides",(PyCFunction)rpmal_AddProvides, METH_VARARGS|METH_KEYWORDS,
00101 NULL},
00102 {"makeIndex",(PyCFunction)rpmal_MakeIndex, METH_NOARGS,
00103 NULL},
00104 {NULL, NULL }
00105 };
00106
00107
00108
00109
00110 static void
00111 rpmal_dealloc(rpmalObject * s)
00112
00113 {
00114 if (s) {
00115 s->al = rpmalFree(s->al);
00116 PyObject_Del(s);
00117 }
00118 }
00119
00120 static PyObject * rpmal_getattro(PyObject * o, PyObject * n)
00121
00122 {
00123 return PyObject_GenericGetAttr(o, n);
00124 }
00125
00126 static int rpmal_setattro(PyObject * o, PyObject * n, PyObject * v)
00127
00128 {
00129 return PyObject_GenericSetAttr(o, n, v);
00130 }
00131
00134
00135 static char rpmal_doc[] =
00136 "";
00137
00138
00139
00140 PyTypeObject rpmal_Type = {
00141 PyObject_HEAD_INIT(&PyType_Type)
00142 0,
00143 "rpm.al",
00144 sizeof(rpmalObject),
00145 0,
00146
00147 (destructor) rpmal_dealloc,
00148 (printfunc)0,
00149 (getattrfunc)0,
00150 (setattrfunc)0,
00151 (cmpfunc)0,
00152 (reprfunc)0,
00153 0,
00154 0,
00155 0,
00156 (hashfunc)0,
00157 (ternaryfunc)0,
00158 (reprfunc)0,
00159 (getattrofunc) rpmal_getattro,
00160 (setattrofunc) rpmal_setattro,
00161 0,
00162 Py_TPFLAGS_DEFAULT,
00163 rpmal_doc,
00164 #if Py_TPFLAGS_HAVE_ITER
00165 0,
00166 0,
00167 0,
00168 0,
00169 (getiterfunc)0,
00170 (iternextfunc)0,
00171 rpmal_methods,
00172 0,
00173 0,
00174 0,
00175 0,
00176 0,
00177 0,
00178 0,
00179 0,
00180 0,
00181 0,
00182 0,
00183 0,
00184 #endif
00185 };
00186
00187
00188
00189
00190 rpmalObject *
00191 rpmal_Wrap(rpmal al)
00192 {
00193 rpmalObject *s = PyObject_New(rpmalObject, &rpmal_Type);
00194 if (s == NULL)
00195 return NULL;
00196 s->al = al;
00197 return s;
00198 }