Skip to content

Commit

Permalink
Create new bindings for reldep
Browse files Browse the repository at this point in the history
They will provide getters for name, relation and version.
  • Loading branch information
j-mracek authored and pkratoch committed Sep 30, 2021
1 parent f15e973 commit bff0078
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
18 changes: 18 additions & 0 deletions libdnf/dnf-reldep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,24 @@ dnf_reldep_get_id (DnfReldep *reldep)
return reldep->getId();
}

const char *
dnf_reldep_get_name(DnfReldep * reldep)
{
return reldep->getName();
}

const char *
dnf_reldep_get_relation(DnfReldep * reldep)
{
return reldep->getRelation();
}

const char *
dnf_reldep_get_version(DnfReldep * reldep)
{
return reldep->getVersion();
}

void dnf_reldep_free(DnfReldep *reldep)
{
delete reldep;
Expand Down
3 changes: 3 additions & 0 deletions libdnf/dnf-reldep.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ extern "C" {
DnfReldep *dnf_reldep_new(DnfSack *sack, const char *name, int cmp_type, const char *evr);
const char *dnf_reldep_to_string(DnfReldep *reldep);
Id dnf_reldep_get_id(DnfReldep *reldep);
const char * dnf_reldep_get_name(DnfReldep * reldep);
const char * dnf_reldep_get_relation(DnfReldep * reldep);
const char * dnf_reldep_get_version(DnfReldep * reldep);
void dnf_reldep_free(DnfReldep *reldep);

#ifdef __cplusplus
Expand Down
22 changes: 21 additions & 1 deletion python/hawkey/reldep-py.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,26 @@ reldep_richcompare(PyObject *self, PyObject *other, int op) try
return result;
} CATCH_TO_PYTHON

static PyObject *
get_str(_ReldepObject *self, void *closure) try
{
const char *(*func)(DnfReldep*);
const char *cstr;

func = (const char *(*)(DnfReldep*))closure;
cstr = func(self->reldep);
if (cstr == NULL)
Py_RETURN_NONE;
return PyUnicode_FromString(cstr);
} CATCH_TO_PYTHON

static PyGetSetDef reldep_getsetters[] = {
{(char*)"name", (getter)get_str, NULL, NULL, (void *)dnf_reldep_get_name},
{(char*)"relation", (getter)get_str, NULL, NULL, (void *)dnf_reldep_get_relation},
{(char*)"version", (getter)get_str, NULL, NULL, (void *)dnf_reldep_get_version},
{NULL} /* sentinel */
};

PyTypeObject reldep_Type = {
PyVarObject_HEAD_INIT(NULL, 0)
"_hawkey.Reldep", /*tp_name*/
Expand Down Expand Up @@ -250,7 +270,7 @@ PyTypeObject reldep_Type = {
0, /* tp_iternext */
0, /* tp_methods */
0, /* tp_members */
0, /* tp_getset */
reldep_getsetters, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */
0, /* tp_descr_get */
Expand Down

0 comments on commit bff0078

Please sign in to comment.