SYSTEM OPTIONS

Following is the list of system-level options supported by
'gexace' (of the form <option name="..." value="..."/>),
and how they are translated to the vendor dependent Ace or
ECF files. "N/A" does not necessarily mean that the corresponding
Eiffel compiler does not support this facility, it could just
be that the facility is not parameterizable or is activated
from the command-line or from a separate tool rather than from
the Ace or ECF file. When an entry is marked "N/A" the option
will be silently ignored and nothing will be generated in the
Ace or ECF file for this option. Likewise when the name of an
option specified in an Xace file is not known by 'gexace'.

The DEFAULT section shows 'gexace' default value when this
option is not explicitely specified in the Xace file. It
can be different from the default value used by the various
Eiffel vendors in their Ace or ECF files.

For further details about each option, please refer to the
documentation provided with the Eiffel compilers.

-------------------------------------------------------------
NAME: address_expression

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable expressions of the form '$(s.to_c)' instead
  of having to declare 'a' of type ANY, and then having to 
  assign 's.to_c' to 'a' and passing '$a'. Turn this option on
  only if you have advanced knowledge of the garbage collector
  insides, since using this syntax illegally can lead to bugs
  very hard to trace.

ISE Ace:
  true -> address_expression (yes)
  false -> address_expression (no)
ISE ECF:
  true -> <setting name="address_expression" value="true"/>
  false -> <setting name="address_expression" value="false"/>
-------------------------------------------------------------
NAME: arguments

VALUES: <arguments>
DEFAULT: no default
DESCRIPTION: Arguments passed to the application when launched
  from ISE EiffelStudio.
NOTE: There can be several of these options.

ISE Ace:
  <arguments> -> arguments ("<arguments>")
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: array_optimization

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable array optimization in loops when the array
  has been declared as local variable or formal argument.
NOTE: The option 'finalize' (finalization mode) should
  be set in order for this option to have any effect.

ISE Ace:
  true -> array_optimization (yes)
  false -> array_optimization (no)
ISE ECF:
  true -> <setting name="array_optimization" value="true"/>
  false -> <setting name="array_optimization" value="false"/>
  --
  Not used in ECF.
-------------------------------------------------------------
NAME: assertion

VALUES: none | generate | require | supplier_precondition | ensure |
        invariant | loop_invariant | loop_variant | check | all
DEFAULT: require
DESCRIPTION: Set default assertion level of the Eiffel system.
NOTE: There can be several of these options.
NOTE: The purpose of 'generate' is to generate the code of
  the assertions in the generated code even if these assertions
  are turned off. None of the currently supported Eiffel compilers
  supports this option though.

ISE Ace:
  none -> assertion (no)
  generate -> assertion (no)
  require -> assertion (require)
  supplier_precondition -> N/A
  ensure -> assertion (ensure)
  invariant -> assertion (invariant)
  loop_invariant -> assertion (loop)
  loop_variant -> assertion (loop)
  check -> assertion (check)
  all -> assertion (all)
ISE ECF:
  none -> <option/>
  generate -> <option/>
  require -> <option><assertions precondition="true"/></option>
  supplier_precondition -> <option><assertions supplier_precondition="true"/></option>
  ensure -> <option><assertions postcondition="true"/></option>
  invariant -> <option><assertions invariant="true"/></option>
  loop_invariant -> <option><assertions loop="true"/></option>
  loop_variant -> <option><assertions loop="true"/></option>
  check -> <option><assertions check="true"/></option>
  all -> <option><assertions precondition="true" postcondition="true" invariant="true" loop="true" check="true"/></option>
-------------------------------------------------------------
NAME: attached_by_default

VALUES: true | false
DEFAULT: false
DESCRIPTION: Are types attached by default when no attachment mark is specified?

ISE Ace:
  N/A
ISE ECF:
  true -> <option is_attached_by_default="true"/>
  false -> <option is_attached_by_default="false"/>
-------------------------------------------------------------
NAME: automatic_backup

VALUES: true | false
DEFAULT: false
DESCRIPTION: Automatically generate a backup during recompilation.

ISE Ace:
  N/A
ISE ECF:
  true -> <setting name="automatic_backup" value="true"/>
  false -> <setting name="automatic_backup" value="false"/>
-------------------------------------------------------------
NAME: case_insensitive

VALUES: true | false
DEFAULT: true
DESCRIPTION: Enable Eiffel code to be case insensitive.
NOTE: This option was supported in SmartEiffel which was
  case-sensitive by default. All other Eiffel compilers
  follow the standard and are case-insensitive.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: check_generic_creation_constraint

VALUES: true | false
DEFAULT: true
DESCRIPTION: Check generic creation constraint.

ISE Ace:
  N/A
ISE ECF:
  true -> <setting name="check_generic_creation_constraint" value="true"/>
  false -> <setting name="check_generic_creation_constraint" value="false"/>
-------------------------------------------------------------
NAME: check_vape

VALUES: true | false
DEFAULT: true
DESCRIPTION: Report VAPE validity errors (ETL 2nd edition page 122).

ISE Ace:
  true -> check_vape (yes)
  false -> check_vape (no)
ISE ECF:
  true -> <setting name="check_vape" value="true"/>
  false -> <setting name="check_vape" value="false"/>
-------------------------------------------------------------
NAME: clean

VALUES: true | false
DEFAULT: false
DESCRIPTION: Remove all generated C files, all generated object
  files and all other temporary files generated during the
  compilation process.
NOTE: None of the currently supported Eiffel compilers supports
  this option.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: cls_compliant

VALUES: true | false
DEFAULT: true
DESCRIPTION: When compiling to the .NET framework. Is the generated
  code CLS compliant?

ISE Ace:
  true -> cls_compliant (yes)
  false -> cls_compliant (no)
ISE ECF:
  true -> <setting name="cls_compliant" value="true"/>
  false -> <setting name="cls_compliant" value="false"/>
-------------------------------------------------------------
NAME: console_application

VALUES: true | false
DEFAULT: true
DESCRIPTION: Under Windows, generate either a console or a windows
  application.
NOTE: The implementation of Xace by Visual Eiffel defines the
  default value to be false.

ISE Ace:
  true -> console_application (yes)
  false -> console_application (no)
ISE ECF:
  true -> <setting name="console_application" value="true"/>
  false -> <setting name="console_application" value="false"/>
  --
  The default is false in ECF.
-------------------------------------------------------------
NAME: create_keyword_extension

VALUES: true | false
DEFAULT: true
DESCRIPTION: Specify that 'create' should be considered as
  a keyword (replacing the old form !!) and not as an
  identifier.
