#include "key.h"
#include "pakfire.h"
-static PyObject* Key_new_core(PyTypeObject* type, PakfireObject* pakfire, PakfireKey key) {
+PyObject* new_key(PyTypeObject* type, PakfireKey key) {
KeyObject* self = (KeyObject *)type->tp_alloc(type, 0);
if (self) {
- self->pakfire = pakfire;
- self->key = key;
+ self->key = pakfire_key_ref(key);
}
return (PyObject *)self;
}
-PyObject* new_key(PakfireObject* pakfire, PakfireKey key) {
- return Key_new_core(&KeyType, pakfire, pakfire_key_ref(key));
-}
-
static PyObject* Key_new(PyTypeObject* type, PyObject* args, PyObject* kwds) {
- return Key_new_core(type, NULL, NULL);
+ KeyObject* self = (KeyObject *)type->tp_alloc(type, 0);
+ if (self) {
+ self->key = NULL;
+ }
+
+ return (PyObject *)self;
}
static void Key_dealloc(KeyObject* self) {
- if (self->key)
- pakfire_key_unref(self->key);
-
- if (self->pakfire)
- Py_DECREF(self->pakfire);
+ pakfire_key_unref(self->key);
Py_TYPE(self)->tp_free((PyObject *)self);
}
static int Key_init(KeyObject* self, PyObject* args, PyObject* kwds) {
- PyObject* pakfire;
+ PakfireObject* pakfire;
const char* fingerprint = NULL;
if (!PyArg_ParseTuple(args, "O!s", &PakfireType, &pakfire, &fingerprint))
return -1;
- self->pakfire = (PakfireObject *)pakfire;
- Py_INCREF(self->pakfire);
-
- self->key = pakfire_key_get(self->pakfire->pakfire, fingerprint);
+ self->key = pakfire_key_get(pakfire->pakfire, fingerprint);
if (!self->key)
return -1;
#include <pakfire/key.h>
-#include "pakfire.h"
-
typedef struct {
PyObject_HEAD
- PakfireObject* pakfire;
PakfireKey key;
} KeyObject;
extern PyTypeObject KeyType;
-PyObject* new_key(PakfireObject* pakfire, PakfireKey key);
+PyObject* new_key(PyTypeObject* type, PakfireKey key);
#endif /* PYTHON_PAKFIRE_KEY_H */