move over to gobject

This commit is contained in:
Florian Stinglmayr 2025-04-24 10:32:38 +02:00
parent 8578dbf77f
commit f8c5a33d36
5 changed files with 68 additions and 23 deletions

View File

@ -6,8 +6,8 @@ PKG_CHECK_MODULES(JANSSON REQUIRED jansson)
PKG_CHECK_MODULES(GLIB2 REQUIRED glib-2.0)
SET(SOURCES
"src/journalfile.c"
"include/edapi/journalfile.h"
"src/journal/file.c"
"include/edapi/journal/file.h"
)
INCLUDE_DIRECTORIES(

View File

@ -0,0 +1,17 @@
#ifndef EDAPI_JOURNAL_FILE_H
#define EDAPI_JOURNAL_FILE_H
#include <glib.h>
#include <glib-object.h>
G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE(EDJournalFile, ed_journal_file, ED, JOURNALFILE, GObject);
#define ED_TYPE_JOURNALFILE ed_journal_file_get_type()
EDJournalFile *ed_journal_file_new(void);
G_END_DECLS
#endif

View File

@ -1,9 +0,0 @@
#ifndef EDAPI_JOURNAL_FILE_H
#define EDAPI_JOURNAL_FILE_H
struct edapi_journalfile_;
typedef struct edapi_journal_file *edapi_journalfile_t;
edapi_journalfile_t edapi_journalfile_new(void);
#endif

49
lib/src/journal/file.c Normal file
View File

@ -0,0 +1,49 @@
#include <edapi/journal/file.h>
typedef struct {
char *filename;
char *timestamp;
} EDJournalFilePrivate;
struct _EDJournalFile {
GObject parent;
};
struct _EDJournalFileClass {
GObjectClass parent_class;
};
G_DEFINE_TYPE_EXTENDED(EDJournalFile,
ed_journal_file,
G_TYPE_OBJECT,
0,
G_ADD_PRIVATE(EDJournalFile)
);
static void ed_journal_file_finalize(GObject *obj)
{
EDJournalFile *self = ED_JOURNALFILE(obj);
EDJournalFilePrivate *p = ed_journal_file_get_instance_private(self);
free(p->filename);
p->filename = NULL;
free(p->timestamp);
p->timestamp = NULL;
G_OBJECT_CLASS(ed_journal_file_parent_class)->finalize(obj);
}
static void ed_journal_file_class_init(EDJournalFileClass *klass)
{
G_OBJECT_CLASS(klass)->finalize = ed_journal_file_finalize;
}
static void ed_journal_file_init(EDJournalFile *self)
{
}
EDJournalFile *ed_journal_file_new(void)
{
return g_object_new(ED_TYPE_JOURNALFILE, NULL);
}

View File

@ -1,12 +0,0 @@
#include <edapi/journalfile.h>
#include <stdlib.h>
struct edapi_journalfile_ {
void *tag;
};
edapi_journalfile_t edapi_journalfile_new(void)
{
return calloc(1, sizeof(struct edapi_journalfile_));
}