NOTE: This option was for the Halstenbach compiler. 
  Even if Halstenbach is not supported any more, gexace
  still supports this option because some Xace files may 
  have it.
  
ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: c_compiler_options

VALUES: <options>
DEFAULT: no default
DESCRIPTION: Specifies options to be passed to the c compiler,
  which is responsible for compiling the C code that has been
  generated from the Eiffel system.
NOTE: There can be several of these options.
  Makes only sense for Eiffel compilers, which generate c 
  code.

ISE Ace:
  <options> -> include_path: "some123/fake432/path567 <options>"
ISE ECF:
  <options> -> <external_include location="some123/fake432/path567 <options>"/>
-------------------------------------------------------------
NAME: dead_code_removal

VALUES: none | low_level | feature | class | all
DEFAULT: all
DESCRIPTION: Do not include dead code in the generated application.
  'low_level' means that unreachable chuncks of code are not included,
  'feature' means that features which are never called are not
  included, and 'class' means the classes which are in the system
  but which are never instanciated in the living code are not
  included.
NOTE: The option 'finalize' (finalization mode) should be set
  in order for 'feature', 'class' and 'all' (except its low_level
  part in VE) to have any effect.
NOTE: There can be several of these options.

ISE Ace:
  none -> dead_code_removal (no)
  low_level -> dead_code_removal (no)
  feature -> dead_code_removal (yes)
  class -> dead_code_removal (no)
  all -> dead_code_removal (yes)
  --
  If several occurrences of Ace options would need to be generated,
  only one occurrence would actually be generated with value 'yes'
  if there is at least one 'yes' and 'no' otherwise.
ISE ECF:
  none -> <setting name="dead_code_removal" value="false"/>
  low_level -> <setting name="dead_code_removal" value="false"/>
  feature -> <setting name="dead_code_removal" value="true"/>
  class -> <setting name="dead_code_removal" value="false"/>
  all -> <setting name="dead_code_removal" value="true"/>
  --
  If several occurrences of ECF options would need to be generated,
  only one occurrence would actually be generated with value 'true'
  if there is at least one 'true' and 'false' otherwise.
-------------------------------------------------------------
NAME: debug

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable debug instructions.

ISE Ace:
  true -> debug (yes)
  false -> debug (no)
ISE ECF:
  true -> <option debug="true"/>
  false -> <option debug="false"/>
-------------------------------------------------------------
NAME: debug_tag

VALUES: <tag>
DEFAULT: no default
DESCRIPTION: Enable debug instructions with tag '<tag>'.
NOTE: There can be several of these options.

ISE Ace:
  <tag> -> debug ("<tag>")
ISE ECF:
  <tag> -> <option> <debug name="<tag>" enabled="true"/> </option>
-------------------------------------------------------------
NAME: debugger

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify whether debug information should be
  generated. Debug information was required to use the
  debugger with Visual Eiffel.
NOTE: None of the currently supported Eiffel compilers
  supports this option.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: document

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify in which directory the documentation
  generated by ISE EiffelStudio should be put (when using the
  Project/Generate documentation... menu). If no directory is
  specified, the documentation will be generated at the same
  level as the EIFGEN directory in a directory called
  'Documentation'. 

ISE Ace:
  <pathname> -> document ("<pathname>")
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: dotnet_naming_convention

VALUES: true | false
DEFAULT: false
DESCRIPTION: When compiling to the .NET framework. Should the
  Eiffel code use .NET naming convention when calling routines
  from the assembly (use Eiffel naming convention otherwise)?

ISE Ace:
  true -> dotnet_naming_convention (yes)
  false -> dotnet_naming_convention (no)
ISE ECF:
  true -> <setting name="dotnet_naming_convention" value="true"/>
  false -> <setting name="dotnet_naming_convention" value="false"/>
-------------------------------------------------------------
NAME: dynamic_runtime

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable the use of the Eiffel runtime as a
  DLL or shared library.

ISE Ace:
  true -> dynamic_runtime (yes)
  false -> dynamic_runtime (no)
ISE ECF:
  true -> <setting name="dynamic_runtime" value="true"/>
  false -> <setting name="dynamic_runtime" value="false"/>
-------------------------------------------------------------
NAME: enforce_unique_class_names

VALUES: true | false
DEFAULT: false
DESCRIPTION: Should class names be unique even across libraries?

ISE Ace:
  N/A
ISE ECF:
  true -> <setting name="enforce_unique_class_names" value="true"/>
  false -> <setting name="enforce_unique_class_names" value="false"/>
-------------------------------------------------------------
NAME: exception_trace

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable to see a complete exception trace
  when a finalized application is crashing.
NOTE: The option 'finalize' (finalization mode) should
  be set in order for this option to have any effect.

ISE Ace:
  true -> exception_trace (yes)
  false -> exception_trace (no)
ISE ECF:
  true -> <setting name="exception_trace" value="true"/>
  false -> <setting name="exception_trace" value="false"/>
-------------------------------------------------------------
NAME: external_runtime

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: External runtime.

ISE Ace:
  N/A
ISE ECF:
  <pathname> -> <setting name="external_runtime" value="<pathname>"/>
-------------------------------------------------------------
NAME: finalize

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable global optimizations (finalization mode).
NOTE: This option has no direct effect. Each individual
  optimization option should be set separately.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: flat_fst_optimization

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify whether dynamic tables may be kept not
  compacted for faster dynamic access to features.
NOTE: The option 'finalize' (finalization mode) should
  be set in order for this option to have any effect.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: force_32bits

VALUES: true | false
DEFAULT: false
DESCRIPTION: Force compilation for 32bits (.NET only).

ISE Ace:
  N/A
ISE ECF:
  true -> <setting name="force_32bits" value="true"/>
  false -> <setting name="force_32bits" value="false"/>
-------------------------------------------------------------
NAME: fst_expansion_factor

VALUES: <value>
DEFAULT: 2
DESCRIPTION: Visual Eiffel supports dynamic binding via
  mechanism of FST (stands for Feature Selection Tables).
  Every entry in such table is a pair "class id (magic
  number) - feature address/attribute offset". In the general
  case binary searching is used to find the proper entry. To
  make this search faster and more efficient binary searching
  in the table can be replaced with direct linear access to
  array items (class id will be used as index of the array
  item). <value> is a positive integer number. When FST size
  multiplied by <value> is greater than the maximum class id
  in this FST, it is transformed into array.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: fst_optimization

VALUES: true | false
DEFAULT: false
DESCRIPTION: Replace dynamic feature calls by static ones
  when possible (FST stands for Feature Selection Tables).

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: full_class_checking

