RecursiveMembers - Maple Help

Home : Support : Online Help : Programming : CodeTools : RecursiveMembers

CodeTools

 RecursiveMembers
 List module members and their members

 Calling Sequence RecursiveMembers(m) RecursiveMembers(m, s, opts)

Parameters

 m - name of a module s - (optional) list of strings; path to m opts - (optional) one or more options of the form locals = value or output = value

Description

 • The RecursiveMembers command returns the set of all members (locals and exports) of a module, and for any of those members that are themselves modules, its members, and so on recursively.
 • For each such recursive member, it returns not just the member itself but also the "path" to that member, as in, a list of strings "a", "b", "c" such that $a:-b:-c$ evaluates to the given recursive member. This works initially by directly converting m to a string; if that doesn't yield the result you need, you can use the s argument to pass a list of strings you want used to represent m. (That will be a prefix of all returned lists of strings.
 • By default, this command returns, for each recursive member, a list of two entries: first the member itself, and then, as a list of strings, the "path" described above. If you pass the option output = members, then only the members are returned. If you pass the option output = paths, then only the paths are returned. If you pass the option output = both, you get the default return value.
 • By default, this command returns all members (both locals and exports) of m (and its members). If you pass the option locals = false, then only exports are returned.

Examples

 > $\mathrm{with}\left(\mathrm{CodeTools}\right):$

To find all exports of the CodeTools package and its subpackages, you can use this command.

 > $\mathrm{codetools_exports}≔\mathrm{RecursiveMembers}\left(\mathrm{CodeTools},\mathrm{output}=\mathrm{members},\mathrm{locals}=\mathrm{false}\right)$
 ${\mathrm{codetools_exports}}{≔}\left\{{\mathrm{Profiling}}{:-}{\mathrm{Allow}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Build}}{,}{\mathrm{CPUTime}}{,}{\mathrm{GCTime}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Ignore}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Merge}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Percent}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Print}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Profile}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Remove}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Select}}{,}{\mathrm{Profiling}}{:-}{\mathrm{SortBy}}{,}{\mathrm{Test}}{,}{\mathrm{Usage}}{,}{\mathrm{CodeTools}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateForLoop}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateLoop}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateWhileLoop}}{,}{\mathrm{DecodeName}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{DependenceCone}}{,}{\mathrm{EncodeName}}{,}{\mathrm{Profiling}}{:-}{\mathrm{GetProfileTable}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{IsLoopInvariant}}{,}{\mathrm{Profiling}}{:-}{\mathrm{IsProfiled}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{IterationSpace}}{,}{\mathrm{Profiling}}{:-}{\mathrm{LoadProfiles}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{LoopInvariant}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{PercentSelect}}{,}{\mathrm{CodeTools}}{:-}{\mathrm{PrettyPrint}}{,}{\mathrm{Profiling}}{:-}{\mathrm{PrintProfiles}}{,}{\mathrm{Profiling}}{,}{\mathrm{ProgramAnalysis}}{,}{\mathrm{RealTime}}{,}{\mathrm{Profiling}}{:-}{\mathrm{SaveProfiles}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{StaticCallGraph}}{,}{\mathrm{TestFailures}}{,}{\mathrm{Profiling}}{:-}{\mathrm{UnProfile}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{VerifyLoop}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{_pexports}}{,}{\mathrm{CodeTools}}{:-}{\mathrm{_pexports}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{GenerateProcedure}}{,}{\mathrm{RecursiveMembers}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{TestCoverageWorksheet}}{,}{\mathrm{ThreadSafetyCheck}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{TrajectoryPoints}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{UnimodularTransformation}}\right\}$ (1)

