| 1 | = !ClassTreeMask = |
| 2 | |
| 3 | == Description == |
| 4 | |
| 5 | 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). |
| 6 | |
| 7 | 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". |
| 8 | |
| 9 | 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. |
| 10 | |
| 11 | 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. |
| 12 | |
| 13 | 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. |
| 14 | |
| 15 | 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. |
| 16 | |
| 17 | == Functions == |
| 18 | |
| 19 | |
| 20 | |
| 21 | == Operators == |
| 22 | |
| 23 | |
| 24 | |
| 25 | == Examples == |
| 26 | |
| 27 | |