Tile definitions have the following form:
name : item1 [ : item2 : item3 ... ] {
attribute = value;
...
}
where each item is a previously defined tile. The new tile (name) inherits the attributes of all the specified tiles (item1, item2, item3,…). The attribute definitions within the curly braces ({}) either supplement, or, if the attribute's name is identical, replace the inherited definitions. When the definition has multiple parents, attributes take precedence in left-to-right order. In other words, if more than one item specifies the same attribute, the first one encountered is the one used.
If the new definition contains no children, it is a prototype, and you can alter or augment its attributes when referring to it. If it is a subassembly with children, its attributes cannot be altered.
The name of a tile or tile prototype can contain only letters, numbers, or the underscore character (_), and must begin with a letter.
This is the (internal) definition of a button:
button : tile {
fixed_height = true;
is_tab_stop = true;
}
The base.dcl file defines a default_button as follows:
default_button : button {
is_default = true;
}
The default_button inherits the button tile's values for the fixed_height and is_tab_stop attributes. It adds a new attribute, is_default, and sets it to true.