VALUES: true | false
DEFAULT: false
DESCRIPTION: Run flat Degree 3.

ISE Ace:
  N/A
ISE ECF:
  true -> <option full_class_checking="true"/>
  false -> <option full_class_checking="false"/>
-------------------------------------------------------------
NAME: garbage_collector

VALUES: none | internal | boehm
DEFAULT: internal
DESCRIPTION: Select garbage collector.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: gc_info

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable garbage collector status information.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: header

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify a directory containing C header files.
NOTE: There can be several of these options.

ISE Ace:
  <pathname> -> include_path: "<pathname>"
ISE ECF:
  <pathname> -> <external_include location="<pathname>"/>
-------------------------------------------------------------
NAME: heap_size

VALUES: <value>
DEFAULT: no default
DESCRIPTION: Specify the dynamic heap size for the program.
  <value> is a positive number of bytes that will be reserved
  for the heap.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: high_memory_compiler

VALUES: true | false
DEFAULT: false
DESCRIPTION: Allow the compiler to use more memory at compile
  time (caching, bigger buffers, etc.). Compilation is likely
  to be quicker, if you have enough memory (RAM, not disk!)... 

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: il_verifiable

VALUES: true | false
DEFAULT: true
DESCRIPTION: When compiling to the .NET framework. Is the generated
  code IL verifiable?

ISE Ace:
  true -> il_verifiable (yes)
  false -> il_verifiable (no)
ISE ECF:
  true -> <setting name="il_verifiable" value="true"/>
  false -> <setting name="il_verifiable" value="false"/>
-------------------------------------------------------------
NAME: inlining

VALUES: none | array | constant | once | all
DEFAULT: all
DESCRIPTION: Enable inlining. 'array' means ARRAY and STRING
  inlining, 'constants' means constant inlining, 'once' means
  once-feature inlining, and 'all' means anything that can
  be inlined.
NOTE: There can be several of these options.

ISE Ace:
  none -> inlining (no)
  array -> inlining (yes)
  constant -> inlining (yes)
  once -> inlining (yes)
  all -> inlining (yes)
  --
  If several occurrences of Ace options would need to be generated,
  only one occurrence would actually be generated with value 'yes'
  if there is at least one 'yes' and 'no' otherwise.
  The option has effect only in finalized mode.
ISE ECF:
  none -> <setting name="inlining" value="false"/>
  array -> <setting name="inlining" value="true"/>
  constant -> <setting name="inlining" value="true"/>
  once -> <setting name="inlining" value="true"/>
  all -> <setting name="inlining" value="true"/>
  --
  If several occurrences of ECF options would need to be generated,
  only one occurrence would actually be generated with value 'true'
  if there is at least one 'true' and 'false' otherwise.
  The option has effect only in finalized mode.
  Note that the default value in ECF is true.
-------------------------------------------------------------
NAME: inlining_size

VALUES: <value>
DEFAULT: 0
DESCRIPTION: Specify maximum size of routines to be inlined.
NOTE: No effect if 'inlining' is disabled.

ISE Ace:
  <value> -> inlining_size ("<value>")
  --
  The default value in Ace is 4.
ISE ECF:
  <value> -> <setting name="inlining_size" value="<value>"/>
-------------------------------------------------------------
NAME: jumps_optimization

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify whether jumps optimization will be enabled.
  This option activates low-level code optimization: chains of
  jump instructions (when one jump instruction transfers control
  to another jump instruction) are replaced when possible by the
  shortcut jump instruction.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: layout_optimization

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify whether special rearrangements may be used
  to represent the objects in the memory in more access-efficient
  way by changing the order of the attributes.
NOTE: The option 'finalize' (finalization mode) should
  be set in order for this option to have any effect.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: leaves_optimization

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify whether all calls to features of the leaf
  classes will be direct ones.
NOTE: The option 'finalize' (finalization mode) should
  be set in order for this option to have any effect.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: line_generation

VALUES: true | false
DEFAULT: false
DESCRIPTION: Generate C pragmas '#line x' in generated C code.

ISE Ace:
  true -> line_generation (yes)
  false -> line_generation (no)
ISE ECF:
  true -> <setting name="line_generation" value="true"/>
  false -> <setting name="line_generation" value="false"/>
-------------------------------------------------------------
NAME: link

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify object files, library files or command
  line options to be passed to the linker.
NOTE: There can be several of these options.

ISE Ace:
  <pathname> -> object: "<pathname>"
ISE ECF:
  <pathname> -> <external_library location="<pathname>"/>
-------------------------------------------------------------
NAME: linker

VALUES: default | microsoft
DEFAULT: default
DESCRIPTION: Specify which linker should be used. 'default'
  means that the standard Object Tools linker is invoked for
  linking, 'microsoft' means that ther standard Microsoft
  linker is invoked.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: linux_fpu_double_precision

VALUES: true | false
DEFAULT: false
DESCRIPTION: The default FPU precision used by gcc for Linux
  may not be appropriate for some users and does not match the
  behavior of gcc on other platforms or the behavior of other
  compilers on the same architecture (i386). The option
  has no effect if used on a different platform.
NOTE: This option was for the Halstenbach compiler. 
  Even if Halstenbach is not supported any more, gexace
  still supports this option because some Xace files may 
  have it.
  
ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: manifest_string_trace

VALUES: true | false
DEFAULT: false
DESCRIPTION: Print an information message each time a non-once
  manifest string is allocated at runtime.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: map

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify whether the map file is to be created.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: metadata_cache_path

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: When compiling to the .NET framework. Specify pathname
  where XML files describing DLLs assemblies will be generated.

ISE Ace:
  <pathname> -> metadada_cache_path ("<pathname>")
ISE ECF:
  <pathname> -> <setting name="metadata_cache_path" value="<pathname>"/>
  --
  ISE's default: $ISE_EIFFEL\dotnet\assemblies
-------------------------------------------------------------
NAME: msil_assembly_compatibility

VALUES: "None"|"Same domain"|"Same machine"|"Same process"
DEFAULT: no default
DESCRIPTION: When compiling to the .NET framework. Assembly compatibility.

ISE Ace:
  <value> -> msil_assembly_compatibility ("<value>")
ISE ECF:
  <value> -> <setting name="msil_assembly_compatibility" value="<value>"/>
  --
  Not used in ECF.
-------------------------------------------------------------
NAME: msil_classes_per_module

VALUES: <value>  integer > 0
DEFAULT: 5
DESCRIPTION: Number of classes generated per .NET module during
  incremental compilation. Increasing this value will slow down
  the incremental recompilation, but speed up the time to load
  the assembly while debugging in workbench mode.

