Variable Transmission
Variables are set on Atom Instances, and each variable corresponds to an Atom Template parameter.
Any variable from an Atom is automatically available to all branch children. This way, any Atom Instance can work “in context” with its ancestors.

In this example you can see that the cpp_class Atom Instance defines two variables named class_name and instance. These two variables are also available to its child atoms. So, all child Atom Instances here can refer to and use any of these variables.
For instance, the cpp_function Atom Instance would usually generate the corresponding function header as something like:
$class_name::$func_name()
where func_name is locally defined, but class_name was acquired from an ancestor Atom.
With this mechanism you can create branches with local contexts, where each Atom Instance can access all the variables that were defined upwards on the tree. It is therefore implicit that any variable that is defined on the model's root will be available to all Atom Instances in that model.
|