if (self->db)
loc_database_unref(self->db);
+ if (self->path)
+ free(self->path);
+
Py_TYPE(self)->tp_free((PyObject* )self);
}
if (!PyArg_ParseTuple(args, "s", &path))
return -1;
+ self->path = strdup(path);
+
// Open the file for reading
- FILE* f = fopen(path, "r");
+ FILE* f = fopen(self->path, "r");
if (!f)
return -1;
return 0;
}
+static PyObject* Database_repr(DatabaseObject* self) {
+ return PyUnicode_FromFormat("<Database %s>", self->path);
+}
+
static PyObject* Database_get_description(DatabaseObject* self) {
const char* description = loc_database_get_description(self->db);
return PyUnicode_FromString(vendor);
}
+static PyObject* Database_get_license(DatabaseObject* self) {
+ const char* license = loc_database_get_license(self->db);
+
+ return PyUnicode_FromString(license);
+}
+
static PyObject* Database_get_created_at(DatabaseObject* self) {
time_t created_at = loc_database_created_at(self->db);
// Try to retrieve the AS
int r = loc_database_get_as(self->db, &as, number);
- if (r)
- return NULL;
- // Create an AS object
- if (as) {
+ // We got an AS
+ if (r == 0) {
PyObject* obj = new_as(&ASType, as);
loc_as_unref(as);
return obj;
- }
// Nothing found
- Py_RETURN_NONE;
+ } else if (r == 1) {
+ Py_RETURN_NONE;
+ }
+
+ // Unexpected error
+ return NULL;
}
static PyObject* Database_lookup(DatabaseObject* self, PyObject* args) {
NULL,
NULL,
},
+ {
+ "license",
+ (getter)Database_get_license,
+ NULL,
+ NULL,
+ NULL,
+ },
{
"vendor",
(getter)Database_get_vendor,
tp_doc: "Database object",
tp_methods: Database_methods,
tp_getset: Database_getsetters,
+ tp_repr: (reprfunc)Database_repr,
};