Returns a set of all ProbedFields below this node in the tree.
Looks for a FieldNode corresponding to the field with the given long name.
Looks for a FieldNode corresponding to the field with the given long name.
Long name of the field to look up (e.g. "path.to.a.field")
Checks if 'node' is a descendant of the module 'ancestor'
The root of the module hierarchy.
The root of the module hierarchy. Usually (always?) corresponds to an instance of cogx.runtime.ComputeGraph.
A tree describing the module hierarchy implied in a given Cog model's definition. Supports lookups and traversals.
Basically, any class that has Cog fields as members is called a Module. In addition, any class that has a Module as a member is also called a Module, and is considered a parent to all those member Modules. Any Module that doesn't have a parent is attached as a child to a meta-Module that we just call Root.
The actual reflection/introspection code that finds all these module relationships lives in the field auto-naming logic within ComputeGraph. This class is actually determining the relationships by breaking apart field names.
Example:
In the above compute graph, a single scalar field is created that will be named "foo.bar.scalarField." This name is generated using reflection: the anonymous ComputeGraph has a Foo member named foo which in turn has a Bar member named bar which in turn has a ScalarField member named scalarField. The namer smashes those together to create a long name for the field; this ModuleHierarchyTree class breaks the name back apart to determine relationships between fields and parent objects (the so-called Modules).