battle@ALPHARD.CS.UTK.EDU (02/08/90)
In the R4 Intrinsics manual in section 1.6.4 there are some bits of code which pretend to be an example of a possible Label widget. Looking through the code I see: /* Forward declarations of procedures */ . . . static void SetText(); static void GetText(); . . . /* Class record constant */ LabelClassRec labelClassRec = { { /* core class fields */ /* superclass */ (WidgetClass) &coreClassRec, . . . /* extension */ NULL }, { /* Label class fields */ /* get_text */ GetText, /* set_text */ SetText, /* extension */ NULL } }; . . . /* New method access routines */ void Label SetText(w, text) Widget w; String text; { Label WidgetClass lwc = (Label WidgetClass)XtClass(w); XtCheckSubclass(w, labelWidgetClass, NULL); *(lwc->label_class.set_text)(w, text) } . . . Hmm. Isn't that cute. You make a nice little interface for the user to use which calls the class's set_text method. But wait a minute. This *is* the class set_text method. This call would recurse endlessly if it would compile (there is also an omitted semicolon and what looks like a space inside a typedef name "Label WidgetClass"). I suspect that this code has never been compiled or tested. -David L. Battle battle@battle.esd.ornl.gov battle@utkux1.utk.edu P.S. News is broken here. Please send any followups to me by personal email in addition to posting. Thanks.