ISE Ace:
  N/A
ISE ECF:
  <value> -> <setting name="msil_classes_per_module" value="<value>"/>
-------------------------------------------------------------
NAME: msil_clr_version

VALUES: <version>
DEFAULT: no default
EXAMPLE: v1.1.4322
DESCRIPTION: When compiling to the .NET framework. Specify version
  of .NET framework to be used.

ISE Ace:
  <version> -> msil_clr_version ("<version>")
ISE ECF:
  <version> -> <setting name="msil_clr_version" value="<version>"/>
  --
  ISE's ECF default: highest installed .NET version.
-------------------------------------------------------------
NAME: msil_culture

VALUES: <culture>
DEFAULT: no default
DESCRIPTION: When compiling to the .NET framework. MSIL culture.

ISE Ace:
  N/A
ISE ECF:
  <culture> -> <setting name="msil_culture" value="<culture>"/>
-------------------------------------------------------------
NAME: msil_generation

VALUES: true | false
DEFAULT: false
DESCRIPTION: Compile to the .NET framework.

ISE Ace:
  true -> msil_generation (yes)
  false -> msil_generation (no)
ISE ECF:
  true -> <setting name="msil_generation" value="true"/>
  false -> <setting name="msil_generation" value="false"/>
-------------------------------------------------------------
NAME: msil_generation_version

VALUES: <version>
DEFAULT: no default
EXAMPLE: 1.1.0411.02
DESCRIPTION: When compiling to the .NET framework. Specify version
  of generated DLL or EXE assembly (info stored in the metadata).

ISE Ace:
  <version> -> version ("<version>")
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: msil_key_file_name

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: When compiling to the .NET framework. Key to be
  able to add the generated binary to the Global Assembly
  Cache (GAC).

ISE Ace:
  N/A
ISE ECF:
  <pathname> -> <setting name="msil_key_file_name" value="<pathname>"/>
-------------------------------------------------------------
NAME: msil_use_optimized_precompile

VALUES: true | false
DEFAULT: false
DESCRIPTION: When compiling to the .NET framework. Use an
  optimized version of a precompile.

ISE Ace:
  N/A
ISE ECF:
  true -> <setting name="msil_use_optimized_precompile" value="true"/>
  false -> <setting name="msil_use_optimized_precompile" value="false"/>
-------------------------------------------------------------
NAME: multithreaded

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable generation of a multithreaded application.

ISE Ace:
  true -> multithreaded (yes)
  false -> multithreaded (no)
ISE ECF:
  true -> <setting name="multithreaded" value="true"/>
  false -> <setting name="multithreaded" value="false"/>
VE:
  true -> multithreading on
  false -> multithreading off
  --
  No effect on platforms other than Windows.
SE:
  N/A
-------------------------------------------------------------
NAME: namespace

VALUES: <namespace>
DEFAULT: no default
DESCRIPTION: When compiling to the .NET framework. Specify the
  namespace to be used for the classes of this system.

ISE Ace:
  N/A
ISE ECF:
  <namespace> -> <option namespace="<namespace>"/>
-------------------------------------------------------------
NAME: no_default_lib

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify that default library should not be linked
  in (works only with Object Tools linker)

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: old_verbatim_strings

VALUES: true | false
DEFAULT: false
DESCRIPTION: Use the old format for verbatim strings.

ISE Ace:
  N/A
ISE ECF:
  true -> <setting name="old_verbatim_strings" value="true"/>
  false -> <setting name="old_verbatim_strings" value="false"/>
-------------------------------------------------------------
NAME: override_cluster

VALUES: <cluster_name>
DEFAULT: no default
DESCRIPTION: Enable all classes of <cluster_name> to override
  the classes with the same names located in other clusters.
NOTE: There can be several of these options.

ISE Ace:
  <cluster_name> -> override_cluster (<cluster_name>)
ISE ECF:
  <cluster_name> -> <override name="<cluster_name>" location="..."/>
-------------------------------------------------------------
NAME: portable_code_generation

VALUES: true | false
DEFAULT: false
DESCRIPTION: Should generated C code be portable?
NOTE: This option was for the Halstenbach compiler. 
  Even if Halstenbach is not supported any more, gexace
  still supports this option because some Xace files may 
  have it.
  
ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: precompiled

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify a precompiled library.

ISE Ace:
  <pathname> -> precompiled ("<pathname>")
ISE ECF:
  N/A
  --
  Note: see if we can do something with <precompile> group.
-------------------------------------------------------------
NAME: profile

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable Eiffel profiling.

ISE Ace:
  true -> profile (yes)
  false -> profile (no)
ISE ECF:
  true -> <option profile="true"/>
  false -> <option profile="false"/>
-------------------------------------------------------------
NAME: reloads_optimization

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify whether register reloads optimizations
  will be enabled. This option activates low-level code
  optimization: the value will not be loaded in a register
  from the memory if it is already stored in the register.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: shared_library_definition

VALUES: <filename.def>
DEFAULT: no default
DESCRIPTION: Specify the file where the Eiffel compiler will
  look when generating the exported functions of a shared
  library.

ISE Ace:
  <filename.def> -> shared_library_definition ("<filename.def>")
ISE ECF:
  <filename.def> -> <setting name="shared_library_definition" value="<filename.def>"/>
-------------------------------------------------------------
NAME: split

VALUES: true | false
DEFAULT: false
DESCRIPTION: Generate several C files instead of one big
  single C file for the complete system.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: stack_size

VALUES: <value>
DEFAULT: no default
DESCRIPTION: Specify the stack size for the program. <value>
  is a positive number of bytes that will be reserved for
  the program stack.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: storable_filename

VALUES: <filename>
DEFAULT: no default
DESCRIPTION: Specify a list of class names (one per line) that
  should be marked as 'storable'. It's an alternative to declaring
  these classes in 'storable' clauses in cluster declarations
  in Ace files.
NOTE: This option was for the Halstenbach compiler. 
  Even if Halstenbach is not supported any more, gexace
  still supports this option because some Xace files may 
  have it.
  
ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: strip

VALUES: true | false
DEFAULT: true
DESCRIPTION: Enable 'strip' to be run on the generated executable.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: syntax

VALUES: obsolete | transitional | standard
DEFAULT: standard 
DESCRIPTION: Instruct the Eiffel parser to accept or reject some
  syntax notations for some Eiffel constructs. This is typically
  used during transitional periods.

ISE Ace:
  N/A
