= !ClassTreeMask = == Description == The [wiki:ClassTreeMask] defines a mask that includes or excludes branches and single classes in the [wiki:Identifier class-tree]. You can think of the [wiki:ClassTreeMask] like a mask in computer graphics: A mask is a black/white picture where black means invisible and white means fully visible. That way you can show some parts of an image and hide others. The [wiki:ClassTreeMask] does the same with the class-tree, but ''show'' means ''include'' and ''hide'' means ''exclude''. An unmodified mask shows everything / is white / includes the [wiki:BaseObject] (those statements are equivalent). The [wiki:Identifier class-tree] starts with the [wiki:BaseObject] but has some additional Interfaces that are parents of some subclasses (or "nodes" in the speak of tree-structure). Because we can't include or exclude classes directly, we use the corresponding [wiki:Identifier Identifiers] instead. In the following we'll speak about "classes" but implicitly mean "the [wiki:Identifier Identifiers] of those classes". Including a class means: "The whole branch starting with this class gets included", unless you didn't set the ''overwrite'' flag to false. Including a class without overwriting means: "Include the whole branch starting with this class but don't include previously excluded classes". The same aplies for excluding. After including/excluding a class, the [wiki:ClassTreeMask] is scanned for useless rules. If you include the [wiki:BaseObject] and include a subclass of [wiki:BaseObject] too, this brings no new information, so the inclusion-rule of the subclass can be discarded. Only rules that change the state are saved. You can turn of this cleanup by setting the ''clean'' flag to false. '''Warning''': This could change the meaning of your mask. If you exclude the [wiki:BaseObject] in our example without ''overwrite'', the subclass stays included. You'll find some examples for this in the corresponding section of this page. It's also possible to include/exclude only a single class wihtout changing the rule for following classes. This is achieved with the includeSingle/excludeSingle functions. Including/excluding interfaces is a bit different, because interfaces aren't directly in the class-tree. Instead the [wiki:ClassTreeMask] will apply the rule for all direct parents of the interfaces. If you set ''overwrite'' to false, only direct parents without an explicit rule apply the new rule. == Functions == == Operators == == Examples ==