Eiffel
  • welcome
  • documentation
  • resources
  • contribute
  • blogs
  • download
  • Sign in
  • Eiffel
    • Overview
      • Two-Minute fact sheet
      • Your next project in Eiffel
      • Learning Eiffel
      • Common myths and misconceptions about Eiffel
    • Tutorials
      • Invitation to Eiffel
        • I2E: What Must I Know First?
        • I2E: Design Principles
        • I2E: Object-Oriented Design
        • I2E: Classes
        • I2E: Types
        • I2E: Design by Contract and Assertions
        • I2E: Exceptions
        • I2E: Event-Driven Programming and Agents
        • I2E: Genericity
        • I2E: Inheritance
        • I2E: Polymorphism and Dynamic Binding
        • I2E: Combining Genericity and Inheritance
        • I2E: Deferred Classes and Seamless Development
        • I2E: Putting a System Together
        • I2E: Invitation to Eiffel Copyright
      • Mini How-tos
        • NUMERIC to STRING
        • Iterating on a LIST
        • Removing object while iterating on a LIST
        • Managing CTRL+C in console application
      • Tutorial
        • ET: Overview
        • ET: General Properties
        • ET: The Software Process in Eiffel
        • ET: Hello World
        • ET: The Static Picture: System Organization
        • ET: The Dynamic Structure: Execution Model
        • ET: Genericity and Arrays
        • ET: Design by Contract (tm), Assertions and Exceptions
        • ET: Inheritance
        • ET: Instructions
        • ET: Once routines and shared objects
        • ET: Other Mechanisms
        • ET: Agents
        • ET: Lexical Conventions and Style Rules
        • ET: To Learn More
        • ET: Eiffel Tutorial Copyright
    • Language
      • Quick Reference
        • Syntax
        • Expressions
          • Conditional
          • Manifest array
        • Types
        • Reserved words
      • Void-safe programming
        • Background and tools
        • New void-safe project
        • Converting existing software to void-safety
          • Void-safe changes to Eiffel libraries
          • Mixing void-safe and void-unsafe software
        • What makes a Certified Attachment Pattern
    • Papers
      • Eiffel as an expression language
      • Void-safety: how Eiffel removes null-pointer dereferencing
      • Books
        • Touch of Class
        • OOSC2
        • ECMA Standard 367
        • Eiffel: The Language
        • OO Component Libraries
        • EiffelStudio Guided Tour
    • Coding Standards
      • Eiffel Code Comments
      • Eiffel Coding Standard
      • Local Declaration Guidelines
      • Style Guidelines
    • Examples
      • Introduction to the Examples Book
      • Example: Command line arguments
      • Example: Environment variables
      • Example: File IO
      • Example: Polymorphism
      • Example: Reverse a string
      • Example: Self-initializing attributes and assigner commands
      • Example: Sieve of Eratosthenes
      • Example: Sleep
  • EiffelStudio
    • Getting started
      • Setup and installation
        • Software Installation for EiffelStudio
          • FreeBSD
          • HP OpenVMS
          • HP Tru64 UNIX
          • HP-UX
          • Linux
          • Mac OS X
          • OpenBSD
          • SGI Irix
          • Solaris
          • Windows
            • MS C compiler
        • Third Party Tools Installation Help
      • Introducing EiffelStudio
    • Tutorials
      • Copying the Example Files
      • Starting EiffelStudio and Opening a Project
      • Compiling and Executing a System
      • A Look at the Project Directory
      • Starting To Browse
      • Viewing Classes
      • Customizing the tools layout and toolbars
      • Producing and Exporting Documentation
      • Browsing Features
      • Retargeting Through Pick-and-Drop
      • Recompiling and Editing
      • Handling Syntax and Validity Errors
      • Debugging and Run-time Monitoring
      • Using AutoTest
        • Testing: Background and basics
        • Create a manual test
        • Execute tests
        • Using extracted tests
        • Using generated tests
        • Managing tests
      • Computing Project Metrics
      • Graphics-based Design
      • Using automatic class licensing
      • How EiffelStudio Compiles
      • Papers
      • The Command-Line Compiler
      • Executing a System Within and Without EiffelStudio
      • Writing Filters with EFF
      • Manual identification and copyright
    • Reference
      • Release Notes
        • 24.05
        • 23.09
        • 22.12
          • 22.12 - macosx
        • 22.05
        • 21.11
        • 20.11
        • 20.05
        • 19.12
        • 19.05
        • 18.11
        • 18.07
        • 18.01
        • 17.05
        • 17.01
        • 16.05
        • 15.12
        • 15.08
        • 15.01
        • 14.05
        • 13.11
        • 7.x
          • 7.3
          • 7.2
          • 7.1
          • 7.0
        • 6.x
          • 6.8
          • 6.7
          • 6.6
          • 6.5
          • 6.4
          • 6.3
          • 6.2
          • 6.1
          • 6.0
        • 5.x
          • 5.7
          • 5.6
          • 5.5
          • 5.4
          • 5.3
          • 5.2
          • 5.1
          • 5.0
      • General Description
        • EiffelStudio interface mechanisms
          • Pick-and-drop mechanism
          • Pick-and-drop shortcut
          • Toolbar customization
        • EiffelStudio: All shortcuts
        • EiffelStudio window overview
        • Main toolbars
        • EiffelStudio: Key shortcuts
      • Browsing tools
        • Address bars
          • Main address bar
          • Context tool address bar
          • Change data share mode
        • Groups tool
          • System tree representation
          • New cluster command
          • New class command
          • Locate command
        • Features tool
          • Feature tree
          • New feature command
        • Favorites tool
          • Favorites tree
          • Favorites menu
          • Organize Favorites dialog
            • New favorite class command
            • Create favorite folder command
            • Move to Folder command
            • Remove favorite command
        • Windows tool
          • Window list
          • Window menu
          • Window related commands
        • Search tool
      • Editor
        • Cursor moves
        • Selection
        • Clipboard functionality
        • History functionality
        • Search functionality
        • Automatic completion
          • Syntax auto complete
          • Feature call auto complete
          • Class name auto complete
        • Code Templates
        • Operations on text blocks
          • Comment and uncomment lines
          • Indent and unindent selection
          • Embed lines in 'if then...end' or in 'debug...end'
        • Edit menu commands
        • Editor customization
      • Contract Editor tool
      • Project Settings
        • System Options
        • General Target Options
          • Language and Capabilities
          • Assertion Options
          • Group Options
          • Advanced Options
            • Warning Options
            • Debug Options
            • Externals Options
            • Tasks Options
            • Variables
            • Type mapping
      • Compiler
        • Melting Ice Technology
        • Supported C compilers
        • Command line
          • Eiffel compatibility options
          • Using command line options
          • Batch compilation
          • Command line interactive mode
            • Compile (and run) menu
            • Class menu
            • Feature menu
            • System menu
            • Testing menu
            • Profile menu
            • Documentation menu
          • finish_freezing utility
        • Dynamic library generation
          • Dynamic library builder
          • Definition file
          • Dynamic library: Generated files
        • Syntax level variant settings by version
        • ECMA-367 vs implementation
        • ETL 2nd printing vs implementation
        • Compiler History
          • 18.07
          • 16.05
          • 15.12
          • 15.08
          • 14.05
          • 13.11
          • 7.3
          • 7.2
          • 7.1
          • 7.0
          • 6.x
            • 6.8
            • 6.7
            • 6.6
            • 6.5
            • 6.4
            • 6.3
            • 6.2
            • 6.1
            • 6.0
          • 5.x
            • 5.7
            • 5.6
            • 5.5
            • 5..4
            • 5.3
            • 5.2
            • 5.1
            • 5.0
              • Assertions checking configuration changes
              • EiffelThread differences from 4.5 to 5.0
              • Compiler differences from 4.5 to 5.0
        • Errors, warnings
          • Legacy code
            • VD81
            • VWMA(1)
      • Code Analyzer
        • Getting Started
        • Running the Analyzer
        • Interpreting Results
        • Customization
        • Rules
          • CA001
          • CA002
          • CA003
          • CA004
          • CA005
          • CA006
          • CA010
          • CA011
          • CA013
          • CA017
          • CA020
          • CA023
          • CA024
          • CA025
          • CA028
          • CA032
          • CA033
          • CA034
          • CA071
      • Debugger
        • Execution commands
          • Run and stop at breakpoints
          • Run with arguments
          • Execution profiles
          • Run without breakpoints
          • Run a finalized executable
          • Step into a feature
          • Execute one line at a time
          • Step out of a feature
          • Pause an application
          • Stop a debugged application
          • Attach application
          • Detach application
        • Breakpoints
          • Breakpoint editing
          • Breakpoint commands
          • Breakpoint information command
          • Breakpoint menu
        • Call stack tool
          • Call stack tool: Interface
          • Information relative to a stack element
          • Supported exceptions
          • Save call stack
        • Execution record and replay
          • Record execution
          • Replay (recorded) execution
        • Object tool
          • Attribute symbols
          • Debug output
          • Set slice size command
          • Object Viewer (also known as Expanded display)
          • Remove object command
        • Expression evaluation
          • Evaluation tool or Watch tool
          • New expression dialog
        • Debuggee's Object Storage
        • Threads tool
        • Exceptions handling tool
        • Stack overflow prevention
        • Debugging tips with the objects grid view
        • Debugging preferences
        • Command line debugger
        • Debugging limitations
      • Error List Tool
      • Diagram tool
        • Notation
        • Diagram toolbar
        • Views
        • Contexts
        • Diagram tool: Code generation
      • Metrics tool
        • Requirements
        • Definitions
          • Attributes, metrics and measures
          • Units
          • Metric framework and theory
          • Elementary and composite metrics
          • Raw metrics and selection criteria
          • Selection Criteria
          • Predefined raw metrics
          • Scopes
          • Domains
          • Measurement archive
          • Under the Hood - How metrics work
          • Criterion References
        • User interface basics
          • Metric Evaluation Panel
          • Detailed Result Panel
          • Metric Definition Panel
          • Metric History Panel
          • Metric Archive Panel
      • Console tool
      • Outputs tool
        • General output pane
        • External compilation pane
      • Eiffel Information System
        • EIS: Outgoing
          • Information Tool
            • Browsing Information
            • Change Analysis
            • Annotation Management
            • Protocols
            • Variable Definition
        • EIS: Incoming
          • Eiffel Scheme Syntax
          • EIS incoming Examples
      • AutoTest
        • The AutoTest Interface
        • The Eiffel Test Wizard
      • Source Control
      • Wizards and dialogs
        • Profiler Wizard
          • Profiler wizard guided tour
            • Select the Compilation mode
            • Reuse or Generate an Execution Profile
            • Select a Run-time information record to generate the Execution Profile
            • Select the information you need and formulate your query
            • Profile query window
          • Profiler How To's
            • How to set up a Profiler Configuration File
        • Dialogs
          • New feature dialog
            • New feature dialog overview
            • New procedure layout
            • New function layout
            • New attribute layout
            • New feature dialog: feature properties modification
              • Feature clauses
              • Name field
              • Argument list
              • Header comment
              • Precondition
              • Local variable
              • Feature body
              • Postcondition
              • Type selection
              • Invariant field
              • Set-procedure
          • Error wizard
          • External commands editor dialog
      • EiffelStudio Preferences
        • Preference window overview
        • Preferences Reference
          • General Preferences
          • Interface
            • Development Window Preferences
            • Discardable dialogs
          • EiffelStudio Tools Preferences
            • Context Tools
            • EiffelStudio Diagram Tool Preferences
          • Editor Preferences
            • General Editor Preferences
            • Eiffel Editor Preferences
              • Syntax automatic completion preferences
                • Keywords automatic completion preferences
                • Keyword completion customization
                • Default values for keyword completion preferences
            • Keyboard shortcuts preferences
          • Debugger Preferences
          • Recent Project Preferences
      • Formatted information about compiled classes and features
        • Class views
          • Class formatters: Basic text view
          • Clickable view
          • Class formatters: Flat view
          • Contract view
          • Flat Contract view
          • Ancestors
          • Descendants
          • Cl