This includes both commands (procedures and appliable modules) and modules that aren't appliable, such as the subpackages. To obtain only the procedures and appliable modules, you can use the select and type commands as follows:

 > $\mathrm{select}\left(\mathrm{type},\mathrm{codetools_exports},\left\{'\mathrm{procedure}','\mathrm{appliable_module}'\right\}\right)$
 $\left\{{\mathrm{Profiling}}{:-}{\mathrm{Allow}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Build}}{,}{\mathrm{CPUTime}}{,}{\mathrm{GCTime}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Ignore}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Merge}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Percent}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Print}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Profile}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Remove}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Select}}{,}{\mathrm{Profiling}}{:-}{\mathrm{SortBy}}{,}{\mathrm{Test}}{,}{\mathrm{Usage}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateForLoop}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateLoop}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateWhileLoop}}{,}{\mathrm{DecodeName}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{DependenceCone}}{,}{\mathrm{EncodeName}}{,}{\mathrm{Profiling}}{:-}{\mathrm{GetProfileTable}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{IsLoopInvariant}}{,}{\mathrm{Profiling}}{:-}{\mathrm{IsProfiled}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{IterationSpace}}{,}{\mathrm{Profiling}}{:-}{\mathrm{LoadProfiles}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{LoopInvariant}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{PercentSelect}}{,}{\mathrm{CodeTools}}{:-}{\mathrm{PrettyPrint}}{,}{\mathrm{Profiling}}{:-}{\mathrm{PrintProfiles}}{,}{\mathrm{RealTime}}{,}{\mathrm{Profiling}}{:-}{\mathrm{SaveProfiles}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{StaticCallGraph}}{,}{\mathrm{TestFailures}}{,}{\mathrm{Profiling}}{:-}{\mathrm{UnProfile}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{VerifyLoop}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{_pexports}}{,}{\mathrm{CodeTools}}{:-}{\mathrm{_pexports}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{GenerateProcedure}}{,}{\mathrm{RecursiveMembers}}{,}{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{TestCoverageWorksheet}}{,}{\mathrm{ThreadSafetyCheck}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{TrajectoryPoints}}{,}{\mathrm{ProgramAnalysis}}{:-}{\mathrm{UnimodularTransformation}}\right\}$ (2)

