CINXE.COM

Producing and Exporting Documentation

<!doctype html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>Producing and Exporting Documentation</title> <link media="all" rel="stylesheet" href="/theme/responsive-eiffel-org/css/all.css" /> <link rel="shortcut icon" href="https://www.eiffel.org/favicon.ico"/> <link href="https://fonts.googleapis.com/css?family=Inconsolata|Open+Sans:400,700|Titillium+Web" rel="stylesheet" type="text/css" /> <!--[if IE]><script src="/theme/responsive-eiffel-org/js/ie.js"></script><![endif]--> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <link rel="stylesheet" href="/module/auth/files/css/auth.css" type="text/css"/> <link rel="stylesheet" href="/module/node/files/css/node.css" type="text/css"/> <link rel="stylesheet" href="/module/blog/files/css/blog.css" type="text/css"/> <link rel="stylesheet" href="/module/comments/files/css/comments.css" type="text/css"/> <link rel="stylesheet" href="/module/wikitext/files/css/wikitext.css" type="text/css"/> <link rel="stylesheet" href="/module/taxonomy/files/css/taxonomy.css" type="text/css"/> <style> table.recent-changes th { padding: 3px; } table.recent-changes td { padding: 3px; border: dotted 1px #ddd; } table.recent-changes td.date { padding-left: 15px; } table.recent-changes td.title { font-weight: bold; } </style> <link rel="stylesheet" href="/module/feed_aggregator/files/css/feed_aggregator.css" type="text/css"/> <link rel="profile" href="http://gmpg.org/xfn/11" /> <meta property="url" content="https://www.eiffel.org/doc/eiffelstudio/Producing_and_Exporting_Documentation" /> <meta property="og:type" content="article" /> <meta property="article:published_time" content="2021-02-08" /> <meta property="article:modified_time" content="2021-02-13" /> <meta property="og:image" content="https://www.eiffel.org/favicon.ico" /> <link rel='canonical' href='https://www.eiffel.org/doc/eiffelstudio/Producing_and_Exporting_Documentation' /> <link rel='shortlink' href='https://www.eiffel.org/doc/eiffelstudio/Producing_and_Exporting_Documentation' /> <script type="text/javascript" src="/module/wdocs/files/js/wdocs.js"></script> <link rel="stylesheet" href="/module/wdocs/files/css/wdocs.css" type="text/css"/> </head> <body class="page"> <div id="page"> <!-- Header --> <header id="header" class="grid-3"> <div class="logo"><a href="https://www.eiffel.org/"><img src="/theme/responsive-eiffel-org/images/logo.png" width="226" height="60" alt="Eiffel"></a></div> <nav id="nav"> <ul> <li><a href="https://www.eiffel.org/welcome">welcome</a></li> <li><a href="https://www.eiffel.org/documentation">documentation</a></li> <li><a href="https://www.eiffel.org/resources">resources</a></li> <li><a href="https://www.eiffel.org/contribute">contribute</a></li> <li><a href="https://www.eiffel.org/blogs">blogs</a></li> <li><a href="https://www.eiffel.org/downloads">download</a></li> </ul> </nav> <nav class="add-links"> <ul> <li> <a href="/account/roc-login?destination=doc%2Feiffelstudio%2FProducing_and_Exporting_Documentation">Sign in</a> </li> <li class="search"> <div class="block" id="block-gcse_search_form"><div class="inside"><form class="search-form" method="GET" action="https://www.eiffel.org/gcse20"> <input type="image" alt="Search" class="btn" src="/theme/responsive-eiffel-org/images/ico-search.png"/> <input type="text" name="q" size="25" maxlength="255" value="" /> </form> </div></div> </li> </ul> </nav> </header> <!-- Main part --> <main id="main"> <a id="main-content"><!-- Internal anchor to top content --></a> <section id="content" class=" doc" itemtype="http://schema.org/Article" itemscope=""> <div class="container grid has-gutter"> <aside id="sidebar"> <div class="holder"><div class="block" id="block-wdocs-tree"><div class="inside"><div id="wdocs-tree" class="menu"><ul class="vertical" > <li class="expandable "><a href="/doc/eiffel/Eiffel">Eiffel</a><ul> <li class="expandable "><a href="/doc/eiffel/Eiffel_Overview">Overview</a><ul> <li><a href="/doc/eiffel/Two-Minute_fact_sheet">Two-Minute fact sheet</a></li><li><a href="/doc/eiffel/Your_next_project_in_Eiffel">Your next project in Eiffel</a></li><li><a href="/doc/eiffel/Learning_Eiffel">Learning Eiffel</a></li><li><a href="/doc/eiffel/Common_myths_and_misconceptions_about_Eiffel">Common myths and misconceptions about Eiffel</a></li></ul></li><li class="expandable "><a href="/doc/eiffel/Eiffel_Tutorials">Tutorials</a><ul> <li class="expandable "><a href="/doc/eiffel/Invitation_to_Eiffel_%28I2E%29">Invitation to Eiffel</a><ul> <li><a href="/doc/eiffel/I2E-_What_Must_I_Know_First%3F">I2E: What Must I Know First?</a></li><li><a href="/doc/eiffel/I2E-_Design_Principles">I2E: Design Principles</a></li><li><a href="/doc/eiffel/I2E-_Object-Oriented_Design">I2E: Object-Oriented Design</a></li><li><a href="/doc/eiffel/I2E-_Classes">I2E: Classes</a></li><li><a href="/doc/eiffel/I2E-_Types">I2E: Types</a></li><li><a href="/doc/eiffel/I2E-_Design_by_Contract_and_Assertions">I2E: Design by Contract and Assertions</a></li><li><a href="/doc/eiffel/I2E-_Exceptions">I2E: Exceptions</a></li><li><a href="/doc/eiffel/I2E-_Event-Driven_Programming_and_Agents">I2E: Event-Driven Programming and Agents</a></li><li><a href="/doc/eiffel/I2E-_Genericity">I2E: Genericity</a></li><li><a href="/doc/eiffel/I2E-_Inheritance">I2E: Inheritance</a></li><li><a href="/doc/eiffel/I2E-_Polymorphism_and_Dynamic_Binding">I2E: Polymorphism and Dynamic Binding</a></li><li><a href="/doc/eiffel/I2E-_Combining_Genericity_and_Inheritance">I2E: Combining Genericity and Inheritance</a></li><li><a href="/doc/eiffel/I2E-_Deferred_Classes_and_Seamless_Development">I2E: Deferred Classes and Seamless Development</a></li><li><a href="/doc/eiffel/I2E-_Putting_a_System_Together">I2E: Putting a System Together</a></li><li><a href="/doc/eiffel/I2E-_Invitation_to_Eiffel_Copyright">I2E: Invitation to Eiffel Copyright</a></li></ul></li><li class="expandable "><a href="/doc/eiffel/Mini_How-tos">Mini How-tos</a><ul> <li><a href="/doc/eiffel/Getting_a_STRING_from_a_NUMERIC_object">NUMERIC to STRING</a></li><li><a href="/doc/eiffel/Iterating_on_a_LIST">Iterating on a LIST</a></li><li><a href="/doc/eiffel/Removing_object_while_iterating_on_a_LIST">Removing object while iterating on a LIST</a></li><li><a href="/doc/eiffel/Managing_CTRL%2BC_in_console_application">Managing CTRL+C in console application</a></li></ul></li><li class="expandable "><a href="/doc/eiffel/An_Eiffel_Tutorial_%28ET%29">Tutorial</a><ul> <li><a href="/doc/eiffel/ET-_Overview">ET: Overview</a></li><li><a href="/doc/eiffel/ET-_General_Properties">ET: General Properties</a></li><li><a href="/doc/eiffel/ET-_The_Software_Process_in_Eiffel">ET: The Software Process in Eiffel</a></li><li><a href="/doc/eiffel/ET-_Hello_World">ET: Hello World</a></li><li><a href="/doc/eiffel/ET-_The_Static_Picture-_System_Organization">ET: The Static Picture: System Organization</a></li><li><a href="/doc/eiffel/ET-_The_Dynamic_Structure-_Execution_Model">ET: The Dynamic Structure: Execution Model</a></li><li><a href="/doc/eiffel/ET-_Genericity_and_Arrays">ET: Genericity and Arrays</a></li><li><a href="/doc/eiffel/ET-_Design_by_Contract_%28tm%29%2C_Assertions_and_Exceptions">ET: Design by Contract (tm), Assertions and Exceptions</a></li><li><a href="/doc/eiffel/ET-_Inheritance">ET: Inheritance</a></li><li><a href="/doc/eiffel/ET-_Instructions">ET: Instructions</a></li><li><a href="/doc/eiffel/ET-_Once_routines_and_shared_objects">ET: Once routines and shared objects</a></li><li><a href="/doc/eiffel/ET-_Other_Mechanisms">ET: Other Mechanisms</a></li><li><a href="/doc/eiffel/ET-_Agents">ET: Agents</a></li><li><a href="/doc/eiffel/ET-_Lexical_Conventions_and_Style_Rules">ET: Lexical Conventions and Style Rules</a></li><li><a href="/doc/eiffel/ET-_To_Learn_More">ET: To Learn More</a></li><li><a href="/doc/eiffel/ET-_Eiffel_Tutorial_Copyright">ET: Eiffel Tutorial Copyright</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffel/Language_reference">Language</a><ul> <li class="expandable "><a href="/doc/eiffel/Quick_reference_to_the_Eiffel_programming_language">Quick Reference</a><ul> <li><a href="/doc/eiffel/Eiffel_programming_language_syntax">Syntax</a></li><li class="expandable "><a href="/doc/eiffel/Expressions">Expressions</a><ul> <li><a href="/doc/eiffel/Conditional_expression">Conditional</a></li><li><a href="/doc/eiffel/Manifest_array">Manifest array</a></li></ul></li><li><a href="/doc/eiffel/Types">Types</a></li><li><a href="/doc/eiffel/Eiffel_programming_language_reserved_words">Reserved words</a></li></ul></li><li class="expandable "><a href="/doc/eiffel/Void-safe_programming_in_Eiffel">Void-safe programming</a><ul> <li><a href="/doc/eiffel/Void-safety-_Background%2C_definition%2C_and_tools">Background and tools</a></li><li><a href="/doc/eiffel/Creating_a_new_void-safe_project">New void-safe project</a></li><li class="expandable "><a href="/doc/eiffel/Converting_existing_software_to_void-safety">Converting existing software to void-safety</a><ul> <li><a href="/doc/eiffel/Void-safe_changes_to_Eiffel_libraries">Void-safe changes to Eiffel libraries</a></li><li><a href="/doc/eiffel/Mixing_void-safe_and_void-unsafe_software">Mixing void-safe and void-unsafe software</a></li></ul></li><li><a href="/doc/eiffel/What_makes_a_Certified_Attachment_Pattern">What makes a Certified Attachment Pattern</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffel/Technical_papers_about_Eiffel">Papers</a><ul> <li><a href="/doc/eiffel/Eiffel_as_an_expression_language">Eiffel as an expression language</a></li><li><a href="/doc/eiffel/Void-safety-_how_Eiffel_removes_null-pointer_dereferencing">Void-safety: how Eiffel removes null-pointer dereferencing</a></li><li class="expandable "><a href="/doc/eiffel/Books_about_the_Eiffel_Method_and_Language">Books</a><ul> <li><a href="/doc/eiffel/Touch_of_Class-_Learning_to_Program_Well_with_Objects_and_Contracts">Touch of Class</a></li><li><a href="/doc/eiffel/Object-Oriented_Software_Construction%2C_2nd_Edition">OOSC2</a></li><li><a href="/doc/eiffel/ECMA_Standard_367">ECMA Standard 367</a></li><li><a href="/doc/eiffel/Eiffel-_The_Language">Eiffel: The Language</a></li><li><a href="/doc/eiffel/Reusable_Software-_The_Base_Object-Oriented_Component_Libraries">OO Component Libraries</a></li><li><a href="/doc/eiffel/EiffelStudio-_A_Guided_Tour_-_Eiffel_Software_Technical_Report">EiffelStudio Guided Tour</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffel/Coding_Standards">Coding Standards</a><ul> <li><a href="/doc/eiffel/Eiffel_Code_Comments">Eiffel Code Comments</a></li><li><a href="/doc/eiffel/Eiffel_Coding_Standard">Eiffel Coding Standard</a></li><li><a href="/doc/eiffel/Local_Declaration_Guidelines">Local Declaration Guidelines</a></li><li><a href="/doc/eiffel/Style_Guidelines">Style Guidelines</a></li></ul></li><li class="expandable "><a href="/doc/eiffel/Examples">Examples</a><ul> <li><a href="/doc/eiffel/Introduction_to_the_Examples_Book">Introduction to the Examples Book</a></li><li><a href="/doc/eiffel/Example-_Command_line_arguments">Example: Command line arguments</a></li><li><a href="/doc/eiffel/Example-_Environment_variables">Example: Environment variables</a></li><li><a href="/doc/eiffel/Example-_File_IO">Example: File IO</a></li><li><a href="/doc/eiffel/Example-_Polymorphism">Example: Polymorphism</a></li><li><a href="/doc/eiffel/Example-_Reverse_a_string">Example: Reverse a string</a></li><li><a href="/doc/eiffel/Example-_Self-initializing_attributes_and_assigner_commands">Example: Self-initializing attributes and assigner commands</a></li><li><a href="/doc/eiffel/Example-_Sieve_of_Eratosthenes">Example: Sieve of Eratosthenes</a></li><li><a href="/doc/eiffel/Example-_Sleep">Example: Sleep</a></li></ul></li></ul></li><li class="expandable expanded "><a href="/doc/eiffelstudio/EiffelStudio">EiffelStudio</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Getting_started">Getting started</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Setup_and_installation">Setup and installation</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Software_Installation_for_EiffelStudio">Software Installation for EiffelStudio</a><ul> <li><a href="/doc/eiffelstudio/FreeBSD">FreeBSD</a></li><li><a href="/doc/eiffelstudio/HP_OpenVMS">HP OpenVMS</a></li><li><a href="/doc/eiffelstudio/HP_Tru64_UNIX">HP Tru64 UNIX</a></li><li><a href="/doc/eiffelstudio/HP-UX">HP-UX</a></li><li><a href="/doc/eiffelstudio/Linux">Linux</a></li><li><a href="/doc/eiffelstudio/Mac_OS_X">Mac OS X</a></li><li><a href="/doc/eiffelstudio/OpenBSD">OpenBSD</a></li><li><a href="/doc/eiffelstudio/SGI_Irix">SGI Irix</a></li><li><a href="/doc/eiffelstudio/Solaris">Solaris</a></li><li class="expandable "><a href="/doc/eiffelstudio/Windows">Windows</a><ul> <li><a href="/doc/eiffelstudio/Installing_Microsoft_C_compiler">MS C compiler</a></li></ul></li></ul></li><li><a href="/doc/eiffelstudio/Third_Party_Tools_Installation_Help">Third Party Tools Installation Help</a></li></ul></li><li><a href="/doc/eiffelstudio/Introducing_EiffelStudio">Introducing EiffelStudio</a></li></ul></li><li class="expandable expanded "><a href="/doc/eiffelstudio/EiffelStudio_tutorials">Tutorials</a><ul> <li><a href="/doc/eiffelstudio/Copying_the_Example_Files">Copying the Example Files</a></li><li><a href="/doc/eiffelstudio/Starting_EiffelStudio_and_Opening_a_Project">Starting EiffelStudio and Opening a Project</a></li><li><a href="/doc/eiffelstudio/Compiling_and_Executing_a_System">Compiling and Executing a System</a></li><li><a href="/doc/eiffelstudio/A_Look_at_the_Project_Directory">A Look at the Project Directory</a></li><li><a href="/doc/eiffelstudio/Starting_To_Browse">Starting To Browse</a></li><li><a href="/doc/eiffelstudio/Viewing_Classes">Viewing Classes</a></li><li><a href="/doc/eiffelstudio/Customizing_the_tools_layout_and_toolbars">Customizing the tools layout and toolbars</a></li><li class="active "><a href="/doc/eiffelstudio/Producing_and_Exporting_Documentation">Producing and Exporting Documentation</a></li><li><a href="/doc/eiffelstudio/Browsing_Features">Browsing Features</a></li><li><a href="/doc/eiffelstudio/Retargeting_Through_Pick-and-Drop">Retargeting Through Pick-and-Drop</a></li><li><a href="/doc/eiffelstudio/Recompiling_and_Editing">Recompiling and Editing</a></li><li><a href="/doc/eiffelstudio/Handling_Syntax_and_Validity_Errors">Handling Syntax and Validity Errors</a></li><li><a href="/doc/eiffelstudio/Debugging_and_Run-time_Monitoring">Debugging and Run-time Monitoring</a></li><li class="expandable "><a href="/doc/eiffelstudio/Using_AutoTest">Using AutoTest</a><ul> <li><a href="/doc/eiffelstudio/Testing-_Background_and_basics">Testing: Background and basics</a></li><li><a href="/doc/eiffelstudio/Create_a_manual_test">Create a manual test</a></li><li><a href="/doc/eiffelstudio/Execute_tests">Execute tests</a></li><li><a href="/doc/eiffelstudio/Using_extracted_tests">Using extracted tests</a></li><li><a href="/doc/eiffelstudio/Using_generated_tests">Using generated tests</a></li><li><a href="/doc/eiffelstudio/Managing_tests">Managing tests</a></li></ul></li><li><a href="/doc/eiffelstudio/Computing_Project_Metrics">Computing Project Metrics</a></li><li><a href="/doc/eiffelstudio/Graphics-based_Design">Graphics-based Design</a></li><li><a href="/doc/eiffelstudio/Using_automatic_class_licensing">Using automatic class licensing</a></li><li><a href="/doc/eiffelstudio/How_EiffelStudio_Compiles">How EiffelStudio Compiles</a></li><li><a href="/doc/eiffelstudio/Technical_papers_about_EiffelStudio">Papers</a></li><li><a href="/doc/eiffelstudio/The_Command-Line_Compiler">The Command-Line Compiler</a></li><li><a href="/doc/eiffelstudio/Executing_a_System_Within_and_Without_EiffelStudio">Executing a System Within and Without EiffelStudio</a></li><li><a href="/doc/eiffelstudio/Writing_Documentation_Filters_with_EFF%2C_the_Eiffel_Filter_Format">Writing Filters with EFF</a></li><li><a href="/doc/eiffelstudio/Manual_identification_and_copyright">Manual identification and copyright</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_Reference">Reference</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_release_notes">Release Notes</a><ul> <li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_25.02">25.02</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_24.05">24.05</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_23.09">23.09</a></li><li class="expandable "><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_22.12">22.12</a><ul> <li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_22.12_-_macosx">22.12 - macosx</a></li></ul></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_22.05">22.05</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_21.11">21.11</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_20.11">20.11</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_20.05">20.05</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_19.12">19.12</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_19.05">19.05</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_18.11">18.11</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_18.07">18.07</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_18.01">18.01</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_17.05">17.05</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_17.01">17.01</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_16.05">16.05</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_15.12">15.12</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_15.08">15.08</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_15.01">15.01</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_14.05">14.05</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_13.11">13.11</a></li><li class="expandable "><a href="/doc/eiffelstudio/7.x">7.x</a><ul> <li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_7.3">7.3</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_7.2">7.2</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_7.1">7.1</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_7.0">7.0</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_6_release_notes">6.x</a><ul> <li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_6.8">6.8</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_6.7">6.7</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_6.6">6.6</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_6.5">6.5</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_6.4">6.4</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_6.3">6.3</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_6.2">6.2</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_6.1">6.1</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_6.0">6.0</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_5_release_notes">5.x</a><ul> <li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_5.7">5.7</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_5.6">5.6</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_5.5">5.5</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_5.4">5.4</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_5.3">5.3</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_5.2">5.2</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_5.1">5.1</a></li><li><a href="/doc/eiffelstudio/Release_notes_for_EiffelStudio_5.0">5.0</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio-_General_interface_description">General Description</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_interface_mechanisms">EiffelStudio interface mechanisms</a><ul> <li><a href="/doc/eiffelstudio/Pick-and-drop_mechanism">Pick-and-drop mechanism</a></li><li><a href="/doc/eiffelstudio/Pick-and-drop_shortcut">Pick-and-drop shortcut</a></li><li><a href="/doc/eiffelstudio/Toolbar_customization">Toolbar customization</a></li></ul></li><li><a href="/doc/eiffelstudio/EiffelStudio-_All_shortcuts">EiffelStudio: All shortcuts</a></li><li><a href="/doc/eiffelstudio/EiffelStudio_window_overview">EiffelStudio window overview</a></li><li><a href="/doc/eiffelstudio/Main_toolbars">Main toolbars</a></li><li><a href="/doc/eiffelstudio/EiffelStudio-_Key_shortcuts">EiffelStudio: Key shortcuts</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Browsing_tools">Browsing tools</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Address_bars">Address bars</a><ul> <li><a href="/doc/eiffelstudio/Main_address_bar">Main address bar</a></li><li><a href="/doc/eiffelstudio/Context_tool_address_bar">Context tool address bar</a></li><li><a href="/doc/eiffelstudio/Change_data_share_mode">Change data share mode</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Groups_tool">Groups tool</a><ul> <li><a href="/doc/eiffelstudio/System_tree_representation">System tree representation</a></li><li><a href="/doc/eiffelstudio/New_cluster_command">New cluster command</a></li><li><a href="/doc/eiffelstudio/New_class_command">New class command</a></li><li><a href="/doc/eiffelstudio/Locate_command">Locate command</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Features_tool">Features tool</a><ul> <li><a href="/doc/eiffelstudio/Feature_tree">Feature tree</a></li><li><a href="/doc/eiffelstudio/New_feature_command">New feature command</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Favorites_tool">Favorites tool</a><ul> <li><a href="/doc/eiffelstudio/Favorites_tree">Favorites tree</a></li><li><a href="/doc/eiffelstudio/Favorites_menu">Favorites menu</a></li><li class="expandable "><a href="/doc/eiffelstudio/Organize_Favorites_dialog">Organize Favorites dialog</a><ul> <li><a href="/doc/eiffelstudio/New_favorite_class_command">New favorite class command</a></li><li><a href="/doc/eiffelstudio/Create_favorite_folder_command">Create favorite folder command</a></li><li><a href="/doc/eiffelstudio/Move_to_Folder_command">Move to Folder command</a></li><li><a href="/doc/eiffelstudio/Remove_favorite_command">Remove favorite command</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Windows_tool">Windows tool</a><ul> <li><a href="/doc/eiffelstudio/Window_list">Window list</a></li><li><a href="/doc/eiffelstudio/Window_menu">Window menu</a></li><li><a href="/doc/eiffelstudio/Window_related_commands">Window related commands</a></li></ul></li><li><a href="/doc/eiffelstudio/Search_tool">Search tool</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_Editor">Editor</a><ul> <li><a href="/doc/eiffelstudio/Cursor_moves">Cursor moves</a></li><li><a href="/doc/eiffelstudio/Selection">Selection</a></li><li><a href="/doc/eiffelstudio/Clipboard_functionality">Clipboard functionality</a></li><li><a href="/doc/eiffelstudio/History_functionality">History functionality</a></li><li><a href="/doc/eiffelstudio/Search_functionality">Search functionality</a></li><li class="expandable "><a href="/doc/eiffelstudio/Automatic_completion">Automatic completion</a><ul> <li><a href="/doc/eiffelstudio/Syntax_auto_complete">Syntax auto complete</a></li><li><a href="/doc/eiffelstudio/Feature_call_auto_complete">Feature call auto complete</a></li><li><a href="/doc/eiffelstudio/Class_name_auto_complete">Class name auto complete</a></li></ul></li><li><a href="/doc/eiffelstudio/Code_Templates">Code Templates</a></li><li class="expandable "><a href="/doc/eiffelstudio/Operations_on_text_blocks">Operations on text blocks</a><ul> <li><a href="/doc/eiffelstudio/Comment_and_uncomment_lines">Comment and uncomment lines</a></li><li><a href="/doc/eiffelstudio/Indent_and_unindent_selection">Indent and unindent selection</a></li><li><a href="/doc/eiffelstudio/Embed_lines_in_%27if_then...end%27_or_in_%27debug...end%27">Embed lines in &#39;if then...end&#39; or in &#39;debug...end&#39;</a></li></ul></li><li><a href="/doc/eiffelstudio/Edit_menu_commands">Edit menu commands</a></li><li><a href="/doc/eiffelstudio/Editor_customization">Editor customization</a></li></ul></li><li><a href="/doc/eiffelstudio/Contract_Editor_tool">Contract Editor tool</a></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio-_Project_settings_window">Project Settings</a><ul> <li><a href="/doc/eiffelstudio/System_Options">System Options</a></li><li class="expandable "><a href="/doc/eiffelstudio/General_Target_Options">General Target Options</a><ul> <li><a href="/doc/eiffelstudio/Language_and_Capabilities">Language and Capabilities</a></li><li><a href="/doc/eiffelstudio/Assertion_Options">Assertion Options</a></li><li><a href="/doc/eiffelstudio/Group_Options">Group Options</a></li><li class="expandable "><a href="/doc/eiffelstudio/Advanced_Options">Advanced Options</a><ul> <li><a href="/doc/eiffelstudio/Warning_Options">Warning Options</a></li><li><a href="/doc/eiffelstudio/Debug_Options">Debug Options</a></li><li><a href="/doc/eiffelstudio/Externals_Options">Externals Options</a></li><li><a href="/doc/eiffelstudio/Tasks_Options">Tasks Options</a></li><li><a href="/doc/eiffelstudio/Variables">Variables</a></li><li><a href="/doc/eiffelstudio/Type_mapping">Type mapping</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Compiler">Compiler</a><ul> <li><a href="/doc/eiffelstudio/Melting_Ice_Technology">Melting Ice Technology</a></li><li><a href="/doc/eiffelstudio/Supported_C_compilers">Supported C compilers</a></li><li class="expandable "><a href="/doc/eiffelstudio/Command_line">Command line</a><ul> <li><a href="/doc/eiffelstudio/Eiffel_compatibility_options">Eiffel compatibility options</a></li><li><a href="/doc/eiffelstudio/EiffelStudio-_Using_command_line_options">Using command line options</a></li><li><a href="/doc/eiffelstudio/Batch_compilation">Batch compilation</a></li><li class="expandable "><a href="/doc/eiffelstudio/Command_line_interactive_mode">Command line interactive mode</a><ul> <li><a href="/doc/eiffelstudio/Compile_%28and_run%29_menu">Compile (and run) menu</a></li><li><a href="/doc/eiffelstudio/Class_menu">Class menu</a></li><li><a href="/doc/eiffelstudio/Feature_menu">Feature menu</a></li><li><a href="/doc/eiffelstudio/System_menu">System menu</a></li><li><a href="/doc/eiffelstudio/Testing_menu">Testing menu</a></li><li><a href="/doc/eiffelstudio/Profile_menu">Profile menu</a></li><li><a href="/doc/eiffelstudio/Documentation_menu">Documentation menu</a></li></ul></li><li><a href="/doc/eiffelstudio/finish_freezing_utility">finish_freezing utility</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Dynamic_library_generation">Dynamic library generation</a><ul> <li><a href="/doc/eiffelstudio/Dynamic_library_builder">Dynamic library builder</a></li><li><a href="/doc/eiffelstudio/Definition_file">Definition file</a></li><li><a href="/doc/eiffelstudio/Dynamic_library-_Generated_files">Dynamic library: Generated files</a></li></ul></li><li><a href="/doc/eiffelstudio/Syntax_level_variant_settings_by_version">Syntax level variant settings by version</a></li><li><a href="/doc/eiffelstudio/Differences_between_standard_ECMA-367_and_Eiffel_Software_implementation">ECMA-367 vs implementation</a></li><li><a href="/doc/eiffelstudio/Differences_between_ETL_2nd_printing_and__Eiffel_Software__implementation">ETL 2nd printing vs implementation</a></li><li class="expandable "><a href="/doc/eiffelstudio/Compiler_History">Compiler History</a><ul> <li><a href="/doc/eiffelstudio/Major_changes_with_ISE_Eiffel_18.01_and_18.07">18.07</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_15.12_and_ISE_Eiffel_16.05">16.05</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_15.08_and_ISE_Eiffel_15.12">15.12</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_15.01_and_ISE_Eiffel_15.08">15.08</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_13.11_and_ISE_Eiffel_14.05">14.05</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_7.3_and_ISE_Eiffel_13.11">13.11</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_7.2_and_ISE_Eiffel_7.3">7.3</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_7.1_and_ISE_Eiffel_7.2">7.2</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_7.0_and_ISE_Eiffel_7.1">7.1</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_6.8_and_ISE_Eiffel_7.0">7.0</a></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_6_compiler_history">6.x</a><ul> <li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_6.7_and_ISE_Eiffel_6.8">6.8</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_6.6_and_ISE_Eiffel_6.7">6.7</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_6.5_and_ISE_Eiffel_6.6">6.6</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_6.4_and_ISE_Eiffel_6.5">6.5</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_6.3_and_ISE_Eiffel_6.4">6.4</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_6.2_and_ISE_Eiffel_6.3">6.3</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_6.1_and_ISE_Eiffel_6.2">6.2</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_6.0_and_ISE_Eiffel_6.1">6.1</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_5.7_and_ISE_Eiffel_6.0">6.0</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_5_compiler_history">5.x</a><ul> <li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_5.6_and_ISE_Eiffel_5.7">5.7</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_5.5_and_ISE_Eiffel_5.6">5.6</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_5.4_and_ISE_Eiffel_5.5">5.5</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_5.3_and_ISE_Eiffel_5.4">5..4</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_5.2_and_ISE_Eiffel_5.3">5.3</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_5.1_and_ISE_Eiffel_5.2">5.2</a></li><li><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_5.0_and_ISE_Eiffel_5.1">5.1</a></li><li class="expandable "><a href="/doc/eiffelstudio/Major_changes_between_ISE_Eiffel_4.5_and_ISE_Eiffel_5.0">5.0</a><ul> <li><a href="/doc/eiffelstudio/Assertions_checking_configuration_changes">Assertions checking configuration changes</a></li><li><a href="/doc/eiffelstudio/EiffelThread_differences_from_4.5_to_5.0">EiffelThread differences from 4.5 to 5.0</a></li><li><a href="/doc/eiffelstudio/Compiler_differences_from_4.5_to_5.0">Compiler differences from 4.5 to 5.0</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Errors_and_warnings">Errors, warnings</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Legacy_code">Legacy code</a><ul> <li><a href="/doc/eiffelstudio/VD81">VD81</a></li><li><a href="/doc/eiffelstudio/VWMA%281%29">VWMA(1)</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Code_Analyzer">Code Analyzer</a><ul> <li><a href="/doc/eiffelstudio/Getting_Started">Getting Started</a></li><li><a href="/doc/eiffelstudio/Running_the_Code_Analyzer">Running the Analyzer</a></li><li><a href="/doc/eiffelstudio/Code_Analyzer-_Interpreting_Results">Interpreting Results</a></li><li><a href="/doc/eiffelstudio/Code_Analyzer-_Customization">Customization</a></li><li class="expandable "><a href="/doc/eiffelstudio/Code_Analyzer-_Rules">Rules</a><ul> <li><a href="/doc/eiffelstudio/CA001_-_Self_Assignment">CA001</a></li><li><a href="/doc/eiffelstudio/CA002_-_Unused_argument">CA002</a></li><li><a href="/doc/eiffelstudio/CA003_-_Feature_never_called">CA003</a></li><li><a href="/doc/eiffelstudio/CA004_-_Command-Query_Separation">CA004</a></li><li><a href="/doc/eiffelstudio/CA005_-_Useless_object_test_local">CA005</a></li><li><a href="/doc/eiffelstudio/CA006_-_Object_test_typing_not_needed">CA006</a></li><li><a href="/doc/eiffelstudio/CA010_-_High_complexity_of_nested_branches_and_loops">CA010</a></li><li><a href="/doc/eiffelstudio/CA011_-_Too_many_arguments">CA011</a></li><li><a href="/doc/eiffelstudio/CA013_-_Exported_creation_procedure">CA013</a></li><li><a href="/doc/eiffelstudio/CA017_-_Empty_conditional">CA017</a></li><li><a href="/doc/eiffelstudio/CA020_-_Variable_not_read_after_assignment">CA020</a></li><li><a href="/doc/eiffelstudio/CA023_-_Unneeded_parentheses">CA023</a></li><li><a href="/doc/eiffelstudio/CA024_-_Use_across_loop">CA024</a></li><li><a href="/doc/eiffelstudio/CA025_-_Use_semicolons">CA025</a></li><li><a href="/doc/eiffelstudio/CA028_-_Combine_two_if_instructions">CA028</a></li><li><a href="/doc/eiffelstudio/CA032_-_Long_routine_implementation">CA032</a></li><li><a href="/doc/eiffelstudio/CA033_-_Large_class">CA033</a></li><li><a href="/doc/eiffelstudio/CA034_-_High_NPATH_complexity">CA034</a></li><li><a href="/doc/eiffelstudio/CA071_-_Self-comparison">CA071</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Debugger">Debugger</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Execution_commands">Execution commands</a><ul> <li><a href="/doc/eiffelstudio/Run_and_stop_at_breakpoints">Run and stop at breakpoints</a></li><li><a href="/doc/eiffelstudio/Run_with_arguments">Run with arguments</a></li><li><a href="/doc/eiffelstudio/Execution_profiles">Execution profiles</a></li><li><a href="/doc/eiffelstudio/Run_without_breakpoints">Run without breakpoints</a></li><li><a href="/doc/eiffelstudio/Run_a_finalized_executable">Run a finalized executable</a></li><li><a href="/doc/eiffelstudio/Step_into_a_feature">Step into a feature</a></li><li><a href="/doc/eiffelstudio/Execute_one_line_at_a_time">Execute one line at a time</a></li><li><a href="/doc/eiffelstudio/Step_out_of_a_feature">Step out of a feature</a></li><li><a href="/doc/eiffelstudio/Pause_an_application">Pause an application</a></li><li><a href="/doc/eiffelstudio/Stop_a_debugged_application">Stop a debugged application</a></li><li><a href="/doc/eiffelstudio/Attach_application">Attach application</a></li><li><a href="/doc/eiffelstudio/Detach_application">Detach application</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Breakpoints">Breakpoints</a><ul> <li><a href="/doc/eiffelstudio/Breakpoint_editing">Breakpoint editing</a></li><li><a href="/doc/eiffelstudio/Breakpoint_commands">Breakpoint commands</a></li><li><a href="/doc/eiffelstudio/Breakpoint_information_command">Breakpoint information command</a></li><li><a href="/doc/eiffelstudio/Breakpoint_menu">Breakpoint menu</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Call_stack_tool">Call stack tool</a><ul> <li><a href="/doc/eiffelstudio/Call_stack_tool-_Interface">Call stack tool: Interface</a></li><li><a href="/doc/eiffelstudio/Information_relative_to_a_stack_element">Information relative to a stack element</a></li><li><a href="/doc/eiffelstudio/Supported_exceptions">Supported exceptions</a></li><li><a href="/doc/eiffelstudio/Save_call_stack">Save call stack</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Execution_record_and_replay">Execution record and replay</a><ul> <li><a href="/doc/eiffelstudio/Record_execution">Record execution</a></li><li><a href="/doc/eiffelstudio/Replay_%28recorded%29_execution">Replay (recorded) execution</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Object_tool">Object tool</a><ul> <li><a href="/doc/eiffelstudio/Attribute_symbols">Attribute symbols</a></li><li><a href="/doc/eiffelstudio/Debug_output">Debug output</a></li><li><a href="/doc/eiffelstudio/Set_slice_size_command">Set slice size command</a></li><li><a href="/doc/eiffelstudio/Object_Viewer_%28also_known_as_Expanded_display%29">Object Viewer (also known as Expanded display)</a></li><li><a href="/doc/eiffelstudio/Remove_object_command">Remove object command</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Expression_evaluation">Expression evaluation</a><ul> <li><a href="/doc/eiffelstudio/Evaluation_tool_or_Watch_tool">Evaluation tool or Watch tool</a></li><li><a href="/doc/eiffelstudio/New_expression_dialog">New expression dialog</a></li></ul></li><li><a href="/doc/eiffelstudio/Debuggee%27s_Object_Storage">Debuggee&#39;s Object Storage</a></li><li><a href="/doc/eiffelstudio/Threads_tool">Threads tool</a></li><li><a href="/doc/eiffelstudio/Exceptions_handling_tool">Exceptions handling tool</a></li><li><a href="/doc/eiffelstudio/Stack_overflow_prevention">Stack overflow prevention</a></li><li><a href="/doc/eiffelstudio/Debugging_tips_with_the_objects_grid_view">Debugging tips with the objects grid view</a></li><li><a href="/doc/eiffelstudio/Debugging_preferences">Debugging preferences</a></li><li><a href="/doc/eiffelstudio/Command_line_debugger">Command line debugger</a></li><li><a href="/doc/eiffelstudio/Debugging_limitations">Debugging limitations</a></li></ul></li><li><a href="/doc/eiffelstudio/Error_List_Tool">Error List Tool</a></li><li class="expandable "><a href="/doc/eiffelstudio/Diagram_tool">Diagram tool</a><ul> <li><a href="/doc/eiffelstudio/Notation">Notation</a></li><li><a href="/doc/eiffelstudio/Diagram_toolbar">Diagram toolbar</a></li><li><a href="/doc/eiffelstudio/Views">Views</a></li><li><a href="/doc/eiffelstudio/Contexts">Contexts</a></li><li><a href="/doc/eiffelstudio/Diagram_tool-_Code_generation">Diagram tool: Code generation</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Metrics_tool">Metrics tool</a><ul> <li><a href="/doc/eiffelstudio/Requirements">Requirements</a></li><li class="expandable "><a href="/doc/eiffelstudio/Definitions">Definitions</a><ul> <li><a href="/doc/eiffelstudio/Attributes%2C_metrics_and_measures">Attributes, metrics and measures</a></li><li><a href="/doc/eiffelstudio/Units">Units</a></li><li><a href="/doc/eiffelstudio/Metric_framework_and_theory">Metric framework and theory</a></li><li><a href="/doc/eiffelstudio/Elementary_and_composite_metrics">Elementary and composite metrics</a></li><li><a href="/doc/eiffelstudio/Raw_metrics_and_selection_criteria">Raw metrics and selection criteria</a></li><li><a href="/doc/eiffelstudio/Selection_Criteria">Selection Criteria</a></li><li><a href="/doc/eiffelstudio/Predefined_raw_metrics">Predefined raw metrics</a></li><li><a href="/doc/eiffelstudio/Scopes">Scopes</a></li><li><a href="/doc/eiffelstudio/Domains">Domains</a></li><li><a href="/doc/eiffelstudio/Measurement_archive">Measurement archive</a></li><li><a href="/doc/eiffelstudio/Under_the_Hood_-_How_metrics_work">Under the Hood - How metrics work</a></li><li><a href="/doc/eiffelstudio/Criterion_References">Criterion References</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/User_interface_basics">User interface basics</a><ul> <li><a href="/doc/eiffelstudio/Metric_Evaluation_Panel">Metric Evaluation Panel</a></li><li><a href="/doc/eiffelstudio/Detailed_Result_Panel">Detailed Result Panel</a></li><li><a href="/doc/eiffelstudio/Metric_Definition_Panel">Metric Definition Panel</a></li><li><a href="/doc/eiffelstudio/Metric_History_Panel">Metric History Panel</a></li><li><a href="/doc/eiffelstudio/Metric_Archive_Panel">Metric Archive Panel</a></li></ul></li></ul></li><li><a href="/doc/eiffelstudio/Console_tool">Console tool</a></li><li class="expandable "><a href="/doc/eiffelstudio/Outputs_tool">Outputs tool</a><ul> <li><a href="/doc/eiffelstudio/General_output_pane">General output pane</a></li><li><a href="/doc/eiffelstudio/External_compilation_pane">External compilation pane</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Eiffel_Information_System">Eiffel Information System</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/EIS-_Outgoing">EIS: Outgoing</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Information_Tool">Information Tool</a><ul> <li><a href="/doc/eiffelstudio/Browsing_Information">Browsing Information</a></li><li><a href="/doc/eiffelstudio/Change_Analysis">Change Analysis</a></li><li><a href="/doc/eiffelstudio/Annotation_Management">Annotation Management</a></li><li><a href="/doc/eiffelstudio/Protocols">Protocols</a></li><li><a href="/doc/eiffelstudio/Variable_Definition">Variable Definition</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EIS-_Incoming">EIS: Incoming</a><ul> <li><a href="/doc/eiffelstudio/Eiffel_Scheme_Syntax">Eiffel Scheme Syntax</a></li><li><a href="/doc/eiffelstudio/EIS_incoming_Examples">EIS incoming Examples</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/AutoTest">AutoTest</a><ul> <li><a href="/doc/eiffelstudio/The_AutoTest_Interface">The AutoTest Interface</a></li><li><a href="/doc/eiffelstudio/The_Eiffel_Test_Wizard">The Eiffel Test Wizard</a></li></ul></li><li><a href="/doc/eiffelstudio/Source_Control_Management">Source Control</a></li><li class="expandable "><a href="/doc/eiffelstudio/Wizards_and_dialogs">Wizards and dialogs</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Profiler_Wizard">Profiler Wizard</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Profiler_wizard_guided_tour">Profiler wizard guided tour</a><ul> <li><a href="/doc/eiffelstudio/Select_the_Compilation_mode">Select the Compilation mode</a></li><li><a href="/doc/eiffelstudio/Reuse_or_Generate_an_Execution_Profile">Reuse or Generate an Execution Profile</a></li><li><a href="/doc/eiffelstudio/Select_a_Run-time_information_record_to_generate_the_Execution_Profile">Select a Run-time information record to generate the Execution Profile</a></li><li><a href="/doc/eiffelstudio/Select_the_information_you_need_and_formulate_your_query">Select the information you need and formulate your query</a></li><li><a href="/doc/eiffelstudio/Profile_query_window">Profile query window</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Profiler_How_To%27s">Profiler How To&#39;s</a><ul> <li><a href="/doc/eiffelstudio/How_to_set_up_a_Profiler_Configuration_File">How to set up a Profiler Configuration File</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Dialogs">Dialogs</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/New_feature_dialog">New feature dialog</a><ul> <li><a href="/doc/eiffelstudio/New_feature_dialog_overview">New feature dialog overview</a></li><li><a href="/doc/eiffelstudio/New_procedure_layout">New procedure layout</a></li><li><a href="/doc/eiffelstudio/New_function_layout">New function layout</a></li><li><a href="/doc/eiffelstudio/New_attribute_layout">New attribute layout</a></li><li class="expandable "><a href="/doc/eiffelstudio/New_feature_dialog-_feature_properties_modification">New feature dialog: feature properties modification</a><ul> <li><a href="/doc/eiffelstudio/Feature_clauses">Feature clauses</a></li><li><a href="/doc/eiffelstudio/Name_field">Name field</a></li><li><a href="/doc/eiffelstudio/Argument_list">Argument list</a></li><li><a href="/doc/eiffelstudio/Header_comment">Header comment</a></li><li><a href="/doc/eiffelstudio/Precondition">Precondition</a></li><li><a href="/doc/eiffelstudio/Local_variable">Local variable</a></li><li><a href="/doc/eiffelstudio/Feature_body">Feature body</a></li><li><a href="/doc/eiffelstudio/Postcondition">Postcondition</a></li><li><a href="/doc/eiffelstudio/Type_selection">Type selection</a></li><li><a href="/doc/eiffelstudio/Invariant_field">Invariant field</a></li><li><a href="/doc/eiffelstudio/Set-procedure">Set-procedure</a></li></ul></li></ul></li><li><a href="/doc/eiffelstudio/Error_wizard">Error wizard</a></li><li><a href="/doc/eiffelstudio/External_commands_editor_dialog">External commands editor dialog</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_Preferences">EiffelStudio Preferences</a><ul> <li><a href="/doc/eiffelstudio/Preference_window_overview">Preference window overview</a></li><li class="expandable "><a href="/doc/eiffelstudio/Preferences_Reference">Preferences Reference</a><ul> <li><a href="/doc/eiffelstudio/General_Preferences">General Preferences</a></li><li class="expandable "><a href="/doc/eiffelstudio/Interface">Interface</a><ul> <li><a href="/doc/eiffelstudio/Development_Window_Preferences">Development Window Preferences</a></li><li><a href="/doc/eiffelstudio/Discardable_dialogs">Discardable dialogs</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_Tools_Preferences">EiffelStudio Tools Preferences</a><ul> <li><a href="/doc/eiffelstudio/Context_Tools">Context Tools</a></li><li><a href="/doc/eiffelstudio/EiffelStudio_Diagram_Tool_Preferences">EiffelStudio Diagram Tool Preferences</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Editor_Preferences">Editor Preferences</a><ul> <li><a href="/doc/eiffelstudio/General_Editor_Preferences">General Editor Preferences</a></li><li class="expandable "><a href="/doc/eiffelstudio/Eiffel_Editor_Preferences">Eiffel Editor Preferences</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Syntax_automatic_completion_preferences">Syntax automatic completion preferences</a><ul> <li><a href="/doc/eiffelstudio/Keywords_automatic_completion_preferences">Keywords automatic completion preferences</a></li><li><a href="/doc/eiffelstudio/Keyword_completion_customization">Keyword completion customization</a></li><li><a href="/doc/eiffelstudio/Default_values_for_keyword_completion_preferences">Default values for keyword completion preferences</a></li></ul></li></ul></li><li><a href="/doc/eiffelstudio/Keyboard_shortcuts_preferences">Keyboard shortcuts preferences</a></li></ul></li><li><a href="/doc/eiffelstudio/Debugger_Preferences">Debugger Preferences</a></li><li><a href="/doc/eiffelstudio/Recent_Project_Preferences">Recent Project Preferences</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Formatted_information_about_compiled_classes_and_features">Formatted information about compiled classes and features</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Class_views">Class views</a><ul> <li><a href="/doc/eiffelstudio/Class_formatters-_Basic_text_view">Class formatters: Basic text view</a></li><li><a href="/doc/eiffelstudio/Clickable_view">Clickable view</a></li><li><a href="/doc/eiffelstudio/Class_formatters-_Flat_view">Class formatters: Flat view</a></li><li><a href="/doc/eiffelstudio/Contract_view">Contract view</a></li><li><a href="/doc/eiffelstudio/Flat_Contract_view">Flat Contract view</a></li><li><a href="/doc/eiffelstudio/Ancestors">Ancestors</a></li><li><a href="/doc/eiffelstudio/Descendants">Descendants</a></li><li><a href="/doc/eiffelstudio/Clients">Clients</a></li><li><a href="/doc/eiffelstudio/Suppliers">Suppliers</a></li><li><a href="/doc/eiffelstudio/Attributes">Attributes</a></li><li><a href="/doc/eiffelstudio/Routines">Routines</a></li><li><a href="/doc/eiffelstudio/Invariants">Invariants</a></li><li><a href="/doc/eiffelstudio/Creators">Creators</a></li><li><a href="/doc/eiffelstudio/Deferred_features">Deferred features</a></li><li><a href="/doc/eiffelstudio/Once_routines_and_constants">Once routines and constants</a></li><li><a href="/doc/eiffelstudio/Class_formatters-_External_features">Class formatters: External features</a></li><li><a href="/doc/eiffelstudio/Exported_features">Exported features</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Feature_views">Feature views</a><ul> <li><a href="/doc/eiffelstudio/Feature_formatters-_Basic_text_view">Feature formatters: Basic text view</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Flat_view">Feature formatters: Flat view</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Callers">Feature formatters: Callers</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Assigners">Feature formatters: Assigners</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Creators">Feature formatters: Creators</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Callees">Feature formatters: Callees</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Assignees">Feature formatters: Assignees</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Creations">Feature formatters: Creations</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Implementers">Feature formatters: Implementers</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Ancestor_versions">Feature formatters: Ancestor versions</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Descendant_versions">Feature formatters: Descendant versions</a></li><li><a href="/doc/eiffelstudio/Feature_formatters-_Homonyms">Feature formatters: Homonyms</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio_How_To%27s">EiffelStudio How To&#39;s</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/EiffelStudio-_Starting_a_project">EiffelStudio: Starting a project</a><ul> <li><a href="/doc/eiffelstudio/EiffelStudio-_Creating_a_new_project">EiffelStudio: Creating a new project</a></li><li><a href="/doc/eiffelstudio/Retrieving_a_project_from_a_configuration_file">Retrieving a project from a configuration file</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Browsing">Browsing</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Searching">Searching</a><ul> <li><a href="/doc/eiffelstudio/Looking_for_a_cluster">Looking for a cluster</a></li><li><a href="/doc/eiffelstudio/Looking_for_a_class">Looking for a class</a></li><li><a href="/doc/eiffelstudio/Looking_for_a_feature">Looking for a feature</a></li><li><a href="/doc/eiffelstudio/Looking_for_an_expression_in_text">Looking for an expression in text</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Viewing_information_about_a_component">Viewing information about a component</a><ul> <li><a href="/doc/eiffelstudio/Centering_tools_on_a_component">Centering tools on a component</a></li><li><a href="/doc/eiffelstudio/Viewing_information_about_a_cluster">Viewing information about a cluster</a></li><li><a href="/doc/eiffelstudio/Viewing_information_about_a_class">Viewing information about a class</a></li><li><a href="/doc/eiffelstudio/Viewing_information_about_a_feature">Viewing information about a feature</a></li></ul></li><li><a href="/doc/eiffelstudio/Opening_new_windows">Opening new windows</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Editing_a_project">Editing a project</a><ul> <li><a href="/doc/eiffelstudio/Adding_a_cluster">Adding a cluster</a></li><li><a href="/doc/eiffelstudio/Adding_a_library">Adding a library</a></li><li><a href="/doc/eiffelstudio/Adding_a_class">Adding a class</a></li><li class="expandable "><a href="/doc/eiffelstudio/Adding_a_feature">Adding a feature</a><ul> <li><a href="/doc/eiffelstudio/Opening_the_new_feature_dialog">Opening the new feature dialog</a></li><li><a href="/doc/eiffelstudio/Adding_a_procedure">Adding a procedure</a></li><li><a href="/doc/eiffelstudio/Adding_a_function">Adding a function</a></li><li><a href="/doc/eiffelstudio/Adding_an_attribute">Adding an attribute</a></li></ul></li><li><a href="/doc/eiffelstudio/Removing_a_cluster">Removing a cluster</a></li><li><a href="/doc/eiffelstudio/Removing_a_class">Removing a class</a></li><li><a href="/doc/eiffelstudio/Removing_a_feature">Removing a feature</a></li><li><a href="/doc/eiffelstudio/Moving_a_class">Moving a class</a></li><li><a href="/doc/eiffelstudio/Changing_project_parameters">Changing project parameters</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Compiling">Compiling</a><ul> <li><a href="/doc/eiffelstudio/Generating_executables">Generating executables</a></li><li><a href="/doc/eiffelstudio/Generating_libraries">Generating libraries</a></li><li><a href="/doc/eiffelstudio/Setting_the_assertion_level">Setting the assertion level</a></li><li><a href="/doc/eiffelstudio/Setting_the_syntax_variant">Setting the syntax variant</a></li><li><a href="/doc/eiffelstudio/Enabling_the_profiler">Enabling the profiler</a></li><li><a href="/doc/eiffelstudio/Using_libraries">Using libraries</a></li><li><a href="/doc/eiffelstudio/Tuning_a_program">Tuning a program</a></li><li><a href="/doc/eiffelstudio/Using_threads">Using threads</a></li><li><a href="/doc/eiffelstudio/Clean_compile">Clean compile</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Running_and_debugging">Running and debugging</a><ul> <li><a href="/doc/eiffelstudio/Running_an_application">Running an application</a></li><li><a href="/doc/eiffelstudio/Interrupting_an_application">Interrupting an application</a></li><li><a href="/doc/eiffelstudio/Exploring_an_application_dynamic_state">Exploring an application dynamic state</a></li><li><a href="/doc/eiffelstudio/Using_breakpoints">Using breakpoints</a></li><li><a href="/doc/eiffelstudio/Handling_exceptions">Handling exceptions</a></li><li><a href="/doc/eiffelstudio/Using_debug_clauses">Using debug clauses</a></li><li><a href="/doc/eiffelstudio/Setting_the_command_line_arguments">Setting the command line arguments</a></li><li><a href="/doc/eiffelstudio/Profiling">Profiling</a></li><li><a href="/doc/eiffelstudio/Tracing">Tracing</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Designing_a_project">Designing a project</a><ul> <li><a href="/doc/eiffelstudio/Switching_to_the_diagram_tool">Switching to the diagram tool</a></li><li><a href="/doc/eiffelstudio/Undoing_and_redoing">Undoing and redoing</a></li><li class="expandable "><a href="/doc/eiffelstudio/Altering_the_system">Altering the system</a><ul> <li><a href="/doc/eiffelstudio/Creating_a_new_class">Creating a new class</a></li><li><a href="/doc/eiffelstudio/Creating_a_new_feature">Creating a new feature</a></li><li class="expandable "><a href="/doc/eiffelstudio/Refactoring">Refactoring</a><ul> <li><a href="/doc/eiffelstudio/Rename_Class">Rename Class</a></li><li><a href="/doc/eiffelstudio/Rename_Feature">Rename Feature</a></li><li><a href="/doc/eiffelstudio/Pull_up_Feature">Pull up Feature</a></li></ul></li><li><a href="/doc/eiffelstudio/Deleting_items">Deleting items</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Managing_links">Managing links</a><ul> <li><a href="/doc/eiffelstudio/Creating_inheritance_links">Creating inheritance links</a></li><li><a href="/doc/eiffelstudio/Creating_client-supplier_links">Creating client-supplier links</a></li><li><a href="/doc/eiffelstudio/Creating_aggregate_client-supplier_links">Creating aggregate client-supplier links</a></li><li><a href="/doc/eiffelstudio/Using_the_link_tool">Using the link tool</a></li><li><a href="/doc/eiffelstudio/Creating_handles">Creating handles</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Modifying_the_display">Modifying the display</a><ul> <li><a href="/doc/eiffelstudio/Showing_or_hiding_links_and_labels">Showing or hiding links and labels</a></li><li><a href="/doc/eiffelstudio/Changing_system_exploration_depth">Changing system exploration depth</a></li><li><a href="/doc/eiffelstudio/Removing_items_from_a_view">Removing items from a view</a></li><li><a href="/doc/eiffelstudio/Changing_colors_of_classes">Changing colors of classes</a></li><li><a href="/doc/eiffelstudio/Zooming_a_diagram">Zooming a diagram</a></li><li><a href="/doc/eiffelstudio/Retrieving_all_classes_into_a_cluster">Retrieving all classes into a cluster</a></li><li><a href="/doc/eiffelstudio/Iconifying_and_restoring_a_cluster">Iconifying and restoring a cluster</a></li><li><a href="/doc/eiffelstudio/Change_the_Display_Quality">Change the Display Quality</a></li><li><a href="/doc/eiffelstudio/Turn_on_Physics_Mode">Turn on Physics Mode</a></li><li><a href="/doc/eiffelstudio/Switching_between_BON_and_UML_View">Switching between BON and UML View</a></li><li><a href="/doc/eiffelstudio/Anchoring">Anchoring</a></li><li><a href="/doc/eiffelstudio/Adjusting_Physics_Settings">Adjusting Physics Settings</a></li><li><a href="/doc/eiffelstudio/Using_the_Cluster_Legend">Using the Cluster Legend</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Managing_views">Managing views</a><ul> <li><a href="/doc/eiffelstudio/Adding_a_view">Adding a view</a></li><li><a href="/doc/eiffelstudio/Deleting_a_view">Deleting a view</a></li></ul></li><li><a href="/doc/eiffelstudio/Exporting_a_diagram_to_PNG_image_file">Exporting a diagram to PNG image file</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/How_to_analyze_a_project">How to analyze a project</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Computing_a_measure">Computing a measure</a><ul> <li><a href="/doc/eiffelstudio/Evaluating_a_measure">Evaluating a measure</a></li><li><a href="/doc/eiffelstudio/Saving_a_measure">Saving a measure</a></li><li><a href="/doc/eiffelstudio/Viewing_measure_details">Viewing measure details</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Handling_new_metrics">Handling new metrics</a><ul> <li class="expandable "><a href="/doc/eiffelstudio/Defining_new_metrics">Defining new metrics</a><ul> <li><a href="/doc/eiffelstudio/Defining_derived_metrics">Defining derived metrics</a></li><li><a href="/doc/eiffelstudio/Defining_linear_metrics">Defining linear metrics</a></li><li><a href="/doc/eiffelstudio/Defining_ratio_metrics">Defining ratio metrics</a></li></ul></li><li><a href="/doc/eiffelstudio/Managing_new_metrics">Managing new metrics</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Handling_archives">Handling archives</a><ul> <li><a href="/doc/eiffelstudio/Creating_an_archive">Creating an archive</a></li><li><a href="/doc/eiffelstudio/Comparing_to_an_archive">Comparing to an archive</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Generating_documentation">Generating documentation</a><ul> <li><a href="/doc/eiffelstudio/Generating_multi-format_documentation">Generating multi-format documentation</a></li><li><a href="/doc/eiffelstudio/Generating_XMI_documentation">Generating XMI documentation</a></li></ul></li><li class="expandable "><a href="/doc/eiffelstudio/Customizing_EiffelStudio">Customizing EiffelStudio</a><ul> <li><a href="/doc/eiffelstudio/Setting_the_editor_behavior">Setting the editor behavior</a></li><li><a href="/doc/eiffelstudio/Changing_texts_display">Changing texts display</a></li><li><a href="/doc/eiffelstudio/Customizing_toolbars">Customizing toolbars</a></li><li><a href="/doc/eiffelstudio/Making_the_context_tool_independent_from_the_editor">Making the context tool independent from the editor</a></li><li><a href="/doc/eiffelstudio/Changing_the_default_history_size">Changing the default history size</a></li><li><a href="/doc/eiffelstudio/Choosing_classes_to_be_ignored_in_BON_diagrams">Choosing classes to be ignored in BON diagrams</a></li><li><a href="/doc/eiffelstudio/Customizing_class_text_views">Customizing class text views</a></li><li><a href="/doc/eiffelstudio/Configuring_an_external_editor">Configuring an external editor</a></li><li><a href="/doc/eiffelstudio/Customizing_EiffelStudio_for_Subversion_commands">Customizing EiffelStudio for Subversion commands</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Solutions_and_Libraries">Solutions and Libraries</a><ul> <li><a href="/doc/solutions/IRON-_Eiffel_package_repository">IRON Eiffel repository</a></li><li class="expandable "><a href="/doc/solutions/.NET">.NET</a><ul> <li><a href="/doc/solutions/.NET_Installation_instructions">.NET Installation instructions</a></li><li><a href="/doc/solutions/Building_a_.NET_application">Building a .NET application</a></li><li class="expandable "><a href="/doc/solutions/The_Eiffel_for_.NET_language">The Eiffel for .NET language</a><ul> <li class="expandable "><a href="/doc/solutions/Conventions">Conventions</a><ul> <li><a href="/doc/solutions/Eiffel_for_.NET_Terminology">Eiffel for .NET Terminology</a></li><li><a href="/doc/solutions/Eiffel_Class_and_Feature_Names">Eiffel Class and Feature Names</a></li><li><a href="/doc/solutions/Type_Organization">Type Organization</a></li><li><a href="/doc/solutions/Constructors_and_Creation_Procedures">Constructors and Creation Procedures</a></li><li><a href="/doc/solutions/Similar_Types_Occurring_in_Both_Libraries">Similar Types Occurring in Both Libraries</a></li><li><a href="/doc/solutions/Eiffel_reserved_words">Eiffel reserved words</a></li></ul></li><li class="expandable "><a href="/doc/solutions/Eiffel_for_.NET">Eiffel for .NET</a><ul> <li><a href="/doc/solutions/Eiffel_Classes">Eiffel Classes</a></li><li><a href="/doc/solutions/Adding_Class_Features">Adding Class Features</a></li><li><a href="/doc/solutions/Inheritance">Inheritance</a></li><li><a href="/doc/solutions/Genericity">Genericity</a></li><li><a href="/doc/solutions/Design_by_Contract_and_Assertions">Design by Contract and Assertions</a></li><li><a href="/doc/solutions/Exception_Mechanism">Exception Mechanism</a></li><li><a href="/doc/solutions/Event_Programming_with_Agents">Event Programming with Agents</a></li><li><a href="/doc/solutions/Using_Referenced_Assemblies">Using Referenced Assemblies</a></li><li><a href="/doc/solutions/Eiffel_for_.NET_Compliance">Eiffel for .NET Compliance</a></li><li><a href="/doc/solutions/Referenced_Assembly_Type_and_Feature_Name_Conversion">Referenced Assembly Type and Feature Name Conversion</a></li></ul></li><li class="expandable "><a href="/doc/solutions/Eiffel_for_.NET_Integration">Eiffel for .NET Integration</a><ul> <li><a href="/doc/solutions/Workaround_Eiffel_.NET_limitations">Workarounds</a></li><li><a href="/doc/solutions/Eiffel_.NETCore_execution">NETCore execution</a></li></ul></li><li><a href="/doc/solutions/Known_issues">Known issues</a></li></ul></li><li class="expandable "><a href="/doc/solutions/Eiffel_.NET_samples">Eiffel .NET samples</a><ul> <li class="expandable "><a href="/doc/solutions/ADO_.NET_Samples">ADO .NET Samples</a><ul> <li><a href="/doc/solutions/ADO.NET_Sample">ADO.NET Sample</a></li></ul></li><li class="expandable "><a href="/doc/solutions/Console_Samples">Console Samples</a><ul> <li><a href="/doc/solutions/Calculator-_console">Calculator: console</a></li></ul></li><li class="expandable "><a href="/doc/solutions/Threads_Samples">Threads Samples</a><ul> <li><a href="/doc/solutions/Pools">Pools</a></li><li><a href="/doc/solutions/Timers">Timers</a></li></ul></li><li class="expandable "><a href="/doc/solutions/Winform_Samples">Winform Samples</a><ul> <li><a href="/doc/solutions/Simple_Hello_world_form_sample">Simple Hello world form sample</a></li><li><a href="/doc/solutions/Message_Box">Message Box</a></li><li class="expandable "><a href="/doc/solutions/Menus">Menus</a><ul> <li><a href="/doc/solutions/Menu_Details">Menu Details</a></li></ul></li><li class="expandable "><a href="/doc/solutions/MDI">MDI</a><ul> <li><a href="/doc/solutions/MDI_Details">MDI Details</a></li></ul></li><li><a href="/doc/solutions/Calculator-_winform">Calculator: winform</a></li><li><a href="/doc/solutions/GDI_plus_-_text">GDI plus - text</a></li><li><a href="/doc/solutions/Date_Time_Picker">Date Time Picker</a></li><li><a href="/doc/solutions/Progress_bar_sample">Progress bar sample</a></li><li><a href="/doc/solutions/Simple_data_binding">Simple data binding</a></li><li><a href="/doc/solutions/Tree_view">Tree view</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Eiffel_for_ASP.NET_Documentation">Eiffel for ASP.NET Documentation</a><ul> <li class="expandable "><a href="/doc/solutions/Writing_ASP.NET_pages_in_Eiffel">Writing ASP.NET pages in Eiffel</a><ul> <li><a href="/doc/solutions/Eiffel_for_ASP.NET_Installation">Eiffel for ASP.NET Installation</a></li><li><a href="/doc/solutions/CodeDom-_Getting_Started">CodeDom: Getting Started</a></li><li><a href="/doc/solutions/Using_Eiffel_%28to_write_ASP.NET_pages%29">Using Eiffel (to write ASP.NET pages)</a></li><li><a href="/doc/solutions/Names_Mappings">Names Mappings</a></li></ul></li><li class="expandable "><a href="/doc/solutions/The_Eiffel_CodeDom_Provider">The Eiffel CodeDom Provider</a><ul> <li><a href="/doc/solutions/About_the_Code_Document_Object_Model_%28CodeDom%29">About the Code Document Object Model (CodeDom)</a></li><li><a href="/doc/solutions/Installation">Installation</a></li><li><a href="/doc/solutions/Supported_Constructs">Supported Constructs</a></li><li><a href="/doc/solutions/Configuration">Configuration</a></li><li><a href="/doc/solutions/Logging">Logging</a></li><li><a href="/doc/solutions/Required_Permissions">Required Permissions</a></li><li><a href="/doc/solutions/Common_Scenarios">Common Scenarios</a></li><li><a href="/doc/solutions/Eiffel_Implementation">Eiffel Implementation</a></li><li><a href="/doc/solutions/Limitations">Limitations</a></li></ul></li><li class="expandable "><a href="/doc/solutions/Eiffel_for_ASP.NET_Tools_and_Administration">Eiffel for ASP.NET Tools and Administration</a><ul> <li><a href="/doc/solutions/Eiffel_CodeDom_Provider_Manager">Eiffel CodeDom Provider Manager</a></li><li><a href="/doc/solutions/eSplitter">eSplitter</a></li><li><a href="/doc/solutions/Name_Mapper">Name Mapper</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Basic_computing">Basic computing</a><ul> <li><a href="/doc/solutions/Process_and_BaseProcess">External processes</a></li><li class="expandable "><a href="/doc/solutions/EiffelBase">EiffelBase</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelBase_Tutorial">EiffelBase Tutorial</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelBase%2C_The_Kernel">EiffelBase, The Kernel</a><ul> <li><a href="/doc/solutions/Universal_class_and_its_features">Universal class and its features</a></li><li><a href="/doc/solutions/Language-related_facilities">Language-related facilities</a></li><li><a href="/doc/solutions/Files%2C_input%2C_output">Files, input, output</a></li><li><a href="/doc/solutions/Persistence%2C_storage%2C_and_retrieval">Persistence, storage, and retrieval</a></li><li><a href="/doc/solutions/Access_to_internal_properties">Access to internal properties</a></li></ul></li><li class="expandable "><a href="/doc/solutions/EiffelBase_Data_Structures_Overview">EiffelBase Data Structures Overview</a><ul> <li><a href="/doc/solutions/EiffelBase%2C_Abstract_Container_Structures-_The_Taxonomy">EiffelBase, Abstract Container Structures: The Taxonomy</a></li><li><a href="/doc/solutions/EiffelBase_Data_Structures%2C_Lists">EiffelBase Data Structures, Lists</a></li><li><a href="/doc/solutions/EiffelBase%2C_Dispensers">EiffelBase, Dispensers</a></li><li><a href="/doc/solutions/EiffelBase%2C_Trees">EiffelBase, Trees</a></li><li><a href="/doc/solutions/EiffelBase%2C_Sets">EiffelBase, Sets</a></li><li><a href="/doc/solutions/EiffelBase%2C_Tables">EiffelBase, Tables</a></li><li><a href="/doc/solutions/EiffelBase%2C_Iteration">EiffelBase, Iteration</a></li></ul></li><li><a href="/doc/solutions/EiffelBase_Support_Cluster">EiffelBase Support Cluster</a></li></ul></li><li><a href="/doc/solutions/EiffelBase_Class_Reference">EiffelBase Class Reference</a></li><li class="expandable "><a href="/doc/solutions/EiffelBase_Samples">EiffelBase Samples</a><ul> <li><a href="/doc/solutions/EiffelBase_Sample-_Calculator">EiffelBase Sample: Calculator</a></li></ul></li><li><a href="/doc/solutions/Eiffel_Software_Free_Eiffel_Library_License_%28IFELL%29">Free Eiffel Library License</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Graphics">Graphics</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelBuild">EiffelBuild</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelBuild_How_To%27s">EiffelBuild How To&#39;s</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelBuild-_Starting_a_project">EiffelBuild: Starting a project</a><ul> <li><a href="/doc/solutions/EiffelBuild-_Creating_a_new_project">EiffelBuild: Creating a new project</a></li><li><a href="/doc/solutions/Retrieving_a_project_from_a_Build_project_file">Retrieving a project from a Build project file</a></li></ul></li><li><a href="/doc/solutions/Create_an_object">Create an object</a></li><li><a href="/doc/solutions/Delete_an_object">Delete an object</a></li><li><a href="/doc/solutions/Save_a_project">Save a project</a></li><li><a href="/doc/solutions/Reparent_an_Object">Reparent an Object</a></li><li><a href="/doc/solutions/Import_a_project">Import a project</a></li></ul></li><li class="expandable "><a href="/doc/solutions/EiffelBuild_Reference">EiffelBuild Reference</a><ul> <li><a href="/doc/solutions/EiffelBuild_Notation">EiffelBuild Notation</a></li><li class="expandable "><a href="/doc/solutions/EiffelBuild-_General_interface_description">EiffelBuild: General interface description</a><ul> <li><a href="/doc/solutions/EiffelBuild_window_overview">EiffelBuild window overview</a></li><li><a href="/doc/solutions/Main_toolbar">Main toolbar</a></li><li><a href="/doc/solutions/EiffelBuild-_Key_shortcuts">EiffelBuild: Key shortcuts</a></li><li><a href="/doc/solutions/Docking">Docking</a></li></ul></li><li><a href="/doc/solutions/Layout_constructor">Layout constructor</a></li><li><a href="/doc/solutions/Type_selector">Type selector</a></li><li class="expandable "><a href="/doc/solutions/Object_editor">Object editor</a><ul> <li><a href="/doc/solutions/Merging_radio_button_groups">Merging radio button groups</a></li><li><a href="/doc/solutions/Positioning_table_children">Positioning table children</a></li><li><a href="/doc/solutions/Positioning_fixed_children">Positioning fixed children</a></li></ul></li><li><a href="/doc/solutions/Display_window">Display window</a></li><li><a href="/doc/solutions/Builder_window">Builder window</a></li><li><a href="/doc/solutions/Component_selector">Component selector</a></li><li><a href="/doc/solutions/Widget_selector">Widget selector</a></li><li><a href="/doc/solutions/Component_viewer">Component viewer</a></li><li><a href="/doc/solutions/History">History</a></li><li><a href="/doc/solutions/Constants">Constants</a></li><li class="expandable "><a href="/doc/solutions/EiffelBuild-_Project_settings_window">EiffelBuild: Project settings window</a><ul> <li><a href="/doc/solutions/Build_Tab">Build Tab</a></li><li><a href="/doc/solutions/Generation_Tab">Generation Tab</a></li></ul></li><li><a href="/doc/solutions/EiffelBuild_Preferences">EiffelBuild Preferences</a></li><li><a href="/doc/solutions/EiffelBuild-_Code_Generation">EiffelBuild: Code Generation</a></li></ul></li><li><a href="/doc/solutions/EiffelBuild_Version_History">EiffelBuild Version History</a></li></ul></li><li class="expandable "><a href="/doc/solutions/EiffelVision_2">EiffelVision 2</a><ul> <li><a href="/doc/solutions/EiffelVision_Introduction">EiffelVision Introduction</a></li><li class="expandable "><a href="/doc/solutions/Vison2_-_How-to">How to ...</a><ul> <li><a href="/doc/solutions/How_to_build_a_concurrent_graphical_application-_EiffelVision_with_SCOOP">How to build a concurrent graphical application: EiffelVision with SCOOP</a></li><li><a href="/doc/solutions/Triggering_Pick-and-Drop">Triggering PnD</a></li><li><a href="/doc/solutions/Converting_EiffelVision_2_Systems_to_Void-Safety">Converting EiffelVision 2 Systems to Void-Safety</a></li></ul></li><li class="expandable "><a href="/doc/solutions/EiffelVision_Library_Reference_Manual">EiffelVision Library Reference Manual</a><ul> <li><a href="/doc/solutions/Kernel">Kernel</a></li><li class="expandable "><a href="/doc/solutions/Widgets">Widgets</a><ul> <li><a href="/doc/solutions/Primitives">Primitives</a></li><li><a href="/doc/solutions/Containers">Containers</a></li><li><a href="/doc/solutions/EiffelVision_Dialogs">EiffelVision Dialogs</a></li></ul></li><li><a href="/doc/solutions/Items">Items</a></li><li><a href="/doc/solutions/Events">Events</a></li><li class="expandable "><a href="/doc/solutions/Properties">Properties</a><ul> <li><a href="/doc/solutions/EiffelVision_Pick_and_Drop">EiffelVision Pick and Drop</a></li></ul></li><li><a href="/doc/solutions/Support">Support</a></li><li><a href="/doc/solutions/Figures">Figures</a></li></ul></li><li><a href="/doc/solutions/EiffelVision_2_Class_Reference">EiffelVision 2 Class Reference</a></li><li class="expandable "><a href="/doc/solutions/EiffelVision_2_Samples">EiffelVision 2 Samples</a><ul> <li><a href="/doc/solutions/Widgets_Sample">Widgets Sample</a></li><li><a href="/doc/solutions/Accelerator_Sample">Accelerator Sample</a></li><li><a href="/doc/solutions/Cursor_Sample">Cursor Sample</a></li><li><a href="/doc/solutions/Gauges_Sample">Gauges Sample</a></li><li><a href="/doc/solutions/Standard_dialogs_Sample">Standard_dialogs Sample</a></li><li><a href="/doc/solutions/Viewport_Sample">Viewport Sample</a></li></ul></li><li><a href="/doc/solutions/Revisions_and_Bug_Fixes">Revisions and Bug Fixes</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Dates_and_times">Dates and times</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelTime">EiffelTime</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelTime_Tutorial">EiffelTime Tutorial</a><ul> <li><a href="/doc/solutions/Absolute_time">Absolute time</a></li><li><a href="/doc/solutions/Duration">Duration</a></li><li><a href="/doc/solutions/Interval">Interval</a></li><li><a href="/doc/solutions/DATE_TIME_to_STRING_Conversion">DATE TIME to STRING Conversion</a></li><li><a href="/doc/solutions/More_precision">More precision</a></li></ul></li><li><a href="/doc/solutions/EiffelTime_Class_Reference">EiffelTime Class Reference</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Including_other_languages">With other languages</a><ul> <li class="expandable "><a href="/doc/solutions/Eiffel_%22external%22_mechanism">Eiffel &quot;external&quot; mechanism</a><ul> <li><a href="/doc/solutions/Interfacing_with_C_and_C%2B%2B">Interfacing with C and C++</a></li><li><a href="/doc/solutions/Interfacing_with_DLLs">Interfacing with DLLs</a></li><li class="expandable "><a href="/doc/solutions/Obsolete_%22external%22_interfaces">Obsolete &quot;external&quot; interfaces</a><ul> <li><a href="/doc/solutions/C_externals">C externals</a></li><li><a href="/doc/solutions/C%2B%2B_Externals">C++ Externals</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/CECIL">CECIL</a><ul> <li><a href="/doc/solutions/Compiling_an_Eiffel_system_for_CECIL">Compiling an Eiffel system for CECIL</a></li><li><a href="/doc/solutions/Using_a_CECIL_archive">Using a CECIL archive</a></li><li><a href="/doc/solutions/CECIL_interface_overview">CECIL interface overview</a></li><li class="expandable "><a href="/doc/solutions/CECIL_Reference">CECIL Reference</a><ul> <li><a href="/doc/solutions/attribute_exists">attribute_exists</a></li><li><a href="/doc/solutions/eif_access">eif_access</a></li><li><a href="/doc/solutions/eif_adopt">eif_adopt</a></li><li><a href="/doc/solutions/eif_attribute">eif_attribute</a></li><li><a href="/doc/solutions/eif_attribute_type">eif_attribute_type</a></li><li><a href="/doc/solutions/eif_create">eif_create</a></li><li><a href="/doc/solutions/eif_disable_visible_exception">eif_disable_visible_exception</a></li><li><a href="/doc/solutions/eif_enable_visible_exception">eif_enable_visible_exception</a></li><li><a href="/doc/solutions/eif_name">eif_name</a></li><li><a href="/doc/solutions/eif_name_by_tid">eif_name_by_tid</a></li><li><a href="/doc/solutions/eif_procedure">eif_procedure</a></li><li><a href="/doc/solutions/eif_protect">eif_protect</a></li><li><a href="/doc/solutions/eif_string">eif_string</a></li><li><a href="/doc/solutions/eif_type">eif_type</a></li><li><a href="/doc/solutions/eif_type_by_name">eif_type_by_name</a></li><li><a href="/doc/solutions/eif_type_by_reference">eif_type_by_reference</a></li><li><a href="/doc/solutions/eif_type_id">eif_type_id</a></li><li><a href="/doc/solutions/eif_wean">eif_wean</a></li><li><a href="/doc/solutions/eif_%2A_function">eif_*_function</a></li></ul></li><li class="expandable "><a href="/doc/solutions/CECIL_samples">CECIL samples</a><ul> <li><a href="/doc/solutions/CECIL_-_C_to_Eiffel">CECIL - C to Eiffel</a></li><li><a href="/doc/solutions/CECIL_-_Eiffel_to_C">CECIL - Eiffel to C</a></li><li><a href="/doc/solutions/CECIL_-_Basic_sample">CECIL - Basic sample</a></li><li><a href="/doc/solutions/CECIL_-_Threads">CECIL - Threads</a></li><li><a href="/doc/solutions/CECIL_-_How_to_compile_the_samples%3F">CECIL - How to compile the samples?</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Eiffel2Java">Eiffel2Java</a><ul> <li><a href="/doc/solutions/Eiffel2Java_Tutorial">Eiffel2Java Tutorial</a></li><li><a href="/doc/solutions/Eiffel2Java_class_reference">Eiffel2Java class reference</a></li><li><a href="/doc/solutions/Eiffel2Java_Sample">Eiffel2Java Sample</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Porting_instructions">Porting instructions</a><ul> <li><a href="/doc/solutions/Porting_an_Eiffel_application_from_UNIX_to_Windows_or_vice-versa">Porting an Eiffel application from UNIX to Windows or vice-versa</a></li></ul></li><li class="expandable "><a href="/doc/solutions/Concurrency">Concurrency</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelThreads">EiffelThreads</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelThread_Tutorial">EiffelThread Tutorial</a><ul> <li><a href="/doc/solutions/Thread_library_overview">Thread library overview</a></li><li><a href="/doc/solutions/Compilation_of_multithreaded_systems">Compilation of multithreaded systems</a></li><li><a href="/doc/solutions/Once_features_in_multithreaded_mode">Once features in multithreaded mode</a></li><li><a href="/doc/solutions/Multithread_FAQ">Multithread FAQ</a></li></ul></li><li><a href="/doc/solutions/EiffelThread_Class_Reference">EiffelThread Class Reference</a></li></ul></li><li><a href="/doc/solutions/SCOOP_tutorial">SCOOP Tutorial (hands-on): a small concurrent email system</a></li><li class="expandable "><a href="/doc/solutions/Concurrent_programming_with_SCOOP">SCOOP</a><ul> <li><a href="/doc/solutions/Getting_Started_with_SCOOP">Getting Started</a></li><li><a href="/doc/solutions/Regions_and_Processors">Regions and Processors</a></li><li><a href="/doc/solutions/Separate_Calls">Separate Calls</a></li><li><a href="/doc/solutions/Exclusive_Access">Exclusive Access</a></li><li><a href="/doc/solutions/Design_by_Contract_in_SCOOP">Design by Contract</a></li><li><a href="/doc/solutions/Asynchronous_Calls">Asynchronous Calls</a></li><li><a href="/doc/solutions/Exceptions_in_SCOOP">Exceptions</a></li><li class="expandable "><a href="/doc/solutions/SCOOP_examples">SCOOP examples</a><ul> <li><a href="/doc/solutions/Single-element_producer-consumer">Single-element producer-consumer</a></li><li><a href="/doc/solutions/Counter">Counter</a></li><li><a href="/doc/solutions/Producer-consumer">Producer-consumer</a></li><li><a href="/doc/solutions/Dining_philosophers">Dining philosophers</a></li><li><a href="/doc/solutions/Barbershop">Barbershop</a></li><li><a href="/doc/solutions/Baboon_crossing">Baboon crossing</a></li><li><a href="/doc/solutions/Search-insert-delete">Search-insert-delete</a></li><li><a href="/doc/solutions/Senate_bus">Senate bus</a></li><li><a href="/doc/solutions/Quicksort">Quicksort</a></li><li><a href="/doc/solutions/Dining_savages">Dining savages</a></li><li><a href="/doc/solutions/Faneuil_Hall">Faneuil Hall</a></li><li><a href="/doc/solutions/Observer_pattern">Observer pattern</a></li></ul></li><li><a href="/doc/solutions/SCOOP_implementation">SCOOP implementation</a></li><li><a href="/doc/solutions/SCOOP_papers">papers</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Networking">Networking</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelNet">EiffelNet</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelNet_Tutorial">EiffelNet Tutorial</a><ul> <li><a href="/doc/solutions/What_is_EiffelNet">What is EiffelNet</a></li><li><a href="/doc/solutions/Clients_and_servers">Clients and servers</a></li><li><a href="/doc/solutions/An_overview_of_EiffelNet_Mechanisms">An overview of EiffelNet Mechanisms</a></li><li><a href="/doc/solutions/Introduction_to_the_examples">Introduction to the examples</a></li><li><a href="/doc/solutions/Obtaining_a_finer_degree_of_control">Obtaining a finer degree of control</a></li><li><a href="/doc/solutions/Using_datagram_sockets">Using datagram sockets</a></li><li><a href="/doc/solutions/Event-driven_command_execution">Event-driven command execution</a></li><li><a href="/doc/solutions/A_more_complex_example">A more complex example</a></li><li><a href="/doc/solutions/Bibliography">Bibliography</a></li></ul></li><li><a href="/doc/solutions/EiffelNet_Class_Reference">EiffelNet Class Reference</a></li><li class="expandable "><a href="/doc/solutions/EiffelNet_Samples">EiffelNet Samples</a><ul> <li><a href="/doc/solutions/Advanced">Advanced</a></li><li><a href="/doc/solutions/Polling">Polling</a></li><li><a href="/doc/solutions/Predef">Predef</a></li><li><a href="/doc/solutions/Same_Machine">Same Machine</a></li><li><a href="/doc/solutions/Two_Machines">Two Machines</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Database_access">Database access</a><ul> <li class="expandable "><a href="/doc/solutions/ABEL">ABEL</a><ul> <li class="expandable "><a href="/doc/solutions/Tutorial">Tutorial</a><ul> <li><a href="/doc/solutions/Getting_started">Getting started</a></li><li><a href="/doc/solutions/Basic_operations">Basic operations</a></li><li><a href="/doc/solutions/Advanced_Queries">Advanced Queries</a></li><li><a href="/doc/solutions/Dealing_with_references">Dealing with references</a></li><li><a href="/doc/solutions/Tuple_queries">Tuple queries</a></li><li><a href="/doc/solutions/Error_handling">Error handling</a></li><li><a href="/doc/solutions/Accessing_an_existing_database">Accessing an existing database</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/EiffelStore">EiffelStore</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelStore_Tutorial">EiffelStore Tutorial</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelStore_Interface_Layer">EiffelStore Interface Layer</a><ul> <li><a href="/doc/solutions/Database_Connection">Database Connection</a></li><li><a href="/doc/solutions/Data_Modification">Data Modification</a></li><li><a href="/doc/solutions/Database_Selection">Database Selection</a></li><li><a href="/doc/solutions/Selection_Access">Selection Access</a></li><li><a href="/doc/solutions/Data_Object_Coupling">Data Object Coupling</a></li><li><a href="/doc/solutions/Query_variables">Query variables</a></li><li><a href="/doc/solutions/Stored_Procedures">Stored Procedures</a></li><li><a href="/doc/solutions/Database_control">Database control</a></li></ul></li><li><a href="/doc/solutions/EiffelStore_Implementation_Layer">EiffelStore Implementation Layer</a></li><li class="expandable "><a href="/doc/solutions/EiffelStore_Generation_Cluster">EiffelStore Generation Cluster</a><ul> <li><a href="/doc/solutions/Data_structures_use">Data structures use</a></li><li><a href="/doc/solutions/Data_structures_creation">Data structures creation</a></li></ul></li><li><a href="/doc/solutions/EiffelStore_DataView_Cluster">EiffelStore DataView Cluster</a></li></ul></li><li><a href="/doc/solutions/EiffelStore_Class_Reference">EiffelStore Class Reference</a></li><li class="expandable "><a href="/doc/solutions/EiffelStore_Samples">EiffelStore Samples</a><ul> <li><a href="/doc/solutions/Esql_Sample">Esql Sample</a></li><li><a href="/doc/solutions/Selector_Sample">Selector Sample</a></li><li><a href="/doc/solutions/Inserter_Sample">Inserter Sample</a></li></ul></li><li><a href="/doc/solutions/Defending_against_SQL_injections_with_EiffelStore">SQL injection</a></li><li><a href="/doc/solutions/EiffelStore_ODBC_with_PostgreSQL">EiffelStore ODBC</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Web_technology">Web technology</a><ul> <li><a href="/doc/solutions/EiffelWeb_framework">EiffelWeb</a></li><li class="expandable "><a href="/doc/solutions/Obsolete_EiffelWeb">Obsolete EiffelWeb</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelWeb_Tutorial">EiffelWeb Tutorial</a><ul> <li><a href="/doc/solutions/EiffelWeb_Content_Introduction">EiffelWeb Content Introduction</a></li><li><a href="/doc/solutions/Processing_Requests">Processing Requests</a></li></ul></li><li><a href="/doc/solutions/EiffelWeb_Class_Reference">EiffelWeb Class Reference</a></li><li class="expandable "><a href="/doc/solutions/EiffelWeb_Sample">EiffelWeb Sample</a><ul> <li><a href="/doc/solutions/EiffelWeb_Basic_Sample">EiffelWeb Basic Sample</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Text_processing">Text processing</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelLex">EiffelLex</a><ul> <li><a href="/doc/solutions/EiffelLex_Tutorial">EiffelLex Tutorial</a></li><li><a href="/doc/solutions/EiffelLex_Class_Reference">EiffelLex Class Reference</a></li><li class="expandable "><a href="/doc/solutions/EiffelLex_Sample">EiffelLex Sample</a><ul> <li class="expandable "><a href="/doc/solutions/Eiffel_scanner">Eiffel scanner</a><ul> <li><a href="/doc/solutions/EiffelLex_Samples">EiffelLex Samples</a></li><li><a href="/doc/solutions/EIFFEL_SCAN_Text">EIFFEL_SCAN Text</a></li><li><a href="/doc/solutions/eiffel_scan_console_input">eiffel_scan console input</a></li><li><a href="/doc/solutions/eiffel_scan_console_output">eiffel_scan console output</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/EiffelParse">EiffelParse</a><ul> <li><a href="/doc/solutions/EiffelParse_Tutorial">EiffelParse Tutorial</a></li><li><a href="/doc/solutions/EiffelParse_Class_Reference">EiffelParse Class Reference</a></li><li class="expandable "><a href="/doc/solutions/Parse_Sample">Parse Sample</a><ul> <li><a href="/doc/solutions/Eiffel_polynomial_parser">Eiffel polynomial parser</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Preferences">Preferences</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelPreferences">EiffelPreferences</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelPreferences_Tutorial">EiffelPreferences Tutorial</a><ul> <li><a href="/doc/solutions/Overview">Overview</a></li><li><a href="/doc/solutions/Initialization">Initialization</a></li><li><a href="/doc/solutions/Interface_for_preferences">Interface for preferences</a></li></ul></li><li><a href="/doc/solutions/EiffelPreferences_Class_Reference">EiffelPreferences Class Reference</a></li><li><a href="/doc/solutions/EiffelPreferences_Sample">EiffelPreferences Sample</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/Platform_specifics">Platform specifics</a><ul> <li class="expandable "><a href="/doc/solutions/Microsoft_Windows">Microsoft Windows</a><ul> <li class="expandable "><a href="/doc/solutions/WEL">WEL</a><ul> <li class="expandable "><a href="/doc/solutions/WEL_Common_Concepts">WEL Common Concepts</a><ul> <li><a href="/doc/solutions/Inheriting_WEL_APPLICATION">Inheriting WEL_APPLICATION</a></li><li><a href="/doc/solutions/Redefining_main_window">Redefining main_window</a></li><li><a href="/doc/solutions/Redefining_%60init_application%27">Redefining `init_application&#39;</a></li><li><a href="/doc/solutions/Common_message_hooks">Common message hooks</a></li></ul></li><li class="expandable "><a href="/doc/solutions/WEL_Interface_Content">WEL Interface Content</a><ul> <li><a href="/doc/solutions/windows_cluster">windows cluster</a></li><li class="expandable "><a href="/doc/solutions/controls_cluster">controls cluster</a><ul> <li><a href="/doc/solutions/WEL_CHECKBOX">WEL_CHECKBOX</a></li><li><a href="/doc/solutions/WEL_CHECK_BOX_3_STATE">WEL_CHECK_BOX_3_STATE</a></li><li><a href="/doc/solutions/WEL_GROUP_BOX">WEL_GROUP_BOX</a></li><li><a href="/doc/solutions/WEL_LIST_VIEW">WEL_LIST_VIEW</a></li><li><a href="/doc/solutions/WEL_MULTIPLE_LINE_EDIT">WEL_MULTIPLE_LINE_EDIT</a></li><li><a href="/doc/solutions/WEL_MULTIPLE_SELECTION_LIST_BOX">WEL_MULTIPLE_SELECTION_LIST_BOX</a></li><li><a href="/doc/solutions/WEL_OWNER_DRAW_BUTTON">WEL_OWNER_DRAW_BUTTON</a></li><li><a href="/doc/solutions/WEL_PROGRESS_BAR">WEL_PROGRESS_BAR</a></li><li><a href="/doc/solutions/WEL_PUSH_BUTTON">WEL_PUSH_BUTTON</a></li><li><a href="/doc/solutions/WEL_RADIO_BUTTON">WEL_RADIO_BUTTON</a></li><li><a href="/doc/solutions/WEL_SCROLL_BAR">WEL_SCROLL_BAR</a></li><li><a href="/doc/solutions/WEL_SINGLE_LINE_EDIT">WEL_SINGLE_LINE_EDIT</a></li><li><a href="/doc/solutions/WEL_SINGLE_SELECTION_LIST_BOX">WEL_SINGLE_SELECTION_LIST_BOX</a></li><li><a href="/doc/solutions/WEL_TOOLTIP">WEL_TOOLTIP</a></li><li><a href="/doc/solutions/WEL_TRACK_BAR">WEL_TRACK_BAR</a></li><li><a href="/doc/solutions/WEL_UP_DOWN_CONTROL">WEL_UP_DOWN_CONTROL</a></li></ul></li><li class="expandable "><a href="/doc/solutions/stddlgs_cluster">stddlgs cluster</a><ul> <li><a href="/doc/solutions/WEL_CHOOSE_COLOR_DIALOG">WEL_CHOOSE_COLOR_DIALOG</a></li><li><a href="/doc/solutions/WEL_CHOOSE_FOLDER_DIALOG">WEL_CHOOSE_FOLDER_DIALOG</a></li><li><a href="/doc/solutions/WEL_CHOOSE_FONT_DIALOG">WEL_CHOOSE_FONT_DIALOG</a></li><li><a href="/doc/solutions/WEL_OPEN_FILE_DIALOG">WEL_OPEN_FILE_DIALOG</a></li><li><a href="/doc/solutions/WEL_PRINT_DIALOG">WEL_PRINT_DIALOG</a></li><li><a href="/doc/solutions/WEL_SAVE_FILE_DIALOG">WEL_SAVE_FILE_DIALOG</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/WEL_Tutorial">WEL Tutorial</a><ul> <li><a href="/doc/solutions/Tutorial_Step_1">Tutorial Step 1</a></li><li><a href="/doc/solutions/Tutorial_Step_2">Tutorial Step 2</a></li><li><a href="/doc/solutions/Tutorial_Step_3">Tutorial Step 3</a></li><li><a href="/doc/solutions/Tutorial_Step_4">Tutorial Step 4</a></li><li><a href="/doc/solutions/Tutorial_Step_5">Tutorial Step 5</a></li><li><a href="/doc/solutions/Tutorial_Step_6">Tutorial Step 6</a></li><li><a href="/doc/solutions/Tutorial_Step_7">Tutorial Step 7</a></li><li><a href="/doc/solutions/Tutorial_Step_8">Tutorial Step 8</a></li></ul></li><li><a href="/doc/solutions/WEL_Class_Reference">WEL Class Reference</a></li><li class="expandable "><a href="/doc/solutions/WEL_Samples">WEL Samples</a><ul> <li><a href="/doc/solutions/Bmpview">Bmpview</a></li><li><a href="/doc/solutions/Brushes">Brushes</a></li><li><a href="/doc/solutions/Common_Controls">Common Controls</a></li><li><a href="/doc/solutions/Commands">Commands</a></li><li><a href="/doc/solutions/Controls_Sample">Controls Sample</a></li><li><a href="/doc/solutions/Ctlcolor">Ctlcolor</a></li><li><a href="/doc/solutions/Cursors">Cursors</a></li><li><a href="/doc/solutions/Disk_Space">Disk Space</a></li><li><a href="/doc/solutions/Fontenum">Fontenum</a></li><li><a href="/doc/solutions/Fun">Fun</a></li><li><a href="/doc/solutions/Header_Control">Header Control</a></li><li><a href="/doc/solutions/Hello_World%21">Hello World!</a></li><li><a href="/doc/solutions/List_View">List View</a></li><li><a href="/doc/solutions/Magnify">Magnify</a></li><li><a href="/doc/solutions/MDI_%28Multiple_Document_Interface%29">MDI (Multiple Document Interface)</a></li><li><a href="/doc/solutions/Wel_Sample-_Menus">Wel Sample: Menus</a></li><li><a href="/doc/solutions/Minimal">Minimal</a></li><li><a href="/doc/solutions/Pizza">Pizza</a></li><li><a href="/doc/solutions/Printer">Printer</a></li><li><a href="/doc/solutions/Rich_Edit">Rich Edit</a></li><li><a href="/doc/solutions/Split_Area">Split Area</a></li><li><a href="/doc/solutions/Standard_Dialogs_Sample">Standard Dialogs Sample</a></li><li><a href="/doc/solutions/Timer">Timer</a></li><li><a href="/doc/solutions/Tree_View_Sample">Tree View Sample</a></li><li><a href="/doc/solutions/Unicode_Sample">Unicode Sample</a></li><li><a href="/doc/solutions/Windows_Sample">Windows Sample</a></li><li><a href="/doc/solutions/Xcell">Xcell</a></li><li><a href="/doc/solutions/XY_Co-ordinates">XY Co-ordinates</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/COM">COM</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelCOM_Wizard">EiffelCOM Wizard</a><ul> <li class="expandable "><a href="/doc/solutions/COM_and_Eiffel">COM and Eiffel</a><ul> <li><a href="/doc/solutions/EiffelCOM-_Introduction">EiffelCOM: Introduction</a></li><li><a href="/doc/solutions/COM_Concepts">COM Concepts</a></li><li><a href="/doc/solutions/COM_Interfaces">COM Interfaces</a></li><li><a href="/doc/solutions/Coclass">Coclass</a></li><li><a href="/doc/solutions/The_Component_Location">The Component Location</a></li><li><a href="/doc/solutions/Access_Type">Access Type</a></li><li><a href="/doc/solutions/Deeper_into_COM">Deeper into COM</a></li></ul></li><li><a href="/doc/solutions/EiffelCOM_Wizard_Introduction">EiffelCOM Wizard Introduction</a></li><li class="expandable "><a href="/doc/solutions/EiffelCOM_Wizard_Guided_Tour">EiffelCOM Wizard Guided Tour</a><ul> <li><a href="/doc/solutions/Creating_a_New_COM_Component">Creating a New COM Component</a></li><li><a href="/doc/solutions/Creating_a_new_component_from_an_Eiffel_project">Creating a new component from an Eiffel project</a></li><li><a href="/doc/solutions/Accessing_a_COM_Component">Accessing a COM Component</a></li></ul></li><li class="expandable "><a href="/doc/solutions/EiffelCOM_Wizard_Reference">EiffelCOM Wizard Reference</a><ul> <li><a href="/doc/solutions/How_the_EiffelCOM_Wizard_works">How the EiffelCOM Wizard works</a></li><li><a href="/doc/solutions/Generated_Files">Generated Files</a></li><li><a href="/doc/solutions/Class_Hierarchy">Class Hierarchy</a></li><li><a href="/doc/solutions/Eiffel_Project_Processing">Eiffel Project Processing</a></li><li><a href="/doc/solutions/Reusing_a_COM_Component">Reusing a COM Component</a></li><li><a href="/doc/solutions/Building_a_COM_Component">Building a COM Component</a></li><li><a href="/doc/solutions/Wizards-_Command_Line_Options">Wizards: Command Line Options</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/EiffelCOM_Library">EiffelCOM Library</a><ul> <li class="expandable "><a href="/doc/solutions/EiffelCOM_Interface_Content">EiffelCOM Interface Content</a><ul> <li><a href="/doc/solutions/Interfaces">Interfaces</a></li><li><a href="/doc/solutions/Structures">Structures</a></li></ul></li><li><a href="/doc/solutions/EiffelCOM_Class_Reference">EiffelCOM Class Reference</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/solutions/ResourceBench">ResourceBench</a><ul> <li><a href="/doc/solutions/Features">Features</a></li><li><a href="/doc/solutions/Tour">Tour</a></li><li><a href="/doc/solutions/Troubleshooting">Troubleshooting</a></li></ul></li><li class="expandable "><a href="/doc/solutions/EiffelRibbon">EiffelRibbon</a><ul> <li><a href="/doc/solutions/EiffelRibbon_Design_Tool">EiffelRibbon Design Tool</a></li></ul></li></ul></li></ul></li></ul></li><li><a href="/doc/glossary/Glossary">Glossary</a></li><li><a href="/doc/faq/FAQ">FAQ</a></li><li class="expandable "><a href="/doc/contribute/How_to_contribute">Contribute</a><ul> <li><a href="/doc/contribute/How_to_contribute_to_documentation">To documentation</a></li><li><a href="/doc/contribute/Help_to_edit_documentation">Editing help</a></li></ul></li></ul> </div></div></div></div> </aside> <div class="content"> <header class="head"> <div id="breadcrumb"> <span class="ico"><img src="/theme/responsive-eiffel-org/images/ico-document.png" width="21" height="21" alt="Documentation"></span> <a href="https://www.eiffel.org/doc/eiffelstudio">eiffelstudio</a> :: Producing and Exporting Documentation </div> </header> <div><div class="wdocs-versions">Version<ul><li class="active"><a href="/doc/eiffelstudio/Producing_and_Exporting_Documentation">25.02 (released) ...</a><ul class="popup-menu"><li><a href="/doc/version/trunk/eiffelstudio/Producing_and_Exporting_Documentation">trunk (trunk)</a></li><li class="active"><a href="/doc/eiffelstudio/Producing_and_Exporting_Documentation">25.02 (released)</a></li><li><a href="/doc/version/24.05/eiffelstudio/Producing_and_Exporting_Documentation">24.05</a></li><li><a href="/doc/version/23.09/eiffelstudio/Producing_and_Exporting_Documentation">23.09</a></li><li><a href="/doc/version/22.12/eiffelstudio/Producing_and_Exporting_Documentation">22.12</a></li></ul></li></ul></div> <div class="wikipage"><h1 class="wikititle">Producing and Exporting Documentation</h1> <div class="wiki-toc wiki-toc-auto"> <ol><a id="toc"></a><span class="title">Contents</span> <li><a href="#Documentation_filters">Documentation filters</a></li> <li><a href="#Generating_an_HTML_record_of_your_project">Generating an HTML record of your project</a></li> <li><a href="#Generating_Metatags_from_Note_entries">Generating Metatags from Note entries</a></li> <li><a href="#Choosing_a_level_of_detail">Choosing a level of detail</a></li> <li><a href="#Specifying_cluster_views">Specifying cluster views</a></li> <li><a href="#Generating">Generating</a></li> <li><a href="#Browsing_generated_documentation">Browsing generated documentation</a></li> <li><a href="#Customization">Customization</a></li> </ol> </div> <p>Software development is, most of the time, cooperative work. You must tell the rest of the team what you're up to, and find out what they can offer you. Bring in distributed development -- increasingly common these days, with some people working at headquarters, others at home, others traveling, an offshore team half a world away <span>...</span> -- and the problem becomes even more critical. </p> <p>EiffelStudio provides unique facilities to make such distributed development possible in a safe, effective, harmonious way. Some of the key criteria are: </p> <ul><li> You must be able to export the information easily to the World-Wide Web, the most general and widely available interaction mechanism. </li> <li> The documentation must be <span>faithful</span> to the software. Because of the ever-changing nature of software, this goal is impossible to satisfy unless the documentation is <span>extracted</span> from the software -- as opposed to the traditional approach, still perpetuated by many CASE tools, of treating the two as separate. </li> <li> The task of updating the documentation after a software change must be straightforward and automatic.</li> <li> It's not enough to support HTML; many other formats are useful too.</li> <li> Users must have the ability to adapt the mechanism to support <span>new</span> formats. </li> <li> For existing formats, they must have a way to tune the output easily to any specific style standards, company policies, local variants.</li> </ul> <p>EiffelStudio's documentation generation satisfies all these requirements.</p> <a id="Documentation_filters"></a><h2>Documentation filters</h2> <p>Let's see how documentation works by starting to generate it for our Guided Tour system -- which really means for EiffelBase, since that's what it mostly consists of. The HTML result is available as part of the present documentation (we'll tell you where in just a minute), so you don't have to regenerate it unless you want to. Indeed we'll show you when to click <code class="inline">Cancel</code> if you are happy with the pre-generated version. But let's get started anyway to understand the principles and possibilities. </p> <p>Click the following menu entry, used to generate documentation:<code lang="text"> Project --&gt; Generate documentation...</code></p> <p>This is the next-to-last entry in the <code class="inline">Project</code> menu. The last one, by the way, <code lang=text class="inline">XMI Export</code> <span>...</span>, is directly relevant too: it will make it possible to export information in the standard XML representation for UML, for consumption by third-party products such as Rational Rose. But for the moment we choose the <code class="inline">Documentation</code> entry to start the Eiffel Documentation Wizard. </p> <p>The Wizard starts with a list of available output formats, also called <span>filters</span>: </p> <p><a href="/doc-image/index-37"><img src="/doc-image/eiffelstudio/_images/index-37.png" border="0"/></a></p> <p>The filter names correspond to major documentation formats which EiffelStudio supports by default. Among the most important, listed here in rough order of appearance in the list:</p> <ul><li> <code lang=text class="inline">ASCII</code> : plain text, no formatting codes. </li> <li> <code class="inline">eiffel</code> : essentially the same as ASCII; useful if you want EiffelStudio to pretty-print your class texts and replace the originals, as explained below. </li> <li> <code class="inline">MML</code> : internal format for Adobe FrameMaker. </li> <li> <code class="inline">Postscript</code> : to generate Adobe Postscript output, suitable for printing on a Postscript printer, display on a Postscript previewer such as Ghostscript, or distilling to Adobe PDF. </li> <li> <code class="inline">COM</code> : to generate class specifications in the form of an Interface Description Language (IDL) interface for Microsoft's COM component model. </li> <li> <code class="inline">RTF</code> : Microsoft's Rich Text Format, used in particular for Windows "Help" files. </li> <li> <code class="inline">TeX1</code>, <code class="inline">TeX2</code> : two variants for Donald Knuth's TEX processing format. </li> <li> <code class="inline">troff</code> : if you already know what this is, congratulations (or condolences), you've been around the industry for a while. This is a traditional text-processing format available on Unix systems. Also works for the <span>gtroff</span> variant. </li> <li> <code class="inline">html-classic</code> : HTML, no style sheets. The next variant, <span>with</span> style sheets, is strongly recommended unless your colleagues will be reading your documentation with Mosaic 1, vintage 1993, or Netscape 2, Vintage 1995. </li> <li> <code class="inline">html-stylesheet</code> : HTML with style sheets. This is particularly attractive for Web publishing not only because the output makes full use of style sheet capabilities (fonts, colors, layout, formatting) but also because it becomes trivial to change the look-and-feel to support any style you or your users like, even <span>after</span> generation, simply by editing the style sheet file. </li> </ul> <p>Not only do these predefined filters provide support for a number of important industry formats; better yet, if you want <span>another</span> format not represented on the list, or would like to adapt an existing format to your own style preferences, it's easy to define a new filter. The list that EiffelStudio displays comes from the files with a <code class="inline">.fil</code> extension that it finds in a subdirectory of the installation: <code class="inline">$ISE_EIFFEL/studio/filters</code></p> <p>To define a new filter, simply add a file to this directory. Filters are expressed in a simple notation called EFF ( <span>Eiffel Filter Format</span> ), general enough to support a wide variety of tools for text processing, project management, Web publishing etc. The best way to define a new filter is usually to start from an existing one and adapt it. More on customization <a href="#Customization" class="wiki_link">below</a> . </p> <a id="Generating_an_HTML_record_of_your_project"></a><h2>Generating an HTML record of your project</h2> <p>Let's select the most obviously attractive of the predefined filters: HTML with stylesheets. Click the line <code class="inline">html-stylesheet</code> in the list to make it active, then click <code class="inline">Next</code> at the bottom of the Documentation Wizard window. The next window appears: </p> <p><a href="/doc-image/index-38"><img src="/doc-image/eiffelstudio/_images/index-38.png" border="0"/></a></p> <p>In this pane you select which parts of your system you want to be included in the documentation. By default, all library and cluster names are checked. You should uncheck any that you do not want included. </p> <p>Note that each library or cluster name must be checked or unchecked individually. For example, unchecking "base" will not automatically deselect "elks" and "ise" which appear under "base". </p> <p>For this Tour we'll want to generate everything, including EiffelBase, so make sure that in the end all library and cluster names are checked, as in the figure. Then click <code class="inline">Next</code>. </p> <a id="Generating_Metatags_from_Note_entries"></a><h2>Generating Metatags from Note entries</h2> <p>The next step of the documentation wizard asks you to select Note entries:</p> <p><a href="/doc-image/index-39"><img src="/doc-image/eiffelstudio/_images/index-39.png" border="0"/></a></p> <p>Eiffel classes, as you know, may start with an <code class="inline">note</code> entry that enables class authors to include documentary information in any category they like. It is standard (and part of the official style guidelines) to include at the very least an entry of the form <code class="inline">description:</code> <code class="inline">Descriptive text</code> in every class. The earlier displays of class <code class="inline">LIST</code> showed that entry, which read " <code class="inline">Sequential lists, without commitment to a particular representation</code>". </p> <p>You may have noted that the purpose of Eiffel's <code class="inline">note</code> clauses is, conceptually, similar to that of <strong>metatags</strong> in HTML. Metatags carry information which Web page visitors do not normally see in the browser; this information is available, however, to search engines and other tools that explore and classify Web pages. So it seems quite appropriate to generate metatags from <code class="inline">note</code> entries. </p> <p>The dialog illustrated in the last figure lets you select the entries you wish to transform into metatags. It appears only if you have selected an HTML filter. It lists all the <code class="inline">note</code> tags found anywhere in the system; those that are checked will be retained for metatags. Initially unchecked are three tags ("date", "revision", and "status") conventionally used -- at Eiffel Software and other Eiffel sites -- for interfacing with configuration management tools, and hence of internal interest only. </p> <p>There is no need to change the default selection, so just click <code class="inline">Next</code>. </p> <a id="Choosing_a_level_of_detail"></a><h2>Choosing a level of detail</h2> <p>The next step of the Documentation Wizard lets you specify what kinds of documents you want to generate:</p> <p><a href="/doc-image/index-40"><img src="/doc-image/eiffelstudio/_images/index-40.png" border="0"/></a></p> <p>This is a very important facility since it gives you control over how much you want to publish about the properties of the software:</p> <ul><li> You may want to publish <span>everything</span>, source included, for example on your Intranet for a group of developers working closely together on the same classes, or on the Internet for open-source software. </li> <li> You may want to publish only the <span>interfaces</span> (Contract or Flat-Contract views). This is not necessarily to protect proprietary information; even if you don't care about showing your source code, it is usually too detailed for client programmers, especially in the case of libraries. If various teams work on separate parts of a project, what each releases to the other should usually be the specification, not the implementation. </li> <li> You may of course want to publish <span>both</span> the text and the interface, and let the recipients use the version that best suits their needs for each use. </li> <li> You may want to publish the <span>diagrams</span>, showing the structure in graphical form. Note the warning -- which we are about to ignore -- telling us this may take a while. </li> <li> The class list, cluster list, cluster hierarchy view, cluster chart (following the conventions of BON) are also optional.</li> </ul> <p>The dialog shown on the last figure lets you specify the exact combination you wish. The figure indicates the default options.</p> <p>This time, if we generate anything, we'll generate everything. Please check <strong>all</strong> the boxes (the generation won't occur until the last step) and click <code class="inline">Next</code> to move to the next dialog of the Documentation Wizard. </p> <a id="Specifying_cluster_views"></a><h2>Specifying cluster views</h2> <p>The next dialog only appears when you have asked to generate diagrams:</p> <p><a href="/doc-image/index-41"><img src="/doc-image/eiffelstudio/_images/index-41.png" border="0"/></a></p> <p>Although we didn't use this possibility yet, the Diagram view lets you define different subviews of any cluster. One view might show inheritance only, the other client links only; one might include all classes, the other hide some library classes. The last dialog shown will allow you, for any cluster, to select a subview other than the default for the generated diagram.</p> <p>Here we only have the default view, so just click <code class="inline">Next</code>. </p> <a id="Generating"></a><h2>Generating</h2> <p>The last dialog simply asks you where you want to generate the result:</p> <p><a href="/doc-image/index-42"><img src="/doc-image/eiffelstudio/_images/index-42.png" border="0"/></a></p> <p>By default, as shown, EiffelStudio will produce the documentation in a subdirectory -- created for the occasion, if it doesn't exist yet -- of the project directory:<code>.../your_project_directory/Documentation</code></p> <p>You may, however, select any other location you like. In the case of HTML generation, as here, EiffelStudio takes great care to use only <strong>relative hyperlinks</strong> so that you can move the <code class="inline">Documentation</code> directory around, for use either on a file system or on your Web site, with the guarantee that the hyperlinks will work -- as long as you move the entire directory together. </p> <p>To continue the Guided Tour, you do <strong>not</strong> need to complete the generation now unless you want to. If you are happy to continue without generating the documentation at the moment then click <code class="inline">Cancel</code> on the last dialog. </p> <a id="Browsing_generated_documentation"></a><h2>Browsing generated documentation</h2> <p>Let's take a look at the generated documentation. We start with the root of the generated documentation, <code class="inline">Documentation/index.html</code> : </p> <p><a href="/doc-image/index-43"><img src="/doc-image/eiffelstudio/_images/index-43.png" border="0"/></a></p> <p>This root page shows overall information about the system. The top set of links, repeated at the bottom, enables you to browse the system from its list of classes, its list of clusters, or the cluster hierarchy; note the box labeled <code class="inline">to Go</code>, which provides a built-in search engine, enabling you to type any class list and go directly to the corresponding page. Let's look at the class list: click the box <code class="inline">Classes</code> at the top left. </p> <p><a href="/doc-image/index-44"><img src="/doc-image/eiffelstudio/_images/index-44.png" border="0"/></a></p> <p>This shows the beginning of the list of classes, alphabetically sorted. You could click any class to get the corresponding information, but wait; we'll look at individual classes in a moment. Instead, click <code class="inline">Cluster hierarchy</code> to see the overall organization of the system into clusters: </p> <p><a href="/doc-image/index-45"><img src="/doc-image/eiffelstudio/_images/index-45.png" border="0"/></a></p> <p>Click <code class="inline">BASE</code> to see details of the EiffelBase library where (under EiffelStudio) we had found the class <code class="inline">LIST</code> used as example in the preceding sections: </p> <p><a href="/doc-image/index-46"><img src="/doc-image/eiffelstudio/_images/index-46.png" border="0"/></a></p> <p>This indicates the relations of the cluster to others in the hierarchy, and its list of classes. Again you could click any class name but instead note the link <code class="inline">(diagram)</code> next to the cluster name near the top. Remember that when generating the documentation we elected to generate everything, diagrams included. Hadn't we checked the corresponding check box, the <code class="inline">(diagram)</code> link wouldn't be there. Click it now to get the diagram that has been generated for <code class="inline">BASE</code>: </p> <p><a href="/doc-image/index-47"><img src="/doc-image/eiffelstudio/_images/index-47.png" border="0"/></a> </p> <p>The output is a diagram showing graphically the classes of the cluster and their inheritance relations. All EiffelStudio-generated HTML diagrams use the PNG graphics format ( <span>Portable Network Graphics</span> ), supported by all recent browsers. </p> <p>The class bubbles in a diagram are all hyperlinks. To see the HTML documentation for our old friend the class <code class="inline">LIST</code> you could just click its bubble. But because this diagram includes the whole library and is automatically generated, you'd have to look around a bit for the <code class="inline">LIST</code> bubble. Go ahead and do that if you wish, or just type the class name <code class="inline">LIST</code> into the <code class="inline">Go to</code> field and press return: </p> <p><a href="/doc-image/index-48"><img src="/doc-image/eiffelstudio/_images/index-48.png" border="0"/></a></p> <p>The display shows key information on the class, in a form called the "Chart format" listing the ancestors and then the features, divided into <code class="inline">Queries</code> (shown in part on the figure) and <code class="inline">Commands</code>. Note that all class names and feature names are hyperlinks, which would lead you to the appropriate place in a class text. </p> <p>The top row of hyperlinks now includes class formats corresponding to those we discovered in <a href="/doc/eiffelstudio/Viewing_Classes" class="wiki_link">Viewing Classes</a> in EiffelStudio: <code class="inline">Relations</code> (covering ancestors, descendants, clients, suppliers, ), full <code class="inline">Text</code>, <code class="inline">Contracts</code>, <code class="inline">Flat contracts</code>. Click <code class="inline">Flat contracts</code> to see the full interface of the class: </p> <p><a href="/doc-image/index-49"><img src="/doc-image/eiffelstudio/_images/index-49.png" border="0"/></a></p> <p>We'll stop this brief review here but you may continue browsing through the HTML pages if you like. Note how closely the appearance of the class texts, flat forms, contract forms, diagrams and other forms of documentation matches the corresponding formats under EiffelStudio.</p> <a id="Customization"></a><h2>Customization</h2> <p>As shown above in section <a href="#Documentation_filters" class="wiki_link">Documentation Filters</a> the generation mechanisms can produce a number of output formats. The format definition files have an extension <code class="inline">.fil</code> and are stored in the directory <code class="inline">$ISE_EIFFEL/studio/filters</code></p> <p>Although we suggest staying with the standard, you can easily add or change any definition that doesn't match your own preferences.</p> <p>The format of the filter files is described in <a href="/doc/eiffelstudio/Writing_Documentation_Filters_with_EFF%2C_the_Eiffel_Filter_Format" class="wiki_link wiki_notfound">Writing Documentation Filters with EFF</a> . </p> <p><p class="tpl note-message"><a href="/doc-image/LogoInformation"><img src="/doc-image/25.02/_images/tpl_Information.png" border="0" width="24" alt=""/></a> <strong>Note: </strong>to adapt the presentation format within the EiffelStudio editors, use Tools --&gt; Preferences.</p> </p> </div> <div class="wdocs-nav"><div class="wdocs-nav-section">Back to <a href="/doc/eiffelstudio/EiffelStudio_tutorials" class="wdocs-folder">Tutorials</a></div><div class="wdocs-uuid"><a href="/doc/uuid/ca43a3c2-9e1a-a69f-81cf-55d0b12294ea">Permanent link</a></div> </div> <div class="wdocs-cache-info">cached: 02/26/2025 12:40:28.000 PM</div></div> <div class="roc-comments-ext"> <div id="remark42"></div> <script> var remark_config = { site_id: 'eiffel-org-comments', url: 'https://www.eiffel.org/doc/uuid/ca43a3c2-9e1a-a69f-81cf-55d0b12294ea', // Replace PAGE_URL with your page's canonical URL variable max_shown_comments: 25, // optional param; if it isn't defined default value (15) will be used theme: 'dark', // optional param; if it isn't defined default value ('light') will be used }; (function() { var d = document, s = d.createElement('script'); s.src = 'https://remark.eiffel.org/web/embed.js'; // prepends this address with domain where remark42 is placed (d.head || d.body).appendChild(s); })(); </script> </div> </div> </div> </section> </main> <!-- Footer --> <footer id="footer"> <div class="container"> <nav class="footer-nav"> <ul class="grid-5 has-gutter"> <li class="one-sixth"><a href="https://www.eiffel.org/welcome">Welcome</a> <ul> <li><a href="https://www.eiffel.org/purpose">Purpose</a></li> <li><a href="https://www.eiffel.org/news">News</a></li> <li><a href="https://www.eiffel.org/updates">Updates</a></li> <li><a href="https://www.eiffel.org/forum">Forum</a></li> <li><a href="https://www.eiffel.org/community">Community</a></li> <li><a href="https://www.eiffel.org/contact">Contact</a></li> <li> <a href="/account/roc-login?destination=doc%2Feiffelstudio%2FProducing_and_Exporting_Documentation">Sign in</a> </li> </ul> </li> <li class="one-sixth"><a href="https://www.eiffel.org/documentation">Documentation</a> <ul> <li><a href="https://www.eiffel.org/doc/eiffel">Eiffel</a></li> <li><a href="https://www.eiffel.org/doc/eiffelstudio">EiffelStudio</a></li> <li><a href="https://www.eiffel.org/doc/solutions">Solutions</a></li> <li><a href="https://www.eiffel.org/doc/glossary">Glossary</a></li> <li><a href="https://www.eiffel.org/doc/faqs">FAQs</a></li> <li><a href="https://www.eiffel.org/contribute">Contribute</a></li> </ul> </li> <li class="one-sixth"><a href="https://www.eiffel.org/resources">Resources</a> <ul> <li><a href="https://www.eiffel.org/resources/libraries">Libraries</a></li> <li><a href="https://www.eiffel.org/resources/tools">Tools</a></li> <li><a href="https://www.eiffel.org/resources/wish_list">Wish list</a></li> <li><a href="https://www.eiffel.org/resources/videos">Videos</a></li> <li><a href="https://www.eiffel.org/resources/follow_us">Follow us</a></li> </ul> </li> <li class=""> <div class="btn-holder"> <a class="btn btn-download" href="https://www.eiffel.org/downloads">Download Now</a> <a class="btn btn-tryonline" href="https://www.eiffel.org/try_eiffel">Try Eiffel Online</a> <a class="btn btn-contribute" href="https://www.eiffel.org/contribute">Contribute</a> <a class="btn btn-account" href="/account/roc-login?destination=doc%2Feiffelstudio%2FProducing_and_Exporting_Documentation">Sign in</a> </div> </li> <li class="one-sixth"> <ul class="social-networks"> <li><a class="facebook" target="_blank" href="https://www.facebook.com/pages/Eiffel-Programming-Language/235981463124887">Facebook</a></li> <li><a class="youtube" target="_blank" href="http://www.youtube.com/user/EiffelLanguage">You Tube</a></li> <li><a class="twitter" target="_blank" href="https://twitter.com/Eiffel_Language">Twitter</a></li> </ul> </li> </ul> </nav> <!-- Block "built_with_eiffel" cached: 02/26/2025 7:05:35.000 PM --> <div style="float: right">Built with the Eiffel ROC CMS and the <a href="http://www.eiffelweb.org">EiffelWeb framework</a>.</div> </div> </footer> <script src="/theme/responsive-eiffel-org/js/wdownloads.js"></script> <script src="/theme/responsive-eiffel-org/js/home.js"></script> <link href="/theme/responsive-eiffel-org/js/google-code-prettify-eiffel/styles/lang-eiffel.css" type="text/css" rel="stylesheet" /> <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script> <script src="/theme/responsive-eiffel-org/js/google-code-prettify-eiffel/src/lang-eiffel.js"></script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10