From 4b7135502216f8284063cc6b341e7e4f9ee20fc6 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Mon, 18 Nov 2019 13:22:44 +0900 Subject: [PATCH] ctl: card: add object to represent sound card --- src/ctl/alsactl.map | 3 +++ src/ctl/card.c | 24 ++++++++++++++++++++++ src/ctl/card.h | 49 +++++++++++++++++++++++++++++++++++++++++++++ src/ctl/meson.build | 2 ++ tests/alsactl-card | 20 ++++++++++++++++++ tests/meson.build | 1 + 6 files changed, 99 insertions(+) create mode 100644 src/ctl/card.c create mode 100644 src/ctl/card.h create mode 100644 tests/alsactl-card diff --git a/src/ctl/alsactl.map b/src/ctl/alsactl.map index 45d84d3..f7b0ed6 100644 --- a/src/ctl/alsactl.map +++ b/src/ctl/alsactl.map @@ -10,6 +10,9 @@ ALSA_GOBJECT_0_0_0 { "alsactl_get_card_sysname"; "alsactl_get_control_sysname"; "alsactl_get_control_devnode"; + + "alsactl_card_get_type"; + "alsactl_card_new"; local: *; }; diff --git a/src/ctl/card.c b/src/ctl/card.c new file mode 100644 index 0000000..565b3c2 --- /dev/null +++ b/src/ctl/card.c @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later +#include "card.h" + +G_DEFINE_TYPE(ALSACtlCard, alsactl_card, G_TYPE_OBJECT) + +static void alsactl_card_class_init(ALSACtlCardClass *klass) +{ + return; +} + +static void alsactl_card_init(ALSACtlCard *self) +{ + return; +} + +/** + * alsactl_card_new: + * + * Allocate and return an instance of ALSACtlCard class. + */ +ALSACtlCard *alsactl_card_new() +{ + return g_object_new(ALSACTL_TYPE_CARD, NULL); +} diff --git a/src/ctl/card.h b/src/ctl/card.h new file mode 100644 index 0000000..9d443f8 --- /dev/null +++ b/src/ctl/card.h @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later +#ifndef __ALSA_GOBJECT_ALSACTL_CARD__H__ +#define __ALSA_GOBJECT_ALSACTL_CARD__H__ + +#include +#include + +G_BEGIN_DECLS + +#define ALSACTL_TYPE_CARD (alsactl_card_get_type()) + +#define ALSACTL_CARD(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + ALSACTL_TYPE_CARD, \ + ALSACtlCard)) +#define ALSACTL_IS_CARD(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ + ALSACTL_TYPE_CARD)) + +#define ALSACTL_CARD_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + ALSACTL_TYPE_CARD, \ + ALSACtlCardClass)) +#define ALSACTL_IS_CARD_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), \ + ALSACTL_TYPE_CARD)) +#define ALSACTL_CARD_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS((obj), \ + ALSACTL_TYPE_CARD, \ + ALSACtlCardClass)) + +typedef struct _ALSACtlCard ALSACtlCard; +typedef struct _ALSACtlCardClass ALSACtlCardClass; + +struct _ALSACtlCard { + GObject parent_instance; +}; + +struct _ALSACtlCardClass { + GObjectClass parent_class; +}; + +GType alsactl_card_get_type() G_GNUC_CONST; + +ALSACtlCard *alsactl_card_new(); + +G_END_DECLS + +#endif diff --git a/src/ctl/meson.build b/src/ctl/meson.build index b15bece..4d9fadb 100644 --- a/src/ctl/meson.build +++ b/src/ctl/meson.build @@ -10,10 +10,12 @@ has_marshaller = false sources = files( 'query.c', + 'card.c', ) headers = files( 'query.h', + 'card.h', ) privates = files( diff --git a/tests/alsactl-card b/tests/alsactl-card new file mode 100644 index 0000000..eb46ee8 --- /dev/null +++ b/tests/alsactl-card @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +from sys import exit +from errno import ENXIO + +from helper import test + +import gi +gi.require_version('ALSACtl', '0.0') +from gi.repository import ALSACtl + +target = ALSACtl.Card() +props = () +methods = ( + 'new', +) +signals = () + +if not test(target, props, methods, signals): + exit(ENXIO) diff --git a/tests/meson.build b/tests/meson.build index 5735350..1384379 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -4,6 +4,7 @@ tests = { 'ctl': [ 'alsactl-enums', + 'alsactl-card', ], } -- 2.47.3