Note that for the subpackage commands, you cannot easily see which subpackage they are in. That's what the "paths" are for.

 > $\mathrm{codetools_exports_2}≔\mathrm{RecursiveMembers}\left(\mathrm{CodeTools},\mathrm{locals}=\mathrm{false}\right)$
 ${\mathrm{codetools_exports_2}}{≔}\left\{\left[{\mathrm{Profiling}}{:-}{\mathrm{Allow}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Allow"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Build}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Build"}\right]\right]{,}\left[{\mathrm{CPUTime}}{,}\left[{"CodeTools"}{,}{"CPUTime"}\right]\right]{,}\left[{\mathrm{GCTime}}{,}\left[{"CodeTools"}{,}{"GCTime"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Ignore}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Ignore"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Merge}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Merge"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Percent}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"Percent"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Print}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"Print"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Profile}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Profile"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Remove}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Remove"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Select}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Select"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{SortBy}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"SortBy"}\right]\right]{,}\left[{\mathrm{Test}}{,}\left[{"CodeTools"}{,}{"Test"}\right]\right]{,}\left[{\mathrm{Usage}}{,}\left[{"CodeTools"}{,}{"Usage"}\right]\right]{,}\left[{\mathrm{CodeTools}}{,}\left[{"CodeTools"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateForLoop}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"CreateForLoop"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateLoop}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"CreateLoop"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateWhileLoop}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"CreateWhileLoop"}\right]\right]{,}\left[{\mathrm{DecodeName}}{,}\left[{"CodeTools"}{,}{"DecodeName"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{DependenceCone}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"DependenceCone"}\right]\right]{,}\left[{\mathrm{EncodeName}}{,}\left[{"CodeTools"}{,}{"EncodeName"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{GetProfileTable}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"GetProfileTable"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{IsLoopInvariant}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"IsLoopInvariant"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{IsProfiled}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"IsProfiled"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{IterationSpace}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"IterationSpace"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{LoadProfiles}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"LoadProfiles"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{LoopInvariant}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"LoopInvariant"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{PercentSelect}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"PercentSelect"}\right]\right]{,}\left[{\mathrm{CodeTools}}{:-}{\mathrm{PrettyPrint}}{,}\left[{"CodeTools"}{,}{"PrettyPrint"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{PrintProfiles}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"PrintProfiles"}\right]\right]{,}\left[{\mathrm{Profiling}}{,}\left[{"CodeTools"}{,}{"Profiling"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}\right]\right]{,}\left[{\mathrm{RealTime}}{,}\left[{"CodeTools"}{,}{"RealTime"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{SaveProfiles}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"SaveProfiles"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{StaticCallGraph}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"StaticCallGraph"}\right]\right]{,}\left[{\mathrm{TestFailures}}{,}\left[{"CodeTools"}{,}{"TestFailures"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{UnProfile}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"UnProfile"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{VerifyLoop}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"VerifyLoop"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{_pexports}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"_pexports"}\right]\right]{,}\left[{\mathrm{CodeTools}}{:-}{\mathrm{_pexports}}{,}\left[{"CodeTools"}{,}{"_pexports"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{GenerateProcedure}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"GenerateProcedure"}\right]\right]{,}\left[{\mathrm{RecursiveMembers}}{,}\left[{"CodeTools"}{,}{"RecursiveMembers"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{TestCoverageWorksheet}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}\right]\right]{,}\left[{\mathrm{ThreadSafetyCheck}}{,}\left[{"CodeTools"}{,}{"ThreadSafetyCheck"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{TrajectoryPoints}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"TrajectoryPoints"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{UnimodularTransformation}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"UnimodularTransformation"}\right]\right]\right\}$ (3)
 > $\mathrm{select}\left(\mathrm{type},\mathrm{codetools_exports_2},\left[\left\{'\mathrm{procedure}','\mathrm{appliable_module}'\right\},'\mathrm{list}'\left('\mathrm{string}'\right)\right]\right)$
 $\left\{\left[{\mathrm{Profiling}}{:-}{\mathrm{Allow}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Allow"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Build}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Build"}\right]\right]{,}\left[{\mathrm{CPUTime}}{,}\left[{"CodeTools"}{,}{"CPUTime"}\right]\right]{,}\left[{\mathrm{GCTime}}{,}\left[{"CodeTools"}{,}{"GCTime"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Ignore}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Ignore"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Merge}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Merge"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Percent}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"Percent"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Print}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"Print"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Profile}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Profile"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Remove}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Remove"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Select}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Select"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{SortBy}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"SortBy"}\right]\right]{,}\left[{\mathrm{Test}}{,}\left[{"CodeTools"}{,}{"Test"}\right]\right]{,}\left[{\mathrm{Usage}}{,}\left[{"CodeTools"}{,}{"Usage"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateForLoop}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"CreateForLoop"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateLoop}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"CreateLoop"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{CreateWhileLoop}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"CreateWhileLoop"}\right]\right]{,}\left[{\mathrm{DecodeName}}{,}\left[{"CodeTools"}{,}{"DecodeName"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{DependenceCone}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"DependenceCone"}\right]\right]{,}\left[{\mathrm{EncodeName}}{,}\left[{"CodeTools"}{,}{"EncodeName"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{GetProfileTable}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"GetProfileTable"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{IsLoopInvariant}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"IsLoopInvariant"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{IsProfiled}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"IsProfiled"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{IterationSpace}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"IterationSpace"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{LoadProfiles}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"LoadProfiles"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{LoopInvariant}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"LoopInvariant"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{PercentSelect}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"PercentSelect"}\right]\right]{,}\left[{\mathrm{CodeTools}}{:-}{\mathrm{PrettyPrint}}{,}\left[{"CodeTools"}{,}{"PrettyPrint"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{PrintProfiles}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"PrintProfiles"}\right]\right]{,}\left[{\mathrm{RealTime}}{,}\left[{"CodeTools"}{,}{"RealTime"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{SaveProfiles}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"SaveProfiles"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{StaticCallGraph}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"StaticCallGraph"}\right]\right]{,}\left[{\mathrm{TestFailures}}{,}\left[{"CodeTools"}{,}{"TestFailures"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{UnProfile}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"UnProfile"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{VerifyLoop}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"VerifyLoop"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{_pexports}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"_pexports"}\right]\right]{,}\left[{\mathrm{CodeTools}}{:-}{\mathrm{_pexports}}{,}\left[{"CodeTools"}{,}{"_pexports"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{GenerateProcedure}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"GenerateProcedure"}\right]\right]{,}\left[{\mathrm{RecursiveMembers}}{,}\left[{"CodeTools"}{,}{"RecursiveMembers"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{TestCoverageWorksheet}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}\right]\right]{,}\left[{\mathrm{ThreadSafetyCheck}}{,}\left[{"CodeTools"}{,}{"ThreadSafetyCheck"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{TrajectoryPoints}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"TrajectoryPoints"}\right]\right]{,}\left[{\mathrm{ProgramAnalysis}}{:-}{\mathrm{UnimodularTransformation}}{,}\left[{"CodeTools"}{,}{"ProgramAnalysis"}{,}{"UnimodularTransformation"}\right]\right]\right\}$ (4)

To obtain all the members of the CodeTools[Profiling] subpackage, we can use the following command.

 > $\mathrm{RecursiveMembers}\left(\mathrm{Profiling}\right)$
 $\left\{\left[{"%-20s %9s %9s %9s %14s %9s"}{,}\left[{"Profiling"}{,}{"titleFormat"}\right]\right]{,}\left[{"%-20s %9d %9.3f %9.2f %14d %9.2f"}{,}\left[{"Profiling"}{,}{"dataFormat"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Allow}}{,}\left[{"Profiling"}{,}{"Allow"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Build}}{,}\left[{"Profiling"}{,}{"Build"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Ignore}}{,}\left[{"Profiling"}{,}{"Ignore"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Merge}}{,}\left[{"Profiling"}{,}{"Merge"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Percent}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"Percent"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Print}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"Print"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Profile}}{,}\left[{"Profiling"}{,}{"Profile"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Remove}}{,}\left[{"Profiling"}{,}{"Remove"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Select}}{,}\left[{"Profiling"}{,}{"Select"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{SortBy}}{,}\left[{"Profiling"}{,}{"SortBy"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{,}\left[{"Profiling"}{,}{"Coverage"}\right]\right]{,}\left[{\mathrm{EscapePath}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}{,}{"EscapePath"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{GetProfileTable}}{,}\left[{"Profiling"}{,}{"GetProfileTable"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{IsProfiled}}{,}\left[{"Profiling"}{,}{"IsProfiled"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{LoadProfiles}}{,}\left[{"Profiling"}{,}{"LoadProfiles"}\right]\right]{,}\left[{\mathrm{ModuleApply}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}{,}{"ModuleApply"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{PercentSelect}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"PercentSelect"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{PrintProfiles}}{,}\left[{"Profiling"}{,}{"PrintProfiles"}\right]\right]{,}\left[{\mathrm{Profiling}}{,}\left[{"Profiling"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{SaveProfiles}}{,}\left[{"Profiling"}{,}{"SaveProfiles"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{UnProfile}}{,}\left[{"Profiling"}{,}{"UnProfile"}\right]\right]{,}\left[{\mathrm{addProfile}}{,}\left[{"Profiling"}{,}{"addProfile"}\right]\right]{,}\left[{\mathrm{adjustProcLine}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"adjustProcLine"}\right]\right]{,}\left[{\mathrm{functionPercent}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"functionPercent"}\right]\right]{,}\left[{\mathrm{getMemberFuncs}}{,}\left[{"Profiling"}{,}{"getMemberFuncs"}\right]\right]{,}\left[{\mathrm{getStatement}}{,}\left[{"Profiling"}{,}{"getStatement"}\right]\right]{,}\left[{\mathrm{ignoreProcTable}}{,}\left[{"Profiling"}{,}{"ignoreProcTable"}\right]\right]{,}\left[{\mathrm{inertCompare}}{,}\left[{"Profiling"}{,}{"inertCompare"}\right]\right]{,}\left[{\mathrm{isBadName}}{,}\left[{"Profiling"}{,}{"isBadName"}\right]\right]{,}\left[{\mathrm{isBadProc}}{,}\left[{"Profiling"}{,}{"isBadProc"}\right]\right]{,}\left[{\mathrm{isEnvVar}}{,}\left[{"Profiling"}{,}{"isEnvVar"}\right]\right]{,}\left[{\mathrm{mapThroughEnv}}{,}\left[{"Profiling"}{,}{"mapThroughEnv"}\right]\right]{,}\left[{\mathrm{mergeTable}}{,}\left[{"Profiling"}{,}{"mergeTable"}\right]\right]{,}\left[{\mathrm{parseArgs}}{,}\left[{"Profiling"}{,}{"parseArgs"}\right]\right]{,}\left[{\mathrm{percentDefaults}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"percentDefaults"}\right]\right]{,}\left[{\mathrm{printDefaults}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"printDefaults"}\right]\right]{,}\left[{\mathrm{printProcLong}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"printProcLong"}\right]\right]{,}\left[{\mathrm{printProcNorm}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"printProcNorm"}\right]\right]{,}\left[{\mathrm{printTable}}{,}\left[{"Profiling"}{,}{"printTable"}\right]\right]{,}\left[{\mathrm{procMerger}}{,}\left[{"Profiling"}{,}{"procMerger"}\right]\right]{,}\left[{\mathrm{profileAll}}{,}\left[{"Profiling"}{,}{"profileAll"}\right]\right]{,}\left[{\mathrm{readTable}}{,}\left[{"Profiling"}{,}{"readTable"}\right]\right]{,}\left[{\mathrm{removeProfile}}{,}\left[{"Profiling"}{,}{"removeProfile"}\right]\right]{,}\left[{\mathrm{sortByDefaults}}{,}\left[{"Profiling"}{,}{"sortByDefaults"}\right]\right]{,}\left[{\mathrm{takeDump}}{,}\left[{"Profiling"}{,}{"takeDump"}\right]\right]{,}\left[{\mathrm{unProfileAll}}{,}\left[{"Profiling"}{,}{"unProfileAll"}\right]\right]{,}\left[{\mathrm{GroupInputTextfield}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}{,}{"GroupInputTextfield"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{TestCoverageWorksheet}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}\right]\right]{,}\left[{\mathrm{getAllNamedProcs}}{,}\left[{"Profiling"}{,}{"getAllNamedProcs"}\right]\right]{,}\left[{\mathrm{ignoreModuleTable}}{,}\left[{"Profiling"}{,}{"ignoreModuleTable"}\right]\right]{,}\left[{\mathrm{isInIgnoredModule}}{,}\left[{"Profiling"}{,}{"isInIgnoredModule"}\right]\right]{,}\left[{\mathrm{loadProfilesDefaults}}{,}\left[{"Profiling"}{,}{"loadProfilesDefaults"}\right]\right]{,}\left[{\mathrm{parseProcTableArgs}}{,}\left[{"Profiling"}{,}{"parseProcTableArgs"}\right]\right]{,}\left[{\mathrm{percentSelectDefaults}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"percentSelectDefaults"}\right]\right]{,}\left[{\mathrm{printProcCompact}}{,}\left[{"Profiling"}{,}{"Coverage"}{,}{"printProcCompact"}\right]\right]{,}\left[{\mathrm{printProfilesDefaults}}{,}\left[{"Profiling"}{,}{"printProfilesDefaults"}\right]\right]\right\}$ (5)