ISE ECF:
  <value> -> <option syntax="<value>"/>
  --
  This is using the ECF 1.5 notation. In ECF 1.4, the option was
  named 'syntax_level' and its possible values were integer codes.
-------------------------------------------------------------
NAME: target

VALUES: exe | dll | com | no_main
DEFAULT: exe
DESCRIPTION: Specify the output target of the application.

ISE Ace:
  exe -> msil_generation_type ("exe")
  dll -> msil_generation_type ("dll")
  com -> msil_generation_type ("exe")
  no_main -> msil_generation_type ("exe")
ISE ECF:
  exe -> <setting name="msil_generation_type" value="exe"/>
  dll -> <setting name="msil_generation_type" value="dll"/>
  com -> <setting name="msil_generation_type" value="exe"/>
  no_main -> <setting name="msil_generation_type" value="exe"/>
-------------------------------------------------------------
NAME: trace

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable trace mode.

ISE Ace:
  true -> trace (yes)
  false -> trace (no)
ISE ECF:
  true -> <option trace="true"/>
  false -> <option trace="false"/>
-------------------------------------------------------------
NAME: use_cluster_name_as_namespace

VALUES: true | false
DEFAULT: true
DESCRIPTION: When compiling to the .NET framework. Should the
  cluster name be used as namespace (e.g. base.STRING)?

ISE Ace:
  true -> use_cluster_name_as_namespace (yes)
  false -> use_cluster_name_as_namespace (no)
ISE ECF:
  true -> <setting name="use_cluster_name_as_namespace" value="true"/>
  false -> <setting name="use_cluster_name_as_namespace" value="false"/>
-------------------------------------------------------------
NAME: use_full_cluster_name_as_namespace

VALUES: true | false
DEFAULT: true
DESCRIPTION: When compiling to the .NET framework. Should names
  of folders in recursive clusters be used as namespaces (e.g.
  base.kernel.STRING)?

ISE Ace:
  true -> use_all_cluster_name_as_namespace (yes)
  false -> use_all_cluster_name_as_namespace (no)
ISE ECF:
  true -> <setting name="use_all_cluster_name_as_namespace" value="true"/>
  false -> <setting name="use_all_cluster_name_as_namespace" value="false"/>
-------------------------------------------------------------
NAME: verbose

VALUES: true | false
DEFAULT: false
DESCRIPTION: Run compiler in verbose mode.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: visible_filename

VALUES: <filename>
DEFAULT: no default
DESCRIPTION: Specify a list of class names (one per line) that
  should be marked as 'visible'. It's an alternative to declaring
  these classes in 'visible' clauses in cluster declarations
  in Ace files.
NOTE: This option was for the Halstenbach compiler. 
  Even if Halstenbach is not supported any more, gexace
  still supports this option because some Xace files may 
  have it.
  
ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: void_safety

VALUES: none | on_demand | complete
DEFAULT: none
DESCRIPTION: Should void-safety rules be checked?

ISE Ace:
  N/A
ISE ECF:
  none -> <option void_safety="none"/>
  on_demand -> <option void_safety="initialization"/>
  complete -> <option void_safety="all"/>
-------------------------------------------------------------
NAME: warning

VALUES: none | style | default | all
DEFAULT: default
DESCRIPTION: Specify warning level. 'style' means that Eiffel
  style warnings (e.g. having feature names in all upper-case)
  are emitted. 'default' means that warnings such as local
  variables unused are emitted. 'all' means that all warnings
  are emitted.

ISE Ace:
  N/A
ISE ECF:
  none -> <option warning="false"/>
  style -> <option warning="true"/>
  default -> <option warning="true"/>
  all -> <option warning="true"/>
-------------------------------------------------------------
NAME: wedit

VALUES: true | false
DEFAULT: false
DESCRIPTION: Enable support for the Wedit debugger.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------

NOTE: the following ISE Eiffel options are not supported
yet by 'gexace':

. disabled_debug (...)

=============================================================

CLUSTER OPTIONS

Following is the list of cluster-level options supported by
'gexace' (of the form <option name="..." value="..."/>),
and how they are translated to the vendor dependent Ace or
ECF files. "N/A" does not necessarily mean that the corresponding
Eiffel compiler does not support this facility, it could just
be that the facility is not parameterizable or is activated
from the command-line or from a separate tool rather than from
the Ace or ECF file. When an entry is marked "N/A" the option
will be silently ignored and nothing will be generated in the
Ace or ECF file for this option. Likewise when the name of an
option specified in an Xace file is not known by 'gexace'.

The DEFAULT section shows 'gexace' default value when this
option is not explicitely specified in the Xace file. It
can be different from the default value used by the various
Eiffel vendors in their Ace or ECF files.

For further details about each option, please refer to the
documentation provided with the Eiffel compilers.

-------------------------------------------------------------
NAME: abstract

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify that this cluster should not be searched
  for Eiffel classes (but its subclusters can if they don't
  have this option set).

ISE Ace:
  true ->
      if there is at least one non-abstract subcluster ->
          cluster_name: "pathname"
      if there is no non-abstract subcluster ->
          no output
  false ->
      cluster_name: "pathname"
ISE ECF:
  true ->
      if there is at least one non-abstract subcluster ->
          <cluster name="..." location="..."/>
      if there is no non-abstract subcluster ->
          no output
  false ->
      <cluster name="..." location="..."/>
-------------------------------------------------------------
NAME: assembly

VALUES: <name>
DEFAULT: no default
DESCRIPTION: Specify that the cluster is in fact a .NET assembly.

ISE Ace:
  <name> ->
      assembly
         cluster_name: "<name>", "<version>", "<culture>", "<public_key_token>"
ISE ECF:
  <name> ->
      <assembly name="<cluster_name>" location="<cluster_pathname>"
         assembly_name="<name>" assembly_version="<version>"
         assembly_cluster="<culture>" assembly_key="<public_key_token>"/>
-------------------------------------------------------------
NAME: assertion

VALUES: none | generate | require | supplier_precondition | ensure |
        invariant | loop_invariant | loop_variant | check | all
DEFAULT: no default
DESCRIPTION: Set default assertion level for the classes of
  this cluster. Override the assertion level specified at
  the system level.
NOTE: There can be several of these options.
NOTE: The purpose of 'generate' is to generate the code of
  the assertions in the generated code even if these assertions
  are turned off.

ISE Ace:
  none -> assertion (no)
  generate -> assertion (no)
  require -> assertion (require)
  supplier_precondition -> N/A
  ensure -> assertion (ensure)
  invariant -> assertion (invariant)
  loop_invariant -> assertion (loop)
  loop_variant -> assertion (loop)
  check -> assertion (check)
  all -> assertion (all)
