On Thu, Jan 21, 2010 at 12:34:54PM +0100, Johannes Meixner wrote:
I cannot find where `id() is documented, i.e. what exactly does this symbol do in particular regarding UI functions.
I am confused because http://forgeftp.novell.com/yast/doc/SL11.1/tdg/id_ycp_data_symbol.html reads "A symbol is a literal constant".
In contrast http://forgeftp.novell.com/yast/doc/SL11.1/tdg/ChangeWidget.html reads "symbol widgetId Can also be specified as `id( any widgetId )"
The ChangeWidget documentation is incomplete. It is true that the ID can be specified as `foo or `id(bar), where bar is of any type, but the function prototype wrongly restricts the argument type to a symbol.
Therefore for example in UI::ChangeWidget(`id("widget_id_string"),... the literal constant `id("widget_id_string") seems to be more like a function call of a function named id with prototype/signature symbol id ( any ) but I cannot even find such a function documented.
I use and used `id() by "look at other code" all the time but now I have the strange idea to try to understand it ;-)
In particular I wonder why UI::whatever_widget_function(`id(`widget_id_symbol),... is used most often in YCP code instead of simply calling UI::whatever_widget_function(`widget_id_symbol,... which is also (less often) used in YCP code.
For me `id(`widget_id_symbol) looks like a useless "call" of a symbol->symbol conversion.
`id is a term, not a function call. If the ID is a symbol, you can say `foo or `id(`foo), where the latter is preferred for consistency. -- Martin Vidner, YaST developer http://en.opensuse.org/User:Mvidner Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu