The widget is packaged as an extension that you can dynamically load into wish. Example 46-1 shows the Clock_Init procedure. It registers two commands, clock and oclock, which use the string-based and Tcl_Obj interfaces, respectively. It also initializes the stub table, which is described in Chapter 45, and declares a package so that scripts can load the widget with package require.
int ClockCmd(ClientData clientData, Tcl_Interp *interp, int argc, char *argv); int ClockObjCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv); void ClockObjDelete(ClientData clientData); /* * Clock_Init is called when the package is loaded. */ int Clock_Init(Tcl_Interp ...