ISE ECF:
  none -> <option/>
  generate -> <option/>
  require -> <option><assertions precondition="true"/></option>
  supplier_precondition -> <option><assertions supplier_precondition="true"/></option>
  ensure -> <option><assertions postcondition="true"/></option>
  invariant -> <option><assertions invariant="true"/></option>
  loop_invariant -> <option><assertions loop="true"/></option>
  loop_variant -> <option><assertions loop="true"/></option>
  check -> <option><assertions check="true"/></option>
  all -> <option><assertions precondition="true" postcondition="true" invariant="true" loop="true" check="true"/></option>
-------------------------------------------------------------
NAME: attached_by_default

VALUES: true | false
DEFAULT: false
DESCRIPTION: Are types attached by default when no attachment mark is specified?

ISE Ace:
  N/A
ISE ECF:
  true -> <option is_attached_by_default="true"/>
  false -> <option is_attached_by_default="false"/>
-------------------------------------------------------------
NAME: component

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify that the cluster is in fact a component library.
NOTE: This option was for the Halstenbach compiler. 
  Even if Halstenbach is not supported any more, gexace
  still supports this option because some Xace files may 
  have it.
  
ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: culture

VALUES: <culture>
DEFAULT: neutral
DESCRIPTION: Specify the culture of the .NET assembly.
NOTE: The option 'assembly' should be set in order for this
  option to have any effect.

ISE Ace:
  <culture> ->
      assembly
         cluster_name: "<name>", "<version>", "<culture>", "<public_key_token>"
ISE ECF:
  <culture> ->
      <assembly name="<cluster_name>" location="<cluster_pathname>"
         assembly_name="<name>" assembly_version="<version>"
         assembly_cluster="<culture>" assembly_key="<public_key_token>"/>
-------------------------------------------------------------
NAME: debug

VALUES: true | false
DEFAULT: no default
DESCRIPTION: Enable debug instructions for the classes of this cluster.
  Override the 'debug' option specified at the system level.

ISE Ace:
  true -> debug (yes)
  false -> debug (no)
ISE ECF:
  true -> <option debug="true"/>
  false -> <option debug="false"/>
-------------------------------------------------------------
NAME: debug_tag

VALUES: <tag>
DEFAULT: no default
DESCRIPTION: Enable debug instructions with tag '<tag>' for the
  classes of this cluster. Override the 'debug_tag' option
  specified at the system level.
NOTE: There can be several of these options.

ISE Ace:
  <tag> -> debug ("<tag>")
ISE ECF:
  <tag> -> <option> <debug name="<tag>" enabled="true"/> </option>
-------------------------------------------------------------
NAME: document

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify in which directory the documentation for
  the classes of this cluster generated by ISE EiffelStudio
  should be put (when using the Project/Generate documentation...
  menu). If no directory is specified, the documentation will
  be generated at the same level as the EIFGEN directory in a
  directory called 'Documentation'. Override the 'document'
  option specified at the system level.

ISE Ace:
  <pathname> -> document ("<pathname>")
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: ecf_library

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify that the cluster is the root of a library
  that is otherwise described by the ECF file <pathname>.

ISE Ace:
  N/A
ISE ECF
  <pathname> -> <library name="<cluster_name>" location="<pathname>"/>
-------------------------------------------------------------
NAME: exclude

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify a filename, or a directory name when the
  'recursive' option is set, that should not be taken into
  account when searching the cluster for Eiffel classes.
NOTE: There can be several of these options.

ISE Ace:
  <pathname> ->
      cluster_name: "cluster_pathname"
         exclude
            "<pathname>"
         end
ISE ECF:
  <pathname> ->
      <file_rule>
         <exclude>
            /<pathname>$
         </exclude>
      </file_rule>
-------------------------------------------------------------
NAME: full_class_checking

VALUES: true | false
DEFAULT: false
DESCRIPTION: Run flat Degree 3.

ISE Ace:
  N/A
ISE ECF:
  true -> <option full_class_checking="true"/>
  false -> <option full_class_checking="false"/>
-------------------------------------------------------------
NAME: header

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify a directory containing C header files.
NOTE: There can be several of these options.

ISE Ace:
  <pathname> -> include_path: "<pathname>"
ISE ECF:
  <pathname> -> <external_include location="<pathname>"/>
-------------------------------------------------------------
NAME: include

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify a filename that should be taken into
  account when searching the cluster for Eiffel classes,
  even though it does not necessarily have a .e extension.
NOTE: There can be several of these options.

ISE Ace:
  <pathname> ->
      cluster_name: "cluster_pathname"
         include
            "<pathname>"
         end
ISE ECF:
  <pathname> ->
      <file_rule>
         <include>
            /<pathname>$
         </include>
      </file_rule>
-------------------------------------------------------------
NAME: link

VALUES: <pathname>
DEFAULT: no default
DESCRIPTION: Specify object files, library files or command
  line options to be passed to the linker.
NOTE: There can be several of these options.

ISE Ace:
  <pathname> -> object: "<pathname>"
ISE ECF:
  <pathname> -> <external_library location="<pathname>"/>
-------------------------------------------------------------
NAME: namespace

VALUES: <namespace>
DEFAULT: no default
DESCRIPTION: When compiling to the .NET framework. Specify the
  namespace to be used for the classes of this cluster.

ISE Ace:
  <namespace> -> namespace ("<namespace>")
ISE ECF:
  <namespace> -> <option namespace="<namespace>"/>
-------------------------------------------------------------
NAME: prefix

VALUES: <prefix>
DEFAULT: no default
DESCRIPTION: Specify the class name prefix for classes of this
  cluster or .NET assembly,
NOTE: The option 'assembly' should be set in order for this
  option to have any effect when generating Ace files.

ISE Ace:
  <prefix> ->
      assembly
         cluster_name: "<name>", "<version>", "<culture>", "<public_key_token>"
            prefix
               "<prefix>"
            end
ISE ECF:
  <assembly_prefix> ->
      <assembly name="<cluster_name>" location="<cluster_pathname>"
         assembly_name="<name>" assembly_version="<version>"
         assembly_cluster="<culture>" assembly_key="<public_key_token>"
         prefix="<assembly_prefix>"/>
  <cluster_prefix> ->
      <cluster name="<cluster_name>" location="<cluster_pathname>" prefix="<cluster_prefix>"/>
-------------------------------------------------------------
NAME: profile

VALUES: true | false
DEFAULT: no default
DESCRIPTION: Enable Eiffel profiling for the classes of this
  cluster. Override the 'profile' option specified at the
  system level.

