The Symbol Tables panel is brought up with the Symbol Tables button in the Cell Menu. A ``symbol'' is a cell name, which applies to corresponding physical and electrical cells. A symbol table is a container (a hash table) which holds cell definitions in memory for rapid access by name. Within a symbol table, all cells have unique names, and an attempt to add a cell with an existing name will simply overwrite the existing cell in the table. On program startup, a default symbol table is provided, which will contain all cells unless the user intervenes.
It is possible to have multiple symbol tables available. This allows different versions of a cell with the same name to exist in memory concurrently, though in different symbol tables. It also provides a means for the user to "start fresh" without actually destroying cells in memory.
This pop-up manages the symbol tables that are currently allocated. It is possible to add or delete symbol tables, and to switch between the tables. The table in use contains the cell ``memory'' that is currently available.
The option menu to the left provides the means for switching between existing tables. Each table has a name, which is listed in the menu. Initially, only one table, named ``main is available.
The Add button allows a new symbol table to be created and added to the list. The user is asked to provide a name for the table. This name can be just about any text string, however if the name already exists in the table list, a new table is not created. The table corresponding to the name becomes the current table. Although non-alphanumeric characters can be included in the name, this will require that the name be double-quoted if used in the extended layer name syntax of layer expressions or the !layer command.
The Clear button will clear and destroy the contents of the current table. After confirmation, if there are modified cells, the user will be given a chance to save them to disk. If the user does not abort, all cells in the current table will be destroyed, and the table will be empty except for the default ``noname'' cell which will be read from disk if it exists, and this will become the current cell.
The Destroy button will destroy the current table, and its contents. It is not possible to destroy the ``main'' table, the button is disabled when that table is current. After confirmation, if there are modified cells, the user will be given a chance to save them to disk. If the user does not abort, all cells in the table, and the table itself, will be destroyed. After the table is destroyed, one of the remaining tables will become the new current table.
Note that when switching between tables, the current cell in use at the time of the switch is saved, and recalled when the user returns to that table.