The fact that the "paths" start with the string $"Profiling"$ is a bit misleading; it would potentially be more helpful for it to start with $"CodeTools","Profiling"$. We can make that happen as follows.

 > $\mathrm{RecursiveMembers}\left(\mathrm{Profiling},\left["CodeTools","Profiling"\right]\right)$
 $\left\{\left[{"%-20s %9s %9s %9s %14s %9s"}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"titleFormat"}\right]\right]{,}\left[{"%-20s %9d %9.3f %9.2f %14d %9.2f"}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"dataFormat"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Allow}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Allow"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Build}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Build"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Ignore}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Ignore"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Merge}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Merge"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Percent}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"Percent"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{Print}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"Print"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Profile}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Profile"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Remove}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Remove"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Select}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Select"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{SortBy}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"SortBy"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}\right]\right]{,}\left[{\mathrm{EscapePath}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}{,}{"EscapePath"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{GetProfileTable}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"GetProfileTable"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{IsProfiled}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"IsProfiled"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{LoadProfiles}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"LoadProfiles"}\right]\right]{,}\left[{\mathrm{ModuleApply}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}{,}{"ModuleApply"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{PercentSelect}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"PercentSelect"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{PrintProfiles}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"PrintProfiles"}\right]\right]{,}\left[{\mathrm{Profiling}}{,}\left[{"CodeTools"}{,}{"Profiling"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{SaveProfiles}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"SaveProfiles"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{UnProfile}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"UnProfile"}\right]\right]{,}\left[{\mathrm{addProfile}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"addProfile"}\right]\right]{,}\left[{\mathrm{adjustProcLine}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"adjustProcLine"}\right]\right]{,}\left[{\mathrm{functionPercent}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"functionPercent"}\right]\right]{,}\left[{\mathrm{getMemberFuncs}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"getMemberFuncs"}\right]\right]{,}\left[{\mathrm{getStatement}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"getStatement"}\right]\right]{,}\left[{\mathrm{ignoreProcTable}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"ignoreProcTable"}\right]\right]{,}\left[{\mathrm{inertCompare}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"inertCompare"}\right]\right]{,}\left[{\mathrm{isBadName}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"isBadName"}\right]\right]{,}\left[{\mathrm{isBadProc}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"isBadProc"}\right]\right]{,}\left[{\mathrm{isEnvVar}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"isEnvVar"}\right]\right]{,}\left[{\mathrm{mapThroughEnv}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"mapThroughEnv"}\right]\right]{,}\left[{\mathrm{mergeTable}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"mergeTable"}\right]\right]{,}\left[{\mathrm{parseArgs}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"parseArgs"}\right]\right]{,}\left[{\mathrm{percentDefaults}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"percentDefaults"}\right]\right]{,}\left[{\mathrm{printDefaults}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"printDefaults"}\right]\right]{,}\left[{\mathrm{printProcLong}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"printProcLong"}\right]\right]{,}\left[{\mathrm{printProcNorm}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"printProcNorm"}\right]\right]{,}\left[{\mathrm{printTable}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"printTable"}\right]\right]{,}\left[{\mathrm{procMerger}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"procMerger"}\right]\right]{,}\left[{\mathrm{profileAll}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"profileAll"}\right]\right]{,}\left[{\mathrm{readTable}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"readTable"}\right]\right]{,}\left[{\mathrm{removeProfile}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"removeProfile"}\right]\right]{,}\left[{\mathrm{sortByDefaults}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"sortByDefaults"}\right]\right]{,}\left[{\mathrm{takeDump}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"takeDump"}\right]\right]{,}\left[{\mathrm{unProfileAll}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"unProfileAll"}\right]\right]{,}\left[{\mathrm{GroupInputTextfield}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}{,}{"GroupInputTextfield"}\right]\right]{,}\left[{\mathrm{Profiling}}{:-}{\mathrm{Coverage}}{:-}{\mathrm{TestCoverageWorksheet}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"TestCoverageWorksheet"}\right]\right]{,}\left[{\mathrm{getAllNamedProcs}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"getAllNamedProcs"}\right]\right]{,}\left[{\mathrm{ignoreModuleTable}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"ignoreModuleTable"}\right]\right]{,}\left[{\mathrm{isInIgnoredModule}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"isInIgnoredModule"}\right]\right]{,}\left[{\mathrm{loadProfilesDefaults}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"loadProfilesDefaults"}\right]\right]{,}\left[{\mathrm{parseProcTableArgs}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"parseProcTableArgs"}\right]\right]{,}\left[{\mathrm{percentSelectDefaults}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"percentSelectDefaults"}\right]\right]{,}\left[{\mathrm{printProcCompact}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"Coverage"}{,}{"printProcCompact"}\right]\right]{,}\left[{\mathrm{printProfilesDefaults}}{,}\left[{"CodeTools"}{,}{"Profiling"}{,}{"printProfilesDefaults"}\right]\right]\right\}$ (6)

Compatibility

 • The CodeTools[RecursiveMembers] command was introduced in Maple 2021.