Group Options
This is where you can configure the groups of your project. A group is a container for classes and has some additional options associated. There are five types of groups
- Cluster: represents a directory or directory structure on the disk with class files in it
- Override cluster: similar to cluster but overrides classes in other clusters with the same name, can only appear in an application, never in a library
- Library: a configuration of a library is included, all classes in clusters are accessible
- Precompile: a precompile is similar to a library, but the contents of the library or libraries that make up the precompile have already been compiled and therefore the compilation of your project is faster. There can be only one precompile per project.
- Assembly: classes in an assembly (.NET code generation mode only)
To add a new group, choose the corresponding add group button or context menu entry and enter a name and location or choose from a list (for assemblies and libraries).
Common Group Options
- Name: name of the group
- Description: an optional description of the group
- Read Only: in a read only group, classes cannot be modified
- Location: directory for clusters, assembly file for assemblies and ecf file for libraries and precompiles
- Profiling: turn on the Eiffel profiler during the application execution (C code generation mode only). The results can be seen at the end of the execution in the profiler window.
- Trace: display on the console all the features that are called during the system execution (C generation mode only).
- .NET Namespace: specify the namespace for this group (.NET code generation mode only)
- Assertions: assertion level for this group
- Warning: warnings for this group
- Debug: debugs for this group
Advanced
- Condition: group nodes can be conditioned to only be used under certain conditions.
- Prefix: name prefix for classes in this group (see Renaming )
- Renaming: renamings for classes in this group (see Renaming )
- Class Options: options specific for certain classes
(Override) Cluster Options
Clusters can be added as a sub clusters of other clusters, just select the parent cluster before adding the cluster.
- Recursive: should subdirectories automatically be included?.
- Hidden: Is this a hidden cluster that can not be used if the system is used as a library?
- Exclude Rules: exclude rules for this group
- Dependencies: specify which groups are checked for classes if the class cannot be found in the group itself
- Type Mapping: mapping of types, e.g. STRING is mapped to STRING_32
- Visible Classes: visible classes (see Visible classes )
Override Cluster Options
- Overrides: which groups are overridden by this override (default to all).
Library/Precompile Options
If a library is not read only, the configuration can be directly edited by clicking on the edit library button.
- Visible Classes: visible classes (see Visible classes )
- Use Application Options: Should this library use options from the application instead of from the library?
Assembly Options
It is possible (but not recommended) to specify an assembly only with GAC information. To do this set the location to none and specify:
- Assembly Name: Full name of the assembly as found in the GAC.
- Assembly Culture: Culture of the assembly.
- Assembly Version: Version of the assembly.
- Assembly Public Key Token: Public key token that identifies the asssembly.
Resolving Conflicts
There are multiple ways to resolve conflicts between different classes with the same name.
Renaming
A class can be renamed with a renaming or a group can have a name prefix which will get added to every class. Outside of this group, the class can then be reached by the renamed name.
Dependencies
It is possible to specify which other groups will be searched if a class cannot be found in the current group.
Visible classes
If a feature needs to be reachable from CECIL, but the feature is not called from any Eiffel code, then it must be forced to be visible, otherwise it will be removed by the dead code optimizer. This is done by using the Visible Classes option. In addition it is also possible, but rarely necessary, to rename a class or a feature. In most cases it suffices to make a class completely visible and renaming is unnecessary.
To make a class visible, enter the class name and press Add class. Optionally it is possible to specify a different name under which it is accessible. After a class has been added, it is possible to restrict the access to certain features only. To do this, enter the name of the feature (and optionally a renamed name), select the class it belongs to and click on Add feature.