Tutorial Pages‎ > ‎

Getting values from lists

The Tcl library provides a useful array of functions for the manipulation of lists. Here's a snippet to show how to obtain sub-string from a string argument.

Here's the line of Tcl script that needs to be parsed.

-baseFont {"Andika Basic" 8}

Clearly a call to sscanf is not much use because it will break down the font name into two elements: "{Andika" and "Basic}". Better use the Tcl library function Tcl_ListObjIndex which enables list elements to be pulled out for further processing.

The following snippet is taken from the print.c module:

/* obtain values from a list */
Tcl_Obj *pobj;
gdouble size;

/* font */
Tcl_ListObjIndex ( interp, objv[i+1], 0, &pobj );
w->data->font = Tcl_GetString ( pobj );

/* size */
Tcl_ListObjIndex ( interp, objv[i+1], 1, &pobj ) ;
Tcl_GetDoubleFromObj ( interp, pobj, &size );

w->data->font_size = size;