/**************************************************************** NAME : EnvBrowseClasses DESCRIPTION : Displays a "graph" of the class hierarchy INPUTS : 1) The logical name of the output 2) Class pointer RETURNS : Nothing useful SIDE EFFECTS : None NOTES : None ****************************************************************/ globle void EnvBrowseClasses( void *theEnv, char *logicalName, void *clsptr) { PrintClassBrowse(theEnv,logicalName,(DEFCLASS *) clsptr,0); }
/**************************************************************** NAME : BrowseClasses DESCRIPTION : Displays a "graph" of the class hierarchy INPUTS : 1) The logical name of the output 2) Class pointer RETURNS : Nothing useful SIDE EFFECTS : None NOTES : None ****************************************************************/ void BrowseClasses( Defclass *theDefclass, const char *logicalName) { Environment *theEnv = theDefclass->header.env; PrintClassBrowse(theEnv,logicalName,theDefclass,0); }
/**************************************************************** NAME : PrintClassBrowse DESCRIPTION : Displays a "graph" of class and subclasses INPUTS : 1) The logical name of the output 2) The class address 3) The depth of the graph RETURNS : Nothing useful SIDE EFFECTS : None NOTES : None ****************************************************************/ static void PrintClassBrowse( void *theEnv, char *logicalName, DEFCLASS *cls, long depth) { long i; for (i = 0 ; i < depth ; i++) EnvPrintRouter(theEnv,logicalName," "); EnvPrintRouter(theEnv,logicalName,EnvGetDefclassName(theEnv,(void *) cls)); if (cls->directSuperclasses.classCount > 1) EnvPrintRouter(theEnv,logicalName," *"); EnvPrintRouter(theEnv,logicalName,"\n"); for (i = 0 ;i < cls->directSubclasses.classCount ; i++) PrintClassBrowse(theEnv,logicalName,cls->directSubclasses.classArray[i],depth+1); }
/**************************************************************** NAME : PrintClassBrowse DESCRIPTION : Displays a "graph" of class and subclasses INPUTS : 1) The logical name of the output 2) The class address 3) The depth of the graph RETURNS : Nothing useful SIDE EFFECTS : None NOTES : None ****************************************************************/ static void PrintClassBrowse( Environment *theEnv, const char *logicalName, Defclass *cls, unsigned long depth) { unsigned long i; for (i = 0 ; i < depth ; i++) WriteString(theEnv,logicalName," "); WriteString(theEnv,logicalName,DefclassName(cls)); if (cls->directSuperclasses.classCount > 1) WriteString(theEnv,logicalName," *"); WriteString(theEnv,logicalName,"\n"); for (i = 0 ;i < cls->directSubclasses.classCount ; i++) PrintClassBrowse(theEnv,logicalName,cls->directSubclasses.classArray[i],depth+1); }