uStringList *CCTK_ImplementationRequires(const char *imp) { int i; t_sktree *impnode; struct IMPLEMENTATION *impdata; uStringList *ancestors; impnode = SKTreeFindNode(implist, imp); impdata = (struct IMPLEMENTATION *)(impnode->data); ancestors = Util_StringListCreate(n_thorns); /* Get ancestors */ for(i=0; impdata->ancestors[i]; i++) { CCTK_ImplementationThorn(impdata->ancestors[i]); Util_StringListAdd(ancestors,impdata->ancestors[i]); } /* Get friends */ for(i=0; impdata->friends[i]; i++) { CCTK_ImplementationThorn(impdata->friends[i]); Util_StringListAdd(ancestors,impdata->ancestors[i]); } return ancestors; }
/*@@ @routine CCTKi_CommandLineDescribeParameter @date Tue Apr 18 15:00:33 2000 @author Tom Goodale @desc Describe a particular parameter. @enddesc @calls Util_SplitString CCTK_ParameterData CCTK_ImplementationThorn CommandLinePrintParameter @var argument @vdesc option argument @vtype const char * @vio in @endvar @@*/ void CCTKi_CommandLineDescribeParameter (const char *argument) { char *thorn, *param; const char *cthorn; const cParamData *properties; if (CCTK_MyProc (NULL) == 0) { Util_SplitString (þ, ¶m, argument, "::"); if (! param) { properties = CCTK_ParameterData (argument, NULL); } else { properties = CCTK_ParameterData (param, thorn); if (! properties) { cthorn = CCTK_ImplementationThorn (thorn); properties = CCTK_ParameterData (param, cthorn); } free (thorn); free (param); } CommandLinePrintParameter (properties); } CCTK_Exit (NULL, 0); }