[[Property:title|Group Options]] [[Property:weight|3]] [[Property:uuid|a321f24d-3158-d123-f2f6-cf7b38172877]] 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 [[Melting Ice Technology#Precompiling|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). [[Image:group-options|Group dialog]] ==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. * [[Tracing|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 Options|assertion level]] for this group * Warning: [[Warning Options|warnings]] for this group * Debug: [[Debug Options|debugs]] for this group ===Advanced=== * Condition: group nodes can be [[General Target Options|conditioned]] to only be used under certain conditions. * Prefix: name prefix for classes in this group (see [[#Renaming|Renaming]] ) * Renaming: renamings for classes in this group (see [[#Renaming|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: [[General Target Options#file_pattern|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: [[Type mapping|mapping]] of types, e.g. STRING is mapped to STRING_32 * Visible Classes: visible classes (see [[#Visible classes|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|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. [[Image:visible-dialog|Visible dialog]] 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''.