| Online Eiffel Documentation

EiffelStudio

# 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 have already been compiled and therefore compilation is a lot faster, there can only be one precompile group
- 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?.
- 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)

## 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 should be reachable from CECIL and may not be used it must be made visible because otherwise it will be removed by the dead code optimizer. To do this you have to make the class visible. In addition it is also possible to rename a class or a feature. In most cases we make a class completely visible and do not need renaming.

To make a class visible, just enter the class name and pressAdd 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 optional a renamed name), select the class they belong to and click on Add feature.