diff --git a/test cases/frameworks/7 gir/golib.c b/test cases/frameworks/7 gir/golib.c new file mode 100644 index 000000000..2333d77ca --- /dev/null +++ b/test cases/frameworks/7 gir/golib.c @@ -0,0 +1,94 @@ +#include +#include "golib.h" + +G_DEFINE_TYPE (MesonSample, meson_sample, G_TYPE_OBJECT) + +#define MESON_SAMPLE_GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), MESON_SAMPLE_TYPE, MesonSamplePrivate)) + +struct _MesonSamplePrivate { + gchar *msg; +}; + +enum { + PROP_0, + PROP_MSG, + N_PROPERTIES +}; + +static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; + +static void meson_sample_init (MesonSample *object) +{ + MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); + priv->msg = NULL; +} +static void meson_sample_finalize (GObject *object) +{ + MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); + g_free (priv->msg); + G_OBJECT_CLASS (meson_sample_parent_class)->finalize (object); +} + +static void meson_sample_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) { + MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); + switch (property_id) { + case PROP_MSG: + g_free (priv->msg); + priv->msg = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void meson_sample_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) { + MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); + switch (property_id) { + case PROP_MSG: + g_value_set_string (value, priv->msg); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void meson_sample_class_init (MesonSampleClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->set_property = meson_sample_set_property; + object_class->get_property = meson_sample_get_property; + object_class->finalize = meson_sample_finalize; + + obj_properties[PROP_MSG] = + g_param_spec_string ("msg", + "Msg", + "The message to print.", + "propertytext", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT); + g_object_class_install_properties (object_class, + N_PROPERTIES, + obj_properties); + g_type_class_add_private (object_class, sizeof (MesonSamplePrivate)); +} + +MesonSample* meson_sample_new () { + MesonSample *sample; + sample = g_object_new(MESON_SAMPLE_TYPE, NULL); + return sample; +} + +void meson_sample_func (MesonSample *sample) { + MesonSamplePrivate *priv; + g_return_if_fail (sample != NULL); + priv = MESON_SAMPLE_GET_PRIVATE(sample); + printf("GObject introspection is working, %s!\n", priv->msg); +} diff --git a/test cases/frameworks/7 gir/golib.h b/test cases/frameworks/7 gir/golib.h new file mode 100644 index 000000000..40bf901dd --- /dev/null +++ b/test cases/frameworks/7 gir/golib.h @@ -0,0 +1,37 @@ +#ifndef GOLIB_H +#define GOLIB_H + +#include +#include + +#define MESON_SAMPLE_TYPE \ + (meson_sample_get_type()) +#define MESON_SAMPLE(o) \ + (G_TYPE_CHECK_INSTANCE_CAST ((o), MESON_SAMPLE_TYPE, MesonSample)) +#define MESON_SAMPLE_CLASS(c) \ + (G_TYPE_CHECK_CLASS_CAST ((c), MESON_SAMPLE_TYPE, MesonSampleClass)) +#define MESON_IS_SAMPLE(o) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((o), MESON_SAMPLE_TYPE)) +#define MESON_IS_SAMPLE_CLASS(c) \ + (G_TYPE_CHECK_CLASS_TYPE ((c), MESON_SAMPLE_TYPE)) +#define MESON_SAMPLE_GET_CLASS(o) \ + (G_TYPE_INSTANCE_GET_CLASS ((o), MESON_SAMPLE_TYPE, MesonSampleClass)) + +typedef struct _MesonSample MesonSample; +typedef struct _MesonSamplePrivate MesonSamplePrivate; +typedef struct _MesonSampleClass MesonSampleClass; + +struct _MesonSample { + GObject parent; +}; + +struct _MesonSampleClass { + GObjectClass parent; +}; + +GType meson_sample_get_type () G_GNUC_CONST; +MesonSample* meson_sample_new (void); + +void meson_sample_func (MesonSample *sample); + +#endif diff --git a/test cases/frameworks/7 gir/meson.build b/test cases/frameworks/7 gir/meson.build new file mode 100644 index 000000000..af85c8b83 --- /dev/null +++ b/test cases/frameworks/7 gir/meson.build @@ -0,0 +1,11 @@ +project('gobject-introspection', 'c') + +glib = dependency('glib-2.0') +gobj = dependency('gobject-2.0') + +libsources = ['golib.c', 'golib.h'] + +exe = executable('goprog', libsources, 'prog.c', +deps : [glib, gobj]) + +test('gobjtest', exe) diff --git a/test cases/frameworks/7 gir/prog.c b/test cases/frameworks/7 gir/prog.c new file mode 100644 index 000000000..137737e6e --- /dev/null +++ b/test cases/frameworks/7 gir/prog.c @@ -0,0 +1,15 @@ +#include +#include +#include"golib.h" + +int main (int argc, char *argv[]) +{ + MesonSample *i; + + i = meson_sample_new(); + meson_sample_func(i); + g_object_unref(G_OBJECT(i)); + + return 0; +} +