Base class design and properties

Carlos Rafael Giani dv at pseudoterminal.org
Fri Jun 21 22:09:59 PDT 2013


Hello,

I am currently designing a base class, and noticed that some subclasses
may not require some properties, while others might.

Looking at the existing GStreamer base classes, it turned out that the 
same issue exists,
and is handled by simply letting the subclass ignore these properties. 
An example is the
GstAudioDecoder class and its plc property. This property is always 
present, even if the
subclass does not support any packet loss concealment.

I could do that if a property is simply a boolean. It becomes more 
problematic if it is
for example an enum, and some subclasses only support a subset of the 
enum values.

Perhaps the subclass could add a second, read-only property, indicating 
the range of valid
values? For example, if there is an enum property "foo", with the 
possible values being
"a", "b", "c", then there could be function the subclass can use to 
install a "can-foo" property,
and define which one of a/b/c it supports. Applications then know what 
the subclass can do.
So, if the subclass supported only "b" and "c", it could call in its 
class_init function something
like baseclass_set_foo_property_valid_values(baseclass, B, C);
of course, this means the base class would have to define this function 
for property foo.

Any thoughts?

cheers


More information about the gstreamer-devel mailing list