[vlc-devel] [RFC] Regarding the use of *_Control()

Pierre d'Herbemont pdherbemont at free.fr
Mon Apr 14 13:27:41 CEST 2008


Hi,

I am wondering why *_Control() type function are used a lot in VLC.

To sum up:

*_Control( obj, CONTROL, args...)
{
	switch(CONTROL)
	{
		case TYPE:
			break;
		...
	}
}

To me this produce some difficultly readable code, such as:
- demux_Control( in->p_demux, DEMUX_SET_NEXT_DEMUX_TIME, i_time )
Where:
- demux_set_next_demux_time( in->p_demux, i_time )
should have been enough.

I do understand that to do subclassing, and to add new functionality  
to Control() function without breaking the ABI is quite easy.

I do doubt that this is a nice habit, and having internal function  
pointers would have been much cleaner IMO. (no need to switch(), it's  
easy to see if a function is supported or not, etc.)

For now I do plan to remove all public call to demux_Control, and  
internalize them. (Next up would be to completely remove them...)

What do you think?

Pierre.





More information about the vlc-devel mailing list