[linux-dvb] What do you think of mpsys library ? (for ca_zap)
Johannes Stezenbach
js at linuxtv.org
Sat Apr 2 01:17:47 CEST 2005
On Sat, Apr 02, 2005 at 12:28:20AM +0200, Kenneth Aafløy wrote:
> On Saturday 02 April 2005 00:13, Johannes Stezenbach wrote:
> > Kenneth Aafløy wrote:
> > > } vid_dev_info_t;
> >
> > Please don't use typedefs unless you are explicitly defining
> > opaque data types. It makes it more difficult to see what's going on.
>
> I'm wondering if you recentment is against the typedef in general or the
> implementation of a clean api.
I'm neither agains typedefs, where they make sense, nor against clean APIs.
> The api will be well documented, and so
> will the new typedefed types? I was merily following the alsa api here,
> so I'm not in any way married to it yet! Any suggestions is very much
> welcome, please prove why your suggestion will produce a cleaner api.
Typedefs have a purpose: Creating an abstraction, i.e. hiding
information about the type from the user. IMHO it is totally useless to
stick a typedef on every struct or enum definition. All you get is
obfuscation. And the _t suffixes are ugly, too.
Please ask yourself if and why you want to hide from the users
of your API why e.g. vid_dev_hierarchy_t is an enum.
> /**
> * Set/Get DVB/ATSC parameters of the channel.
> * XXX - combined struct ??
> */
>
> typedef enum _vid_channel_param {
> VID_CHANNEL_PARAM_INVERSION,
> VID_CHANNEL_PARAM_FEC_RATE,
> VID_CHANNEL_PARAM_LOW_FEC_RATE,
> VID_CHANNEL_PARAM_MODULATION,
> VID_CHANNEL_PARAM_BANDWIDTH,
> VID_CHANNEL_PARAM_TRANSMISSION_MODE,
> VID_CHANNEL_PARAM_GUARD_INTERVAL,
> VID_CHANNEL_PARAM_HIERARCHY,
>
> VID_CHANNEL_PARAM_LAST
> } vid_channel_param_t;
>
> int vid_channel_set_param(vid_channel_param_t, int value);
> int vid_channel_get_param(vid_channel_param_t);
I would prefer to use a struct, or rather a union of structs for
each transmission system. You'd get nuts when you need a dozen
function calls to tune or update the channel list.
Johannes
More information about the linux-dvb
mailing list