ISE Ace:
  true -> profile (yes)
  false -> profile (no)
ISE ECF:
  true -> <option profile="true"/>
  false -> <option profile="false"/>
-------------------------------------------------------------
NAME: public_key_token

VALUES: <public_key_token>
DEFAULT: b77a5c561934e089
DESCRIPTION: Specify the public_key_token of the .NET assembly.
NOTE: The option 'assembly' should be set in order for this
  option to have any effect.

ISE Ace:
  <public_key_token> ->
      assembly
         cluster_name: "<name>", "<version>", "<culture>", "<public_key_token>"
ISE ECF:
  <public_key_token> ->
      <assembly name="<cluster_name>" location="<cluster_pathname>"
         assembly_name="<name>" assembly_version="<version>"
         assembly_cluster="<culture>" assembly_key="<public_key_token>"/>
-------------------------------------------------------------
NAME: read_only

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify that the classes in the cluster
  directory should be considered as read-only by the
  underlying Eiffel tool.
NOTE: This option is only supported by ISE's EiffelStudio
  when the cluster is also 'recursive'. Otherwise it
  has no effect

ISE Ace:
  true ->
      library cluster_name: "pathname"
  false ->
      cluster_name: "pathname"
ISE ECF:
  true -> <cluster readonly="true"/>
  false -> <cluster readonly="false"/>
-------------------------------------------------------------
NAME: recursive

VALUES: true | false
DEFAULT: false
DESCRIPTION: Specify that the cluster directory and its
  subdirectories should be recursively traversed to find
  Eiffel classes.

ISE Ace:
  true ->
      all cluster_name: "pathname"
  false ->
      cluster_name: "pathname"
ISE ECF:
  true -> <cluster recursive="true"/>
  false -> <cluster recursive="false"/>
-------------------------------------------------------------
NAME: storable

VALUES: true | false
DEFAULT: no default
DESCRIPTION: Specify that all classes in the cluster should
  be included into the system.
NOTE: This option was for the Halstenbach compiler. 
  Even if Halstenbach is not supported any more, gexace
  still supports this option because some Xace files may 
  have it.
  
ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: syntax

VALUES: obsolete | transitional | standard
DEFAULT: transitional
DESCRIPTION: Instruct the Eiffel parser to accept or reject some
  syntax notations for some Eiffel constructs. This is typically
  used during transitional periods.

ISE Ace:
  N/A
ISE ECF:
  <value> -> <option syntax="<value>"/>
  --
  This is using the ECF 1.5 notation. In ECF 1.4, the option was
  named 'syntax_level' and its possible values were integer codes.
-------------------------------------------------------------
NAME: trace

VALUES: true | false
DEFAULT: no default
DESCRIPTION: Enable trace mode for the classes of this cluster.
  Override the 'trace' option specified at the system level.

ISE Ace:
  true -> trace (yes)
  false -> trace (no)
ISE ECF:
  true -> <option trace="true"/>
  false -> <option trace="false"/>
-------------------------------------------------------------
NAME: version

VALUES: <version>
DEFAULT: 1.0.5000.0
DESCRIPTION: Specify the version of the .NET assembly.
NOTE: The option 'assembly' should be set in order for this
  option to have any effect.

ISE Ace:
  <version> ->
      assembly
         cluster_name: "<name>", "<version>", "<culture>", "<public_key_token>"
ISE ECF:
  <version> ->
      <assembly name="<cluster_name>" location="<cluster_pathname>"
         assembly_name="<name>" assembly_version="<version>"
         assembly_cluster="<culture>" assembly_key="<public_key_token>"/>
-------------------------------------------------------------
NAME: void_safety

VALUES: none | on_demand | complete
DEFAULT: none
DESCRIPTION: Should void-safety rules be checked?

ISE Ace:
  N/A
ISE ECF:
  none -> <option void_safety="none"/>
  on_demand -> <option void_safety="initialization"/>
  complete -> <option void_safety="all"/>
-------------------------------------------------------------

=============================================================

CLASS OPTIONS

Following is the list of class-level options supported by
'gexace' (of the form <option name="..." value="..."/>),
and how they are translated to the vendor dependent Ace or
ECF files. "N/A" does not necessarily mean that the corresponding
Eiffel compiler does not support this facility, it could just
be that the facility is not parameterizable or is activated
from the command-line or from a separate tool rather than from
the Ace or ECF file. When an entry is marked "N/A" the option
will be silently ignored and nothing will be generated in the
Ace or ECF file for this option. Likewise when the name of an
option specified in an Xace file is not known by 'gexace'.

The DEFAULT section shows 'gexace' default value when this
option is not explicitely specified in the Xace file. It
can be different from the default value used by the various
Eiffel vendors in their Ace or ECF files.

For further details about each option, please refer to the
documentation provided with the Eiffel compilers.

-------------------------------------------------------------
NAME: assertion

VALUES: none | generate | require | supplier_precondition | ensure |
        invariant | loop_invariant | loop_variant | check | all
DEFAULT: no default
DESCRIPTION: Set default assertion level for this class.
  Override the assertion level specified at the cluster
  and system levels.
NOTE: There can be several of these options.
NOTE: The purpose of 'generate' is to generate the code of
  the assertions in the generated code even if these assertions
  are turned off.

ISE Ace:
  none -> assertion (no): CLASS_NAME
  generate -> assertion (no): CLASS_NAME
  require -> assertion (require): CLASS_NAME
  supplier_precondition -> N/A
  ensure -> assertion (ensure): CLASS_NAME
  invariant -> assertion (invariant): CLASS_NAME
  loop_invariant -> assertion (loop): CLASS_NAME
  loop_variant -> assertion (loop): CLASS_NAME
  check -> assertion (check): CLASS_NAME
  all -> assertion (all): CLASS_NAME
ISE ECF:
  none -> <class_option class="CLASS_NAME"/>
  generate -> <class_option class="CLASS_NAME"/>
  require -> <class_option class="CLASS_NAME"><assertions precondition="true"/></class_option>
  supplier_precondition -> <class_option class="CLASS_NAME"><assertions supplier_precondition="true"/></class_option>
  ensure -> <class_option class="CLASS_NAME"><assertions postcondition="true"/></class_option>
  invariant -> <class_option class="CLASS_NAME"><assertions invariant="true"/></class_option>
  loop_invariant -> <class_option class="CLASS_NAME"><assertions loop="true"/></class_option>
  loop_variant -> <class_option class="CLASS_NAME"><assertions loop="true"/></class_option>
  check -> <class_option class="CLASS_NAME"><assertions check="true"/></class_option>
  all -> <class_option class="CLASS_NAME"><assertions precondition="true" postcondition="true" invariant="true" loop="true" check="true"/></class_option>
