alsa-project/alsa-gobject pull request #30 was opened from takaswie:
In UAPI of Linux sound subsystem, `snd_seq_queue_timer` structure includes union member.
Current implementation of ALSASeq uses abstract class (ALSASeqQueueTimer) and concrete class (ALSASeqQueueTimerAlsa) to represent variation corresponding to each of union member. However, the design pattern is not convenient for some language bindings.
For example, in Rust language, class-based inheritance is not supported. Gtk-rs project produces mechanism to upcast/downcast between super/sub classes and handles GObject class system. In my opinion, the code to upcast/downcast is a bit complicated to handle derivatives.
This patchset obsoletes usage of abstract class for ALSASeq. The target is ALSASeqQueueTimer. ALSASeqQueueTimerDataAlsa is newly defined to retrieve data for the case of ALSATimer and the inherited ALSASeqQueueTimerAlsa is deleted.
Request URL : https://github.com/alsa-project/alsa-gobject/pull/30 Patch URL : https://github.com/alsa-project/alsa-gobject/pull/30.patch Repository URL: https://github.com/alsa-project/alsa-gobject