meson-sample.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #include "meson-sample.h"
  2. typedef struct _MesonSamplePrivate
  3. {
  4. gchar *msg;
  5. } MesonSamplePrivate;
  6. G_DEFINE_TYPE_WITH_PRIVATE (MesonSample, meson_sample, G_TYPE_OBJECT)
  7. enum {
  8. PROP_0,
  9. PROP_MSG,
  10. LAST_PROP
  11. };
  12. static GParamSpec *gParamSpecs [LAST_PROP];
  13. /**
  14. * meson_sample_new:
  15. * @msg: The message to set.
  16. *
  17. * Allocates a new #MesonSample.
  18. *
  19. * Returns: (transfer full): a #MesonSample.
  20. */
  21. MesonSample *
  22. meson_sample_new (const gchar *msg)
  23. {
  24. g_return_val_if_fail (msg != NULL, NULL);
  25. return g_object_new (MESON_TYPE_SAMPLE,
  26. "message", msg,
  27. NULL);
  28. }
  29. static void
  30. meson_sample_finalize (GObject *object)
  31. {
  32. MesonSamplePrivate *priv = meson_sample_get_instance_private ((MesonSample *) object);
  33. g_clear_pointer (&priv->msg, g_free);
  34. G_OBJECT_CLASS (meson_sample_parent_class)->finalize (object);
  35. }
  36. static void
  37. meson_sample_get_property (GObject *object,
  38. guint prop_id,
  39. GValue *value,
  40. GParamSpec *pspec)
  41. {
  42. MesonSamplePrivate *priv = meson_sample_get_instance_private ((MesonSample *) object);
  43. switch (prop_id)
  44. {
  45. case PROP_MSG:
  46. g_value_set_string (value, priv->msg);
  47. break;
  48. default:
  49. G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
  50. }
  51. }
  52. static void
  53. meson_sample_set_property (GObject *object,
  54. guint prop_id,
  55. const GValue *value,
  56. GParamSpec *pspec)
  57. {
  58. MesonSamplePrivate *priv = meson_sample_get_instance_private ((MesonSample *) object);
  59. switch (prop_id)
  60. {
  61. case PROP_MSG:
  62. priv->msg = g_value_dup_string (value);
  63. break;
  64. default:
  65. G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
  66. }
  67. }
  68. static void
  69. meson_sample_class_init (MesonSampleClass *klass)
  70. {
  71. GObjectClass *object_class = G_OBJECT_CLASS (klass);
  72. object_class->finalize = meson_sample_finalize;
  73. object_class->get_property = meson_sample_get_property;
  74. object_class->set_property = meson_sample_set_property;
  75. gParamSpecs [PROP_MSG] =
  76. g_param_spec_string ("message",
  77. "Message",
  78. "The message to print.",
  79. NULL,
  80. (G_PARAM_READWRITE |
  81. G_PARAM_CONSTRUCT_ONLY |
  82. G_PARAM_STATIC_STRINGS));
  83. g_object_class_install_properties (object_class, LAST_PROP, gParamSpecs);
  84. }
  85. static void
  86. meson_sample_init (MesonSample *self)
  87. {
  88. }
  89. /**
  90. * meson_sample_print_message:
  91. * @self: a #MesonSample.
  92. *
  93. * Prints the message.
  94. *
  95. * Returns: Nothing.
  96. */
  97. void
  98. meson_sample_print_message (MesonSample *self)
  99. {
  100. MesonSamplePrivate *priv;
  101. g_return_if_fail (MESON_IS_SAMPLE (self));
  102. priv = meson_sample_get_instance_private (self);
  103. g_print ("Message: %s\n", priv->msg);
  104. }