-------------------------------------------------------------
NAME: attached_by_default

VALUES: true | false
DEFAULT: false
DESCRIPTION: Are types attached by default when no attachment mark is specified?

ISE Ace:
  N/A
ISE ECF:
  true -> <class_option class="CLASS_NAME" is_attached_by_default="true"/>
  false -> <class_option class="CLASS_NAME" is_attached_by_default="false"/>
-------------------------------------------------------------
NAME: debug

VALUES: true | false
DEFAULT: no default
DESCRIPTION: Enable debug instructions for this class.
  Override the 'debug' option specified at the cluster and
  system levels.

ISE Ace:
  true -> debug (yes): CLASS_NAME
  false -> debug (no): CLASS_NAME
ISE ECF:
  true -> <class_option class="CLASS_NAME" debug="true"/>
  false -> <class_option class="CLASS_NAME" debug="false"/>
-------------------------------------------------------------
NAME: debug_tag

VALUES: <tag>
DEFAULT: no default
DESCRIPTION: Enable debug instructions with tag '<tag>' for this
  class. Override the 'debug_tag' option specified at the cluster
  and system levels.
NOTE: There can be several of these options.

ISE Ace:
  <tag> -> debug ("<tag>"): CLASS_NAME
ISE ECF:
  <tag> -> <class_option class="CLASS_NAME"> <debug name="<tag>" enabled="true"/> </class_option>
-------------------------------------------------------------
NAME: export

VALUES: <external_name>
DEFAULT: no default
DESCRIPTION: Specify that this class and its features should
  be visible from C when using Cecil for example.

ISE Ace:
  <external_name> ->
     visible
         CLASS_NAME
             end
  --
  Limitation: the external name is not taken into account.
ISE ECF:
  <external_name> ->
      <visible class="CLASS_NAME" class_rename="<external_name>"/>
-------------------------------------------------------------
NAME: full_class_checking

VALUES: true | false
DEFAULT: false
DESCRIPTION: Run flat Degree 3.

ISE Ace:
  N/A
ISE ECF:
  true -> <class_option class="CLASS_NAME" full_class_checking="true"/>
  false -> <class_option class="CLASS_NAME" full_class_checking="false"/>
-------------------------------------------------------------
NAME: layout

VALUES: auto | sequential
DEFAULT: auto
DESCRIPTION: Specify the layout of an object when it is accessed
  from outside Eiffel code. 'auto' means the layout for the object
  fields (variable attributes) in memory is chosen automatically.
  'sequential' means the fields are laid out in memory in the order
  they appear in a class text. The fields of child classes are laid
  out after the fields of parent classes. Inability to do so
  (because of repeated and multiple inheritance) results in a
  compilation error.
NOTE: None of the currently supported Eiffel compilers supports
  this option.

ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: storable

VALUES: true | false
DEFAULT: no default
DESCRIPTION: Specify that this class should be included into
  the system.
NOTE: This option was for the Halstenbach compiler. 
  Even if Halstenbach is not supported any more, gexace
  still supports this option because some Xace files may 
  have it.
  
ISE Ace:
  N/A
ISE ECF:
  N/A
-------------------------------------------------------------
NAME: syntax

VALUES: obsolete | transitional | standard
DEFAULT: transitional
DESCRIPTION: Instruct the Eiffel parser to accept or reject some
  syntax notations for some Eiffel constructs. This is typically
  used during transitional periods.

ISE Ace:
  N/A
ISE ECF:
  <value> -> <class_option class="CLASS_NAME" syntax="<value>"/>
  --
  This is using the ECF 1.5 notation. In ECF 1.4, the option was
  named 'syntax_level' and its possible values were integer codes.
-------------------------------------------------------------
NAME: trace

VALUES: true | false
DEFAULT: no default
DESCRIPTION: Enable trace mode for this class. Override the
  'trace' option specified at the cluster and system levels.

ISE Ace:
  true -> trace (yes): CLASS_NAME
  false -> trace (no): CLASS_NAME
ISE ECF:
  true -> <class_option class="CLASS_NAME" trace="true"/>
  false -> <class_option class="CLASS_NAME" trace="false"/>
-------------------------------------------------------------
NAME: void_safety

VALUES: none | on_demand | complete
DEFAULT: none
DESCRIPTION: Should void-safety rules be checked?

ISE Ace:
  N/A
ISE ECF:
  none -> <class_option class="CLASS_NAME" void_safety="none"/>
  on_demand -> <class_option class="CLASS_NAME" void_safety="initialization"/>
  complete -> <class_option class="CLASS_NAME" void_safety="all"/>
-------------------------------------------------------------

=============================================================

FEATURE OPTIONS

Following is the list of feature-level options supported by
'gexace' (of the form <option name="..." value="..."/>),
and how they are translated to the vendor dependent Ace or
ECF files. "N/A" does not necessarily mean that the corresponding
Eiffel compiler does not support this facility, it could just
be that the facility is not parameterizable or is activated
from the command-line or from a separate tool rather than from
the Ace or ECF file. When an entry is marked "N/A" the option
will be silently ignored and nothing will be generated in the
Ace or ECF file for this option. Likewise when the name of an
option specified in an Xace file is not known by 'gexace'.

The DEFAULT section shows 'gexace' default value when this
option is not explicitely specified in the Xace file. It
can be different from the default value used by the various
Eiffel vendors in their Ace or ECF files.

For further details about each option, please refer to the
documentation provided with the Eiffel compilers.

-------------------------------------------------------------
NAME: callback

VALUES: winapi
DEFAULT: no default
DESCRIPTION: Specify that this feature should get a wrapper
  when $ operator is applied; the result can be used as a pointer
  to the Windows API callback function if value of the option is
  "winapi".
NOTE: None of the currently supported Eiffel compilers supports
  this option.

ISE Ace:
  N/A
ISE EF:
  N/A
-------------------------------------------------------------
NAME: export

VALUES: <external_name>
DEFAULT: no default
DESCRIPTION: Specify that this feature should be visible
  from C when using Cecil for example.

ISE Ace:
  <external_name> ->
     visible
         CLASS_NAME
             export
                 feature_name
             end
  --
  Limitation: the external name is not taken into account.
ISE ECF:
  <external_name> ->
      <visible class="CLASS_NAME" feature="feature_name" feature_rename="<external_name>"/>
-------------------------------------------------------------

