CINXE.COM
Data structures use
<!doctype html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>Data structures use</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/version/23.09/solutions/Data_structures_use" /> <meta property="og:type" content="article" /> <meta property="article:published_time" content="2023-09-25" /> <meta property="article:modified_time" content="2023-09-25" /> <meta property="og:image" content="https://www.eiffel.org/favicon.ico" /> <link rel='canonical' href='https://www.eiffel.org/doc/version/23.09/solutions/Data_structures_use' /> <link rel='shortlink' href='https://www.eiffel.org/doc/version/23.09/solutions/Data_structures_use' /> <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%2Fversion%2F23.09%2Fsolutions%2FData_structures_use">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/version/23.09/eiffel/Eiffel">Eiffel</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffel/Eiffel_Overview">Overview</a><ul> <li><a href="/doc/version/23.09/eiffel/Two-Minute_fact_sheet">Two-Minute fact sheet</a></li><li><a href="/doc/version/23.09/eiffel/Your_next_project_in_Eiffel">Your next project in Eiffel</a></li><li><a href="/doc/version/23.09/eiffel/Learning_Eiffel">Learning Eiffel</a></li><li><a href="/doc/version/23.09/eiffel/Common_myths_and_misconceptions_about_Eiffel">Common myths and misconceptions about Eiffel</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffel/Eiffel_Tutorials">Tutorials</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffel/Invitation_to_Eiffel_%28I2E%29">Invitation to Eiffel</a><ul> <li><a href="/doc/version/23.09/eiffel/I2E-_What_Must_I_Know_First%3F">I2E: What Must I Know First?</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Design_Principles">I2E: Design Principles</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Object-Oriented_Design">I2E: Object-Oriented Design</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Classes">I2E: Classes</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Types">I2E: Types</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Design_by_Contract_and_Assertions">I2E: Design by Contract and Assertions</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Exceptions">I2E: Exceptions</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Event-Driven_Programming_and_Agents">I2E: Event-Driven Programming and Agents</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Genericity">I2E: Genericity</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Inheritance">I2E: Inheritance</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Polymorphism_and_Dynamic_Binding">I2E: Polymorphism and Dynamic Binding</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Combining_Genericity_and_Inheritance">I2E: Combining Genericity and Inheritance</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Deferred_Classes_and_Seamless_Development">I2E: Deferred Classes and Seamless Development</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Putting_a_System_Together">I2E: Putting a System Together</a></li><li><a href="/doc/version/23.09/eiffel/I2E-_Invitation_to_Eiffel_Copyright">I2E: Invitation to Eiffel Copyright</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffel/Mini_How-tos">Mini How-tos</a><ul> <li><a href="/doc/version/23.09/eiffel/Getting_a_STRING_from_a_NUMERIC_object">NUMERIC to STRING</a></li><li><a href="/doc/version/23.09/eiffel/Iterating_on_a_LIST">Iterating on a LIST</a></li><li><a href="/doc/version/23.09/eiffel/Removing_object_while_iterating_on_a_LIST">Removing object while iterating on a LIST</a></li><li><a href="/doc/version/23.09/eiffel/Managing_CTRL%2BC_in_console_application">Managing CTRL+C in console application</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffel/An_Eiffel_Tutorial_%28ET%29">Tutorial</a><ul> <li><a href="/doc/version/23.09/eiffel/ET-_Overview">ET: Overview</a></li><li><a href="/doc/version/23.09/eiffel/ET-_General_Properties">ET: General Properties</a></li><li><a href="/doc/version/23.09/eiffel/ET-_The_Software_Process_in_Eiffel">ET: The Software Process in Eiffel</a></li><li><a href="/doc/version/23.09/eiffel/ET-_Hello_World">ET: Hello World</a></li><li><a href="/doc/version/23.09/eiffel/ET-_The_Static_Picture-_System_Organization">ET: The Static Picture: System Organization</a></li><li><a href="/doc/version/23.09/eiffel/ET-_The_Dynamic_Structure-_Execution_Model">ET: The Dynamic Structure: Execution Model</a></li><li><a href="/doc/version/23.09/eiffel/ET-_Genericity_and_Arrays">ET: Genericity and Arrays</a></li><li><a href="/doc/version/23.09/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/version/23.09/eiffel/ET-_Inheritance">ET: Inheritance</a></li><li><a href="/doc/version/23.09/eiffel/ET-_Instructions">ET: Instructions</a></li><li><a href="/doc/version/23.09/eiffel/ET-_Once_routines_and_shared_objects">ET: Once routines and shared objects</a></li><li><a href="/doc/version/23.09/eiffel/ET-_Other_Mechanisms">ET: Other Mechanisms</a></li><li><a href="/doc/version/23.09/eiffel/ET-_Agents">ET: Agents</a></li><li><a href="/doc/version/23.09/eiffel/ET-_Lexical_Conventions_and_Style_Rules">ET: Lexical Conventions and Style Rules</a></li><li><a href="/doc/version/23.09/eiffel/ET-_To_Learn_More">ET: To Learn More</a></li><li><a href="/doc/version/23.09/eiffel/ET-_Eiffel_Tutorial_Copyright">ET: Eiffel Tutorial Copyright</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffel/Language_reference">Language</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffel/Quick_reference_to_the_Eiffel_programming_language">Quick Reference</a><ul> <li><a href="/doc/version/23.09/eiffel/Eiffel_programming_language_syntax">Syntax</a></li><li class="expandable "><a href="/doc/version/23.09/eiffel/Expressions">Expressions</a><ul> <li><a href="/doc/version/23.09/eiffel/Conditional_expression">Conditional</a></li><li><a href="/doc/version/23.09/eiffel/Manifest_array">Manifest array</a></li></ul></li><li><a href="/doc/version/23.09/eiffel/Types">Types</a></li><li><a href="/doc/version/23.09/eiffel/Eiffel_programming_language_reserved_words">Reserved words</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffel/Void-safe_programming_in_Eiffel">Void-safe programming</a><ul> <li><a href="/doc/version/23.09/eiffel/Void-safety-_Background%2C_definition%2C_and_tools">Background and tools</a></li><li><a href="/doc/version/23.09/eiffel/Creating_a_new_void-safe_project">New void-safe project</a></li><li class="expandable "><a href="/doc/version/23.09/eiffel/Converting_existing_software_to_void-safety">Converting existing software to void-safety</a><ul> <li><a href="/doc/version/23.09/eiffel/Void-safe_changes_to_Eiffel_libraries">Void-safe changes to Eiffel libraries</a></li><li><a href="/doc/version/23.09/eiffel/Mixing_void-safe_and_void-unsafe_software">Mixing void-safe and void-unsafe software</a></li></ul></li><li><a href="/doc/version/23.09/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/version/23.09/eiffel/Technical_papers_about_Eiffel">Papers</a><ul> <li><a href="/doc/version/23.09/eiffel/Eiffel_as_an_expression_language">Eiffel as an expression language</a></li><li><a href="/doc/version/23.09/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/version/23.09/eiffel/Books_about_the_Eiffel_Method_and_Language">Books</a><ul> <li><a href="/doc/version/23.09/eiffel/Touch_of_Class-_Learning_to_Program_Well_with_Objects_and_Contracts">Touch of Class</a></li><li><a href="/doc/version/23.09/eiffel/Object-Oriented_Software_Construction%2C_2nd_Edition">OOSC2</a></li><li><a href="/doc/version/23.09/eiffel/ECMA_Standard_367">ECMA Standard 367</a></li><li><a href="/doc/version/23.09/eiffel/Eiffel-_The_Language">Eiffel: The Language</a></li><li><a href="/doc/version/23.09/eiffel/Reusable_Software-_The_Base_Object-Oriented_Component_Libraries">OO Component Libraries</a></li><li><a href="/doc/version/23.09/eiffel/EiffelStudio-_A_Guided_Tour_-_Eiffel_Software_Technical_Report">EiffelStudio Guided Tour</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffel/Coding_Standards">Coding Standards</a><ul> <li><a href="/doc/version/23.09/eiffel/Eiffel_Code_Comments">Eiffel Code Comments</a></li><li><a href="/doc/version/23.09/eiffel/Eiffel_Coding_Standard">Eiffel Coding Standard</a></li><li><a href="/doc/version/23.09/eiffel/Local_Declaration_Guidelines">Local Declaration Guidelines</a></li><li><a href="/doc/version/23.09/eiffel/Style_Guidelines">Style Guidelines</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffel/Examples">Examples</a><ul> <li><a href="/doc/version/23.09/eiffel/Introduction_to_the_Examples_Book">Introduction to the Examples Book</a></li><li><a href="/doc/version/23.09/eiffel/Example-_Command_line_arguments">Example: Command line arguments</a></li><li><a href="/doc/version/23.09/eiffel/Example-_Environment_variables">Example: Environment variables</a></li><li><a href="/doc/version/23.09/eiffel/Example-_File_IO">Example: File IO</a></li><li><a href="/doc/version/23.09/eiffel/Example-_Polymorphism">Example: Polymorphism</a></li><li><a href="/doc/version/23.09/eiffel/Example-_Reverse_a_string">Example: Reverse a string</a></li><li><a href="/doc/version/23.09/eiffel/Example-_Self-initializing_attributes_and_assigner_commands">Example: Self-initializing attributes and assigner commands</a></li><li><a href="/doc/version/23.09/eiffel/Example-_Sieve_of_Eratosthenes">Example: Sieve of Eratosthenes</a></li><li><a href="/doc/version/23.09/eiffel/Example-_Sleep">Example: Sleep</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio">EiffelStudio</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Getting_started">Getting started</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Setup_and_installation">Setup and installation</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Software_Installation_for_EiffelStudio">Software Installation for EiffelStudio</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/FreeBSD">FreeBSD</a></li><li><a href="/doc/version/23.09/eiffelstudio/HP_OpenVMS">HP OpenVMS</a></li><li><a href="/doc/version/23.09/eiffelstudio/HP_Tru64_UNIX">HP Tru64 UNIX</a></li><li><a href="/doc/version/23.09/eiffelstudio/HP-UX">HP-UX</a></li><li><a href="/doc/version/23.09/eiffelstudio/Linux">Linux</a></li><li><a href="/doc/version/23.09/eiffelstudio/Mac_OS_X">Mac OS X</a></li><li><a href="/doc/version/23.09/eiffelstudio/OpenBSD">OpenBSD</a></li><li><a href="/doc/version/23.09/eiffelstudio/SGI_Irix">SGI Irix</a></li><li><a href="/doc/version/23.09/eiffelstudio/Solaris">Solaris</a></li><li><a href="/doc/version/23.09/eiffelstudio/Windows">Windows</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Third_Party_Tools_Installation_Help">Third Party Tools Installation Help</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Introducing_EiffelStudio">Introducing EiffelStudio</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_tutorials">Tutorials</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Copying_the_Example_Files">Copying the Example Files</a></li><li><a href="/doc/version/23.09/eiffelstudio/Starting_EiffelStudio_and_Opening_a_Project">Starting EiffelStudio and Opening a Project</a></li><li><a href="/doc/version/23.09/eiffelstudio/Compiling_and_Executing_a_System">Compiling and Executing a System</a></li><li><a href="/doc/version/23.09/eiffelstudio/A_Look_at_the_Project_Directory">A Look at the Project Directory</a></li><li><a href="/doc/version/23.09/eiffelstudio/Starting_To_Browse">Starting To Browse</a></li><li><a href="/doc/version/23.09/eiffelstudio/Viewing_Classes">Viewing Classes</a></li><li><a href="/doc/version/23.09/eiffelstudio/Customizing_the_tools_layout_and_toolbars">Customizing the tools layout and toolbars</a></li><li><a href="/doc/version/23.09/eiffelstudio/Producing_and_Exporting_Documentation">Producing and Exporting Documentation</a></li><li><a href="/doc/version/23.09/eiffelstudio/Browsing_Features">Browsing Features</a></li><li><a href="/doc/version/23.09/eiffelstudio/Retargeting_Through_Pick-and-Drop">Retargeting Through Pick-and-Drop</a></li><li><a href="/doc/version/23.09/eiffelstudio/Recompiling_and_Editing">Recompiling and Editing</a></li><li><a href="/doc/version/23.09/eiffelstudio/Handling_Syntax_and_Validity_Errors">Handling Syntax and Validity Errors</a></li><li><a href="/doc/version/23.09/eiffelstudio/Debugging_and_Run-time_Monitoring">Debugging and Run-time Monitoring</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Using_AutoTest">Using AutoTest</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Testing-_Background_and_basics">Testing: Background and basics</a></li><li><a href="/doc/version/23.09/eiffelstudio/Create_a_manual_test">Create a manual test</a></li><li><a href="/doc/version/23.09/eiffelstudio/Execute_tests">Execute tests</a></li><li><a href="/doc/version/23.09/eiffelstudio/Using_extracted_tests">Using extracted tests</a></li><li><a href="/doc/version/23.09/eiffelstudio/Using_generated_tests">Using generated tests</a></li><li><a href="/doc/version/23.09/eiffelstudio/Managing_tests">Managing tests</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Computing_Project_Metrics">Computing Project Metrics</a></li><li><a href="/doc/version/23.09/eiffelstudio/Graphics-based_Design">Graphics-based Design</a></li><li><a href="/doc/version/23.09/eiffelstudio/Using_automatic_class_licensing">Using automatic class licensing</a></li><li><a href="/doc/version/23.09/eiffelstudio/How_EiffelStudio_Compiles">How EiffelStudio Compiles</a></li><li><a href="/doc/version/23.09/eiffelstudio/Technical_papers_about_EiffelStudio">Papers</a></li><li><a href="/doc/version/23.09/eiffelstudio/The_Command-Line_Compiler">The Command-Line Compiler</a></li><li><a href="/doc/version/23.09/eiffelstudio/Executing_a_System_Within_and_Without_EiffelStudio">Executing a System Within and Without EiffelStudio</a></li><li><a href="/doc/version/23.09/eiffelstudio/Writing_Documentation_Filters_with_EFF%2C_the_Eiffel_Filter_Format">Writing Filters with EFF</a></li><li><a href="/doc/version/23.09/eiffelstudio/Manual_identification_and_copyright">Manual identification and copyright</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_Reference">Reference</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_release_notes">Release Notes</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_23.09">23.09</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_22.12">22.12</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_22.12_-_macosx">22.12 - macosx</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_22.05">22.05</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_21.11">21.11</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_20.11">20.11</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_20.05">20.05</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_19.12">19.12</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_19.05">19.05</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_18.11">18.11</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_18.07">18.07</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_18.01">18.01</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_17.05">17.05</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_17.01">17.01</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_16.05">16.05</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_15.12">15.12</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_15.08">15.08</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_15.01">15.01</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_14.05">14.05</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_13.11">13.11</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/7.x">7.x</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_7.3">7.3</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_7.2">7.2</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_7.1">7.1</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_7.0">7.0</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_6_release_notes">6.x</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_6.8">6.8</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_6.7">6.7</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_6.6">6.6</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_6.5">6.5</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_6.4">6.4</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_6.3">6.3</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_6.2">6.2</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_6.1">6.1</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_6.0">6.0</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_5_release_notes">5.x</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_5.7">5.7</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_5.6">5.6</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_5.5">5.5</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_5.4">5.4</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_5.3">5.3</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_5.2">5.2</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_5.1">5.1</a></li><li><a href="/doc/version/23.09/eiffelstudio/Release_notes_for_EiffelStudio_5.0">5.0</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio-_General_interface_description">General Description</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_interface_mechanisms">EiffelStudio interface mechanisms</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Pick-and-drop_mechanism">Pick-and-drop mechanism</a></li><li><a href="/doc/version/23.09/eiffelstudio/Pick-and-drop_shortcut">Pick-and-drop shortcut</a></li><li><a href="/doc/version/23.09/eiffelstudio/Toolbar_customization">Toolbar customization</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_window_overview">EiffelStudio window overview</a></li><li><a href="/doc/version/23.09/eiffelstudio/Main_toolbars">Main toolbars</a></li><li><a href="/doc/version/23.09/eiffelstudio/EiffelStudio-_Key_shortcuts">EiffelStudio: Key shortcuts</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Browsing_tools">Browsing tools</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Address_bars">Address bars</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Main_address_bar">Main address bar</a></li><li><a href="/doc/version/23.09/eiffelstudio/Context_tool_address_bar">Context tool address bar</a></li><li><a href="/doc/version/23.09/eiffelstudio/Change_data_share_mode">Change data share mode</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Groups_tool">Groups tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/System_tree_representation">System tree representation</a></li><li><a href="/doc/version/23.09/eiffelstudio/New_cluster_command">New cluster command</a></li><li><a href="/doc/version/23.09/eiffelstudio/New_class_command">New class command</a></li><li><a href="/doc/version/23.09/eiffelstudio/Locate_command">Locate command</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Features_tool">Features tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Feature_tree">Feature tree</a></li><li><a href="/doc/version/23.09/eiffelstudio/New_feature_command">New feature command</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Favorites_tool">Favorites tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Favorites_tree">Favorites tree</a></li><li><a href="/doc/version/23.09/eiffelstudio/Favorites_menu">Favorites menu</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Organize_Favorites_dialog">Organize Favorites dialog</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/New_favorite_class_command">New favorite class command</a></li><li><a href="/doc/version/23.09/eiffelstudio/Create_favorite_folder_command">Create favorite folder command</a></li><li><a href="/doc/version/23.09/eiffelstudio/Move_to_Folder_command">Move to Folder command</a></li><li><a href="/doc/version/23.09/eiffelstudio/Remove_favorite_command">Remove favorite command</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Windows_tool">Windows tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Window_list">Window list</a></li><li><a href="/doc/version/23.09/eiffelstudio/Window_menu">Window menu</a></li><li><a href="/doc/version/23.09/eiffelstudio/Window_related_commands">Window related commands</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Search_tool">Search tool</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_Editor">Editor</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Cursor_moves">Cursor moves</a></li><li><a href="/doc/version/23.09/eiffelstudio/Selection">Selection</a></li><li><a href="/doc/version/23.09/eiffelstudio/Clipboard_functionality">Clipboard functionality</a></li><li><a href="/doc/version/23.09/eiffelstudio/History_functionality">History functionality</a></li><li><a href="/doc/version/23.09/eiffelstudio/Search_functionality">Search functionality</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Automatic_completion">Automatic completion</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Syntax_auto_complete">Syntax auto complete</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_call_auto_complete">Feature call auto complete</a></li><li><a href="/doc/version/23.09/eiffelstudio/Class_name_auto_complete">Class name auto complete</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Code_Templates">Code Templates</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Operations_on_text_blocks">Operations on text blocks</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Comment_and_uncomment_lines">Comment and uncomment lines</a></li><li><a href="/doc/version/23.09/eiffelstudio/Indent_and_unindent_selection">Indent and unindent selection</a></li><li><a href="/doc/version/23.09/eiffelstudio/Embed_lines_in_%27if_then...end%27_or_in_%27debug...end%27">Embed lines in 'if then...end' or in 'debug...end'</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Edit_menu_commands">Edit menu commands</a></li><li><a href="/doc/version/23.09/eiffelstudio/Editor_customization">Editor customization</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Contract_Editor_tool">Contract Editor tool</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio-_Project_settings_window">Project Settings</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/System_Options">System Options</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/General_Target_Options">General Target Options</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Language_and_Capabilities">Language and Capabilities</a></li><li><a href="/doc/version/23.09/eiffelstudio/Assertion_Options">Assertion Options</a></li><li><a href="/doc/version/23.09/eiffelstudio/Group_Options">Group Options</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Advanced_Options">Advanced Options</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Warning_Options">Warning Options</a></li><li><a href="/doc/version/23.09/eiffelstudio/Debug_Options">Debug Options</a></li><li><a href="/doc/version/23.09/eiffelstudio/Externals_Options">Externals Options</a></li><li><a href="/doc/version/23.09/eiffelstudio/Tasks_Options">Tasks Options</a></li><li><a href="/doc/version/23.09/eiffelstudio/Variables">Variables</a></li><li><a href="/doc/version/23.09/eiffelstudio/Type_mapping">Type mapping</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Compiler">Compiler</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Melting_Ice_Technology">Melting Ice Technology</a></li><li><a href="/doc/version/23.09/eiffelstudio/Supported_C_compilers">Supported C compilers</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Command_line">Command line</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Eiffel_compatibility_options">Eiffel compatibility options</a></li><li><a href="/doc/version/23.09/eiffelstudio/EiffelStudio-_Using_command_line_options">Using command line options</a></li><li><a href="/doc/version/23.09/eiffelstudio/Batch_compilation">Batch compilation</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Command_line_interactive_mode">Command line interactive mode</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Compile_%28and_run%29_menu">Compile (and run) menu</a></li><li><a href="/doc/version/23.09/eiffelstudio/Class_menu">Class menu</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_menu">Feature menu</a></li><li><a href="/doc/version/23.09/eiffelstudio/System_menu">System menu</a></li><li><a href="/doc/version/23.09/eiffelstudio/Testing_menu">Testing menu</a></li><li><a href="/doc/version/23.09/eiffelstudio/Profile_menu">Profile menu</a></li><li><a href="/doc/version/23.09/eiffelstudio/Documentation_menu">Documentation menu</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/finish_freezing_utility">finish_freezing utility</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Dynamic_library_generation">Dynamic library generation</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Dynamic_library_builder">Dynamic library builder</a></li><li><a href="/doc/version/23.09/eiffelstudio/Definition_file">Definition file</a></li><li><a href="/doc/version/23.09/eiffelstudio/Dynamic_library-_Generated_files">Dynamic library: Generated files</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Syntax_level_variant_settings_by_version">Syntax level variant settings by version</a></li><li><a href="/doc/version/23.09/eiffelstudio/Differences_between_standard_ECMA-367_and_Eiffel_Software_implementation">ECMA-367 vs implementation</a></li><li><a href="/doc/version/23.09/eiffelstudio/Differences_between_ETL_2nd_printing_and__Eiffel_Software__implementation">ETL 2nd printing vs implementation</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Compiler_History">Compiler History</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Major_changes_with_ISE_Eiffel_18.01_and_18.07">18.07</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_15.12_and_ISE_Eiffel_16.05">16.05</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_15.08_and_ISE_Eiffel_15.12">15.12</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_15.01_and_ISE_Eiffel_15.08">15.08</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_13.11_and_ISE_Eiffel_14.05">14.05</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_7.3_and_ISE_Eiffel_13.11">13.11</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_7.2_and_ISE_Eiffel_7.3">7.3</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_7.1_and_ISE_Eiffel_7.2">7.2</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_7.0_and_ISE_Eiffel_7.1">7.1</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_6.8_and_ISE_Eiffel_7.0">7.0</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_6_compiler_history">6.x</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_6.7_and_ISE_Eiffel_6.8">6.8</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_6.6_and_ISE_Eiffel_6.7">6.7</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_6.5_and_ISE_Eiffel_6.6">6.6</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_6.4_and_ISE_Eiffel_6.5">6.5</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_6.3_and_ISE_Eiffel_6.4">6.4</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_6.2_and_ISE_Eiffel_6.3">6.3</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_6.1_and_ISE_Eiffel_6.2">6.2</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_6.0_and_ISE_Eiffel_6.1">6.1</a></li><li><a href="/doc/version/23.09/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/version/23.09/eiffelstudio/EiffelStudio_5_compiler_history">5.x</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_5.6_and_ISE_Eiffel_5.7">5.7</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_5.5_and_ISE_Eiffel_5.6">5.6</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_5.4_and_ISE_Eiffel_5.5">5.5</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_5.3_and_ISE_Eiffel_5.4">5..4</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_5.2_and_ISE_Eiffel_5.3">5.3</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_5.1_and_ISE_Eiffel_5.2">5.2</a></li><li><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_5.0_and_ISE_Eiffel_5.1">5.1</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Major_changes_between_ISE_Eiffel_4.5_and_ISE_Eiffel_5.0">5.0</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Assertions_checking_configuration_changes">Assertions checking configuration changes</a></li><li><a href="/doc/version/23.09/eiffelstudio/EiffelThread_differences_from_4.5_to_5.0">EiffelThread differences from 4.5 to 5.0</a></li><li><a href="/doc/version/23.09/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/version/23.09/eiffelstudio/Errors_and_warnings">Errors, warnings</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Legacy_code">Legacy code</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/VD81">VD81</a></li><li><a href="/doc/version/23.09/eiffelstudio/VWMA%281%29">VWMA(1)</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Code_Analyzer">Code Analyzer</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Getting_Started">Getting Started</a></li><li><a href="/doc/version/23.09/eiffelstudio/Running_the_Code_Analyzer">Running the Analyzer</a></li><li><a href="/doc/version/23.09/eiffelstudio/Code_Analyzer-_Interpreting_Results">Interpreting Results</a></li><li><a href="/doc/version/23.09/eiffelstudio/Code_Analyzer-_Customization">Customization</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Code_Analyzer-_Rules">Rules</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/CA001_-_Self_Assignment">CA001</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA002_-_Unused_argument">CA002</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA003_-_Feature_never_called">CA003</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA004_-_Command-Query_Separation">CA004</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA005_-_Useless_object_test_local">CA005</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA006_-_Object_test_typing_not_needed">CA006</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA010_-_High_complexity_of_nested_branches_and_loops">CA010</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA011_-_Too_many_arguments">CA011</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA013_-_Exported_creation_procedure">CA013</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA017_-_Empty_conditional">CA017</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA020_-_Variable_not_read_after_assignment">CA020</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA023_-_Unneeded_parentheses">CA023</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA024_-_Use_across_loop">CA024</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA025_-_Use_semicolons">CA025</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA028_-_Combine_two_if_instructions">CA028</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA032_-_Long_routine_implementation">CA032</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA033_-_Large_class">CA033</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA034_-_High_NPATH_complexity">CA034</a></li><li><a href="/doc/version/23.09/eiffelstudio/CA071_-_Self-comparison">CA071</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Debugger">Debugger</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Execution_commands">Execution commands</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Run_and_stop_at_breakpoints">Run and stop at breakpoints</a></li><li><a href="/doc/version/23.09/eiffelstudio/Run_with_arguments">Run with arguments</a></li><li><a href="/doc/version/23.09/eiffelstudio/Execution_profiles">Execution profiles</a></li><li><a href="/doc/version/23.09/eiffelstudio/Run_without_breakpoints">Run without breakpoints</a></li><li><a href="/doc/version/23.09/eiffelstudio/Run_a_finalized_executable">Run a finalized executable</a></li><li><a href="/doc/version/23.09/eiffelstudio/Step_into_a_feature">Step into a feature</a></li><li><a href="/doc/version/23.09/eiffelstudio/Execute_one_line_at_a_time">Execute one line at a time</a></li><li><a href="/doc/version/23.09/eiffelstudio/Step_out_of_a_feature">Step out of a feature</a></li><li><a href="/doc/version/23.09/eiffelstudio/Pause_an_application">Pause an application</a></li><li><a href="/doc/version/23.09/eiffelstudio/Stop_a_debugged_application">Stop a debugged application</a></li><li><a href="/doc/version/23.09/eiffelstudio/Attach_application">Attach application</a></li><li><a href="/doc/version/23.09/eiffelstudio/Detach_application">Detach application</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Breakpoints">Breakpoints</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Breakpoint_editing">Breakpoint editing</a></li><li><a href="/doc/version/23.09/eiffelstudio/Breakpoint_commands">Breakpoint commands</a></li><li><a href="/doc/version/23.09/eiffelstudio/Breakpoint_information_command">Breakpoint information command</a></li><li><a href="/doc/version/23.09/eiffelstudio/Breakpoint_menu">Breakpoint menu</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Call_stack_tool">Call stack tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Call_stack_tool-_Interface">Call stack tool: Interface</a></li><li><a href="/doc/version/23.09/eiffelstudio/Information_relative_to_a_stack_element">Information relative to a stack element</a></li><li><a href="/doc/version/23.09/eiffelstudio/Supported_exceptions">Supported exceptions</a></li><li><a href="/doc/version/23.09/eiffelstudio/Save_call_stack">Save call stack</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Execution_record_and_replay">Execution record and replay</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Record_execution">Record execution</a></li><li><a href="/doc/version/23.09/eiffelstudio/Replay_%28recorded%29_execution">Replay (recorded) execution</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Object_tool">Object tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Attribute_symbols">Attribute symbols</a></li><li><a href="/doc/version/23.09/eiffelstudio/Debug_output">Debug output</a></li><li><a href="/doc/version/23.09/eiffelstudio/Set_slice_size_command">Set slice size command</a></li><li><a href="/doc/version/23.09/eiffelstudio/Object_Viewer_%28also_known_as_Expanded_display%29">Object Viewer (also known as Expanded display)</a></li><li><a href="/doc/version/23.09/eiffelstudio/Remove_object_command">Remove object command</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Expression_evaluation">Expression evaluation</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Evaluation_tool_or_Watch_tool">Evaluation tool or Watch tool</a></li><li><a href="/doc/version/23.09/eiffelstudio/New_expression_dialog">New expression dialog</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Debuggee%27s_Object_Storage">Debuggee's Object Storage</a></li><li><a href="/doc/version/23.09/eiffelstudio/Threads_tool">Threads tool</a></li><li><a href="/doc/version/23.09/eiffelstudio/Exceptions_handling_tool">Exceptions handling tool</a></li><li><a href="/doc/version/23.09/eiffelstudio/Stack_overflow_prevention">Stack overflow prevention</a></li><li><a href="/doc/version/23.09/eiffelstudio/Debugging_tips_with_the_objects_grid_view">Debugging tips with the objects grid view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Debugging_preferences">Debugging preferences</a></li><li><a href="/doc/version/23.09/eiffelstudio/Command_line_debugger">Command line debugger</a></li><li><a href="/doc/version/23.09/eiffelstudio/Debugging_limitations">Debugging limitations</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Error_List_Tool">Error List Tool</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Diagram_tool">Diagram tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Notation">Notation</a></li><li><a href="/doc/version/23.09/eiffelstudio/Diagram_toolbar">Diagram toolbar</a></li><li><a href="/doc/version/23.09/eiffelstudio/Views">Views</a></li><li><a href="/doc/version/23.09/eiffelstudio/Contexts">Contexts</a></li><li><a href="/doc/version/23.09/eiffelstudio/Diagram_tool-_Code_generation">Diagram tool: Code generation</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Metrics_tool">Metrics tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Requirements">Requirements</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Definitions">Definitions</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Attributes%2C_metrics_and_measures">Attributes, metrics and measures</a></li><li><a href="/doc/version/23.09/eiffelstudio/Units">Units</a></li><li><a href="/doc/version/23.09/eiffelstudio/Metric_framework_and_theory">Metric framework and theory</a></li><li><a href="/doc/version/23.09/eiffelstudio/Elementary_and_composite_metrics">Elementary and composite metrics</a></li><li><a href="/doc/version/23.09/eiffelstudio/Raw_metrics_and_selection_criteria">Raw metrics and selection criteria</a></li><li><a href="/doc/version/23.09/eiffelstudio/Selection_Criteria">Selection Criteria</a></li><li><a href="/doc/version/23.09/eiffelstudio/Predefined_raw_metrics">Predefined raw metrics</a></li><li><a href="/doc/version/23.09/eiffelstudio/Scopes">Scopes</a></li><li><a href="/doc/version/23.09/eiffelstudio/Domains">Domains</a></li><li><a href="/doc/version/23.09/eiffelstudio/Measurement_archive">Measurement archive</a></li><li><a href="/doc/version/23.09/eiffelstudio/Under_the_Hood_-_How_metrics_work">Under the Hood - How metrics work</a></li><li><a href="/doc/version/23.09/eiffelstudio/Criterion_References">Criterion References</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/User_interface_basics">User interface basics</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Metric_Evaluation_Panel">Metric Evaluation Panel</a></li><li><a href="/doc/version/23.09/eiffelstudio/Detailed_Result_Panel">Detailed Result Panel</a></li><li><a href="/doc/version/23.09/eiffelstudio/Metric_Definition_Panel">Metric Definition Panel</a></li><li><a href="/doc/version/23.09/eiffelstudio/Metric_History_Panel">Metric History Panel</a></li><li><a href="/doc/version/23.09/eiffelstudio/Metric_Archive_Panel">Metric Archive Panel</a></li></ul></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Console_tool">Console tool</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Outputs_tool">Outputs tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/General_output_pane">General output pane</a></li><li><a href="/doc/version/23.09/eiffelstudio/External_compilation_pane">External compilation pane</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Eiffel_Information_System">Eiffel Information System</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EIS-_Outgoing">EIS: Outgoing</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Information_Tool">Information Tool</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Browsing_Information">Browsing Information</a></li><li><a href="/doc/version/23.09/eiffelstudio/Change_Analysis">Change Analysis</a></li><li><a href="/doc/version/23.09/eiffelstudio/Annotation_Management">Annotation Management</a></li><li><a href="/doc/version/23.09/eiffelstudio/Protocols">Protocols</a></li><li><a href="/doc/version/23.09/eiffelstudio/Variable_Definition">Variable Definition</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EIS-_Incoming">EIS: Incoming</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Eiffel_Scheme_Syntax">Eiffel Scheme Syntax</a></li><li><a href="/doc/version/23.09/eiffelstudio/EIS_incoming_Examples">EIS incoming Examples</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/AutoTest">AutoTest</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/The_AutoTest_Interface">The AutoTest Interface</a></li><li><a href="/doc/version/23.09/eiffelstudio/The_Eiffel_Test_Wizard">The Eiffel Test Wizard</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Source_Control_Management">Source Control</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Wizards_and_dialogs">Wizards and dialogs</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Profiler_Wizard">Profiler Wizard</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Profiler_wizard_guided_tour">Profiler wizard guided tour</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Select_the_Compilation_mode">Select the Compilation mode</a></li><li><a href="/doc/version/23.09/eiffelstudio/Reuse_or_Generate_an_Execution_Profile">Reuse or Generate an Execution Profile</a></li><li><a href="/doc/version/23.09/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/version/23.09/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/version/23.09/eiffelstudio/Profile_query_window">Profile query window</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Profiler_How_To%27s">Profiler How To's</a><ul> <li><a href="/doc/version/23.09/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/version/23.09/eiffelstudio/Dialogs">Dialogs</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/New_feature_dialog">New feature dialog</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/New_feature_dialog_overview">New feature dialog overview</a></li><li><a href="/doc/version/23.09/eiffelstudio/New_procedure_layout">New procedure layout</a></li><li><a href="/doc/version/23.09/eiffelstudio/New_function_layout">New function layout</a></li><li><a href="/doc/version/23.09/eiffelstudio/New_attribute_layout">New attribute layout</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/New_feature_dialog-_feature_properties_modification">New feature dialog: feature properties modification</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Feature_clauses">Feature clauses</a></li><li><a href="/doc/version/23.09/eiffelstudio/Name_field">Name field</a></li><li><a href="/doc/version/23.09/eiffelstudio/Argument_list">Argument list</a></li><li><a href="/doc/version/23.09/eiffelstudio/Header_comment">Header comment</a></li><li><a href="/doc/version/23.09/eiffelstudio/Precondition">Precondition</a></li><li><a href="/doc/version/23.09/eiffelstudio/Local_variable">Local variable</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_body">Feature body</a></li><li><a href="/doc/version/23.09/eiffelstudio/Postcondition">Postcondition</a></li><li><a href="/doc/version/23.09/eiffelstudio/Type_selection">Type selection</a></li><li><a href="/doc/version/23.09/eiffelstudio/Invariant_field">Invariant field</a></li><li><a href="/doc/version/23.09/eiffelstudio/Set-procedure">Set-procedure</a></li></ul></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Error_wizard">Error wizard</a></li><li><a href="/doc/version/23.09/eiffelstudio/External_commands_editor_dialog">External commands editor dialog</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_Preferences">EiffelStudio Preferences</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Preference_window_overview">Preference window overview</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Preferences_Reference">Preferences Reference</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/General_Preferences">General Preferences</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Interface">Interface</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Development_Window_Preferences">Development Window Preferences</a></li><li><a href="/doc/version/23.09/eiffelstudio/Discardable_dialogs">Discardable dialogs</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_Tools_Preferences">EiffelStudio Tools Preferences</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Context_Tools">Context Tools</a></li><li><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_Diagram_Tool_Preferences">EiffelStudio Diagram Tool Preferences</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Editor_Preferences">Editor Preferences</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/General_Editor_Preferences">General Editor Preferences</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Eiffel_Editor_Preferences">Eiffel Editor Preferences</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Syntax_automatic_completion_preferences">Syntax automatic completion preferences</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Keywords_automatic_completion_preferences">Keywords automatic completion preferences</a></li><li><a href="/doc/version/23.09/eiffelstudio/Keyword_completion_customization">Keyword completion customization</a></li><li><a href="/doc/version/23.09/eiffelstudio/Default_values_for_keyword_completion_preferences">Default values for keyword completion preferences</a></li></ul></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Keyboard_shortcuts_preferences">Keyboard shortcuts preferences</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Debugger_Preferences">Debugger Preferences</a></li><li><a href="/doc/version/23.09/eiffelstudio/Recent_Project_Preferences">Recent Project Preferences</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Formatted_information_about_compiled_classes_and_features">Formatted information about compiled classes and features</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Class_views">Class views</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Class_formatters-_Basic_text_view">Class formatters: Basic text view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Clickable_view">Clickable view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Class_formatters-_Flat_view">Class formatters: Flat view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Contract_view">Contract view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Flat_Contract_view">Flat Contract view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Ancestors">Ancestors</a></li><li><a href="/doc/version/23.09/eiffelstudio/Descendants">Descendants</a></li><li><a href="/doc/version/23.09/eiffelstudio/Clients">Clients</a></li><li><a href="/doc/version/23.09/eiffelstudio/Suppliers">Suppliers</a></li><li><a href="/doc/version/23.09/eiffelstudio/Attributes">Attributes</a></li><li><a href="/doc/version/23.09/eiffelstudio/Routines">Routines</a></li><li><a href="/doc/version/23.09/eiffelstudio/Invariants">Invariants</a></li><li><a href="/doc/version/23.09/eiffelstudio/Creators">Creators</a></li><li><a href="/doc/version/23.09/eiffelstudio/Deferred_features">Deferred features</a></li><li><a href="/doc/version/23.09/eiffelstudio/Once_routines_and_constants">Once routines and constants</a></li><li><a href="/doc/version/23.09/eiffelstudio/Class_formatters-_External_features">Class formatters: External features</a></li><li><a href="/doc/version/23.09/eiffelstudio/Exported_features">Exported features</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Feature_views">Feature views</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Basic_text_view">Feature formatters: Basic text view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Flat_view">Feature formatters: Flat view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Callers">Feature formatters: Callers</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Assigners">Feature formatters: Assigners</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Creators">Feature formatters: Creators</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Callees">Feature formatters: Callees</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Assignees">Feature formatters: Assignees</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Creations">Feature formatters: Creations</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Implementers">Feature formatters: Implementers</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Ancestor_versions">Feature formatters: Ancestor versions</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Descendant_versions">Feature formatters: Descendant versions</a></li><li><a href="/doc/version/23.09/eiffelstudio/Feature_formatters-_Homonyms">Feature formatters: Homonyms</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio_How_To%27s">EiffelStudio How To's</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/EiffelStudio-_Starting_a_project">EiffelStudio: Starting a project</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/EiffelStudio-_Creating_a_new_project">EiffelStudio: Creating a new project</a></li><li><a href="/doc/version/23.09/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/version/23.09/eiffelstudio/Browsing">Browsing</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Searching">Searching</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Looking_for_a_cluster">Looking for a cluster</a></li><li><a href="/doc/version/23.09/eiffelstudio/Looking_for_a_class">Looking for a class</a></li><li><a href="/doc/version/23.09/eiffelstudio/Looking_for_a_feature">Looking for a feature</a></li><li><a href="/doc/version/23.09/eiffelstudio/Looking_for_an_expression_in_text">Looking for an expression in text</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Viewing_information_about_a_component">Viewing information about a component</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Centering_tools_on_a_component">Centering tools on a component</a></li><li><a href="/doc/version/23.09/eiffelstudio/Viewing_information_about_a_cluster">Viewing information about a cluster</a></li><li><a href="/doc/version/23.09/eiffelstudio/Viewing_information_about_a_class">Viewing information about a class</a></li><li><a href="/doc/version/23.09/eiffelstudio/Viewing_information_about_a_feature">Viewing information about a feature</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Opening_new_windows">Opening new windows</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Editing_a_project">Editing a project</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Adding_a_cluster">Adding a cluster</a></li><li><a href="/doc/version/23.09/eiffelstudio/Adding_a_library">Adding a library</a></li><li><a href="/doc/version/23.09/eiffelstudio/Adding_a_class">Adding a class</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Adding_a_feature">Adding a feature</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Opening_the_new_feature_dialog">Opening the new feature dialog</a></li><li><a href="/doc/version/23.09/eiffelstudio/Adding_a_procedure">Adding a procedure</a></li><li><a href="/doc/version/23.09/eiffelstudio/Adding_a_function">Adding a function</a></li><li><a href="/doc/version/23.09/eiffelstudio/Adding_an_attribute">Adding an attribute</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Removing_a_cluster">Removing a cluster</a></li><li><a href="/doc/version/23.09/eiffelstudio/Removing_a_class">Removing a class</a></li><li><a href="/doc/version/23.09/eiffelstudio/Removing_a_feature">Removing a feature</a></li><li><a href="/doc/version/23.09/eiffelstudio/Moving_a_class">Moving a class</a></li><li><a href="/doc/version/23.09/eiffelstudio/Changing_project_parameters">Changing project parameters</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Compiling">Compiling</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Generating_executables">Generating executables</a></li><li><a href="/doc/version/23.09/eiffelstudio/Generating_libraries">Generating libraries</a></li><li><a href="/doc/version/23.09/eiffelstudio/Setting_the_assertion_level">Setting the assertion level</a></li><li><a href="/doc/version/23.09/eiffelstudio/Setting_the_syntax_variant">Setting the syntax variant</a></li><li><a href="/doc/version/23.09/eiffelstudio/Enabling_the_profiler">Enabling the profiler</a></li><li><a href="/doc/version/23.09/eiffelstudio/Using_libraries">Using libraries</a></li><li><a href="/doc/version/23.09/eiffelstudio/Tuning_a_program">Tuning a program</a></li><li><a href="/doc/version/23.09/eiffelstudio/Using_threads">Using threads</a></li><li><a href="/doc/version/23.09/eiffelstudio/Clean_compile">Clean compile</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Running_and_debugging">Running and debugging</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Running_an_application">Running an application</a></li><li><a href="/doc/version/23.09/eiffelstudio/Interrupting_an_application">Interrupting an application</a></li><li><a href="/doc/version/23.09/eiffelstudio/Exploring_an_application_dynamic_state">Exploring an application dynamic state</a></li><li><a href="/doc/version/23.09/eiffelstudio/Using_breakpoints">Using breakpoints</a></li><li><a href="/doc/version/23.09/eiffelstudio/Handling_exceptions">Handling exceptions</a></li><li><a href="/doc/version/23.09/eiffelstudio/Using_debug_clauses">Using debug clauses</a></li><li><a href="/doc/version/23.09/eiffelstudio/Setting_the_command_line_arguments">Setting the command line arguments</a></li><li><a href="/doc/version/23.09/eiffelstudio/Profiling">Profiling</a></li><li><a href="/doc/version/23.09/eiffelstudio/Tracing">Tracing</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Designing_a_project">Designing a project</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Switching_to_the_diagram_tool">Switching to the diagram tool</a></li><li><a href="/doc/version/23.09/eiffelstudio/Undoing_and_redoing">Undoing and redoing</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Altering_the_system">Altering the system</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Creating_a_new_class">Creating a new class</a></li><li><a href="/doc/version/23.09/eiffelstudio/Creating_a_new_feature">Creating a new feature</a></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Refactoring">Refactoring</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Rename_Class">Rename Class</a></li><li><a href="/doc/version/23.09/eiffelstudio/Rename_Feature">Rename Feature</a></li><li><a href="/doc/version/23.09/eiffelstudio/Pull_up_Feature">Pull up Feature</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Deleting_items">Deleting items</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Managing_links">Managing links</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Creating_inheritance_links">Creating inheritance links</a></li><li><a href="/doc/version/23.09/eiffelstudio/Creating_client-supplier_links">Creating client-supplier links</a></li><li><a href="/doc/version/23.09/eiffelstudio/Creating_aggregate_client-supplier_links">Creating aggregate client-supplier links</a></li><li><a href="/doc/version/23.09/eiffelstudio/Using_the_link_tool">Using the link tool</a></li><li><a href="/doc/version/23.09/eiffelstudio/Creating_handles">Creating handles</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Modifying_the_display">Modifying the display</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Showing_or_hiding_links_and_labels">Showing or hiding links and labels</a></li><li><a href="/doc/version/23.09/eiffelstudio/Changing_system_exploration_depth">Changing system exploration depth</a></li><li><a href="/doc/version/23.09/eiffelstudio/Removing_items_from_a_view">Removing items from a view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Changing_colors_of_classes">Changing colors of classes</a></li><li><a href="/doc/version/23.09/eiffelstudio/Zooming_a_diagram">Zooming a diagram</a></li><li><a href="/doc/version/23.09/eiffelstudio/Retrieving_all_classes_into_a_cluster">Retrieving all classes into a cluster</a></li><li><a href="/doc/version/23.09/eiffelstudio/Iconifying_and_restoring_a_cluster">Iconifying and restoring a cluster</a></li><li><a href="/doc/version/23.09/eiffelstudio/Change_the_Display_Quality">Change the Display Quality</a></li><li><a href="/doc/version/23.09/eiffelstudio/Turn_on_Physics_Mode">Turn on Physics Mode</a></li><li><a href="/doc/version/23.09/eiffelstudio/Switching_between_BON_and_UML_View">Switching between BON and UML View</a></li><li><a href="/doc/version/23.09/eiffelstudio/Anchoring">Anchoring</a></li><li><a href="/doc/version/23.09/eiffelstudio/Adjusting_Physics_Settings">Adjusting Physics Settings</a></li><li><a href="/doc/version/23.09/eiffelstudio/Using_the_Cluster_Legend">Using the Cluster Legend</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Managing_views">Managing views</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Adding_a_view">Adding a view</a></li><li><a href="/doc/version/23.09/eiffelstudio/Deleting_a_view">Deleting a view</a></li></ul></li><li><a href="/doc/version/23.09/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/version/23.09/eiffelstudio/How_to_analyze_a_project">How to analyze a project</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Computing_a_measure">Computing a measure</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Evaluating_a_measure">Evaluating a measure</a></li><li><a href="/doc/version/23.09/eiffelstudio/Saving_a_measure">Saving a measure</a></li><li><a href="/doc/version/23.09/eiffelstudio/Viewing_measure_details">Viewing measure details</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Handling_new_metrics">Handling new metrics</a><ul> <li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Defining_new_metrics">Defining new metrics</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Defining_derived_metrics">Defining derived metrics</a></li><li><a href="/doc/version/23.09/eiffelstudio/Defining_linear_metrics">Defining linear metrics</a></li><li><a href="/doc/version/23.09/eiffelstudio/Defining_ratio_metrics">Defining ratio metrics</a></li></ul></li><li><a href="/doc/version/23.09/eiffelstudio/Managing_new_metrics">Managing new metrics</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Handling_archives">Handling archives</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Creating_an_archive">Creating an archive</a></li><li><a href="/doc/version/23.09/eiffelstudio/Comparing_to_an_archive">Comparing to an archive</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Generating_documentation">Generating documentation</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Generating_multi-format_documentation">Generating multi-format documentation</a></li><li><a href="/doc/version/23.09/eiffelstudio/Generating_XMI_documentation">Generating XMI documentation</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/eiffelstudio/Customizing_EiffelStudio">Customizing EiffelStudio</a><ul> <li><a href="/doc/version/23.09/eiffelstudio/Setting_the_editor_behavior">Setting the editor behavior</a></li><li><a href="/doc/version/23.09/eiffelstudio/Changing_texts_display">Changing texts display</a></li><li><a href="/doc/version/23.09/eiffelstudio/Customizing_toolbars">Customizing toolbars</a></li><li><a href="/doc/version/23.09/eiffelstudio/Making_the_context_tool_independent_from_the_editor">Making the context tool independent from the editor</a></li><li><a href="/doc/version/23.09/eiffelstudio/Changing_the_default_history_size">Changing the default history size</a></li><li><a href="/doc/version/23.09/eiffelstudio/Choosing_classes_to_be_ignored_in_BON_diagrams">Choosing classes to be ignored in BON diagrams</a></li><li><a href="/doc/version/23.09/eiffelstudio/Customizing_class_text_views">Customizing class text views</a></li><li><a href="/doc/version/23.09/eiffelstudio/Configuring_an_external_editor">Configuring an external editor</a></li><li><a href="/doc/version/23.09/eiffelstudio/Customizing_EiffelStudio_for_Subversion_commands">Customizing EiffelStudio for Subversion commands</a></li></ul></li></ul></li></ul></li><li class="expandable expanded "><a href="/doc/version/23.09/solutions/Solutions_and_Libraries">Solutions and Libraries</a><ul> <li><a href="/doc/version/23.09/solutions/IRON-_Eiffel_package_repository">IRON Eiffel repository</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/.NET">.NET</a><ul> <li><a href="/doc/version/23.09/solutions/.NET_Installation_instructions">.NET Installation instructions</a></li><li><a href="/doc/version/23.09/solutions/Building_a_.NET_application">Building a .NET application</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/The_Eiffel_for_.NET_language">The Eiffel for .NET language</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/Conventions">Conventions</a><ul> <li><a href="/doc/version/23.09/solutions/Eiffel_for_.NET_Terminology">Eiffel for .NET Terminology</a></li><li><a href="/doc/version/23.09/solutions/Eiffel_Class_and_Feature_Names">Eiffel Class and Feature Names</a></li><li><a href="/doc/version/23.09/solutions/Type_Organization">Type Organization</a></li><li><a href="/doc/version/23.09/solutions/Constructors_and_Creation_Procedures">Constructors and Creation Procedures</a></li><li><a href="/doc/version/23.09/solutions/Similar_Types_Occurring_in_Both_Libraries">Similar Types Occurring in Both Libraries</a></li><li><a href="/doc/version/23.09/solutions/Eiffel_reserved_words">Eiffel reserved words</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Eiffel_for_.NET">Eiffel for .NET</a><ul> <li><a href="/doc/version/23.09/solutions/Eiffel_Classes">Eiffel Classes</a></li><li><a href="/doc/version/23.09/solutions/Adding_Class_Features">Adding Class Features</a></li><li><a href="/doc/version/23.09/solutions/Inheritance">Inheritance</a></li><li><a href="/doc/version/23.09/solutions/Genericity">Genericity</a></li><li><a href="/doc/version/23.09/solutions/Design_by_Contract_and_Assertions">Design by Contract and Assertions</a></li><li><a href="/doc/version/23.09/solutions/Exception_Mechanism">Exception Mechanism</a></li><li><a href="/doc/version/23.09/solutions/Event_Programming_with_Agents">Event Programming with Agents</a></li><li><a href="/doc/version/23.09/solutions/Using_Referenced_Assemblies">Using Referenced Assemblies</a></li><li><a href="/doc/version/23.09/solutions/Eiffel_for_.NET_Compliance">Eiffel for .NET Compliance</a></li><li><a href="/doc/version/23.09/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/version/23.09/solutions/Eiffel_for_.NET_Integration">Eiffel for .NET Integration</a><ul> <li><a href="/doc/version/23.09/solutions/Workaround_Eiffel_.NET_limitations">Workarounds</a></li><li><a href="/doc/version/23.09/solutions/Eiffel_.NETCore_execution">NETCore execution</a></li></ul></li><li><a href="/doc/version/23.09/solutions/Known_issues">Known issues</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Eiffel_.NET_samples">Eiffel .NET samples</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/ADO_.NET_Samples">ADO .NET Samples</a><ul> <li><a href="/doc/version/23.09/solutions/ADO.NET_Sample">ADO.NET Sample</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Console_Samples">Console Samples</a><ul> <li><a href="/doc/version/23.09/solutions/Calculator-_console">Calculator: console</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Threads_Samples">Threads Samples</a><ul> <li><a href="/doc/version/23.09/solutions/Pools">Pools</a></li><li><a href="/doc/version/23.09/solutions/Timers">Timers</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Winform_Samples">Winform Samples</a><ul> <li><a href="/doc/version/23.09/solutions/Simple_Hello_world_form_sample">Simple Hello world form sample</a></li><li><a href="/doc/version/23.09/solutions/Message_Box">Message Box</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/Menus">Menus</a><ul> <li><a href="/doc/version/23.09/solutions/Menu_Details">Menu Details</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/MDI">MDI</a><ul> <li><a href="/doc/version/23.09/solutions/MDI_Details">MDI Details</a></li></ul></li><li><a href="/doc/version/23.09/solutions/Calculator-_winform">Calculator: winform</a></li><li><a href="/doc/version/23.09/solutions/GDI_plus_-_text">GDI plus - text</a></li><li><a href="/doc/version/23.09/solutions/Date_Time_Picker">Date Time Picker</a></li><li><a href="/doc/version/23.09/solutions/Progress_bar_sample">Progress bar sample</a></li><li><a href="/doc/version/23.09/solutions/Simple_data_binding">Simple data binding</a></li><li><a href="/doc/version/23.09/solutions/Tree_view">Tree view</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Eiffel_for_ASP.NET_Documentation">Eiffel for ASP.NET Documentation</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/Writing_ASP.NET_pages_in_Eiffel">Writing ASP.NET pages in Eiffel</a><ul> <li><a href="/doc/version/23.09/solutions/Eiffel_for_ASP.NET_Installation">Eiffel for ASP.NET Installation</a></li><li><a href="/doc/version/23.09/solutions/CodeDom-_Getting_Started">CodeDom: Getting Started</a></li><li><a href="/doc/version/23.09/solutions/Using_Eiffel_%28to_write_ASP.NET_pages%29">Using Eiffel (to write ASP.NET pages)</a></li><li><a href="/doc/version/23.09/solutions/Names_Mappings">Names Mappings</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/The_Eiffel_CodeDom_Provider">The Eiffel CodeDom Provider</a><ul> <li><a href="/doc/version/23.09/solutions/About_the_Code_Document_Object_Model_%28CodeDom%29">About the Code Document Object Model (CodeDom)</a></li><li><a href="/doc/version/23.09/solutions/Installation">Installation</a></li><li><a href="/doc/version/23.09/solutions/Supported_Constructs">Supported Constructs</a></li><li><a href="/doc/version/23.09/solutions/Configuration">Configuration</a></li><li><a href="/doc/version/23.09/solutions/Logging">Logging</a></li><li><a href="/doc/version/23.09/solutions/Required_Permissions">Required Permissions</a></li><li><a href="/doc/version/23.09/solutions/Common_Scenarios">Common Scenarios</a></li><li><a href="/doc/version/23.09/solutions/Eiffel_Implementation">Eiffel Implementation</a></li><li><a href="/doc/version/23.09/solutions/Limitations">Limitations</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Eiffel_for_ASP.NET_Tools_and_Administration">Eiffel for ASP.NET Tools and Administration</a><ul> <li><a href="/doc/version/23.09/solutions/Eiffel_CodeDom_Provider_Manager">Eiffel CodeDom Provider Manager</a></li><li><a href="/doc/version/23.09/solutions/eSplitter">eSplitter</a></li><li><a href="/doc/version/23.09/solutions/Name_Mapper">Name Mapper</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Basic_computing">Basic computing</a><ul> <li><a href="/doc/version/23.09/solutions/Process_and_BaseProcess">External processes</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBase">EiffelBase</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBase_Tutorial">EiffelBase Tutorial</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBase%2C_The_Kernel">EiffelBase, The Kernel</a><ul> <li><a href="/doc/version/23.09/solutions/Universal_class_and_its_features">Universal class and its features</a></li><li><a href="/doc/version/23.09/solutions/Language-related_facilities">Language-related facilities</a></li><li><a href="/doc/version/23.09/solutions/Files%2C_input%2C_output">Files, input, output</a></li><li><a href="/doc/version/23.09/solutions/Persistence%2C_storage%2C_and_retrieval">Persistence, storage, and retrieval</a></li><li><a href="/doc/version/23.09/solutions/Access_to_internal_properties">Access to internal properties</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBase_Data_Structures_Overview">EiffelBase Data Structures Overview</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelBase%2C_Abstract_Container_Structures-_The_Taxonomy">EiffelBase, Abstract Container Structures: The Taxonomy</a></li><li><a href="/doc/version/23.09/solutions/EiffelBase_Data_Structures%2C_Lists">EiffelBase Data Structures, Lists</a></li><li><a href="/doc/version/23.09/solutions/EiffelBase%2C_Dispensers">EiffelBase, Dispensers</a></li><li><a href="/doc/version/23.09/solutions/EiffelBase%2C_Trees">EiffelBase, Trees</a></li><li><a href="/doc/version/23.09/solutions/EiffelBase%2C_Sets">EiffelBase, Sets</a></li><li><a href="/doc/version/23.09/solutions/EiffelBase%2C_Tables">EiffelBase, Tables</a></li><li><a href="/doc/version/23.09/solutions/EiffelBase%2C_Iteration">EiffelBase, Iteration</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelBase_Support_Cluster">EiffelBase Support Cluster</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelBase_Class_Reference">EiffelBase Class Reference</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBase_Samples">EiffelBase Samples</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelBase_Sample-_Calculator">EiffelBase Sample: Calculator</a></li></ul></li><li><a href="/doc/version/23.09/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/version/23.09/solutions/Graphics">Graphics</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBuild">EiffelBuild</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBuild_How_To%27s">EiffelBuild How To's</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBuild-_Starting_a_project">EiffelBuild: Starting a project</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelBuild-_Creating_a_new_project">EiffelBuild: Creating a new project</a></li><li><a href="/doc/version/23.09/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/version/23.09/solutions/Create_an_object">Create an object</a></li><li><a href="/doc/version/23.09/solutions/Delete_an_object">Delete an object</a></li><li><a href="/doc/version/23.09/solutions/Save_a_project">Save a project</a></li><li><a href="/doc/version/23.09/solutions/Reparent_an_Object">Reparent an Object</a></li><li><a href="/doc/version/23.09/solutions/Import_a_project">Import a project</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBuild_Reference">EiffelBuild Reference</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelBuild_Notation">EiffelBuild Notation</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBuild-_General_interface_description">EiffelBuild: General interface description</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelBuild_window_overview">EiffelBuild window overview</a></li><li><a href="/doc/version/23.09/solutions/Main_toolbar">Main toolbar</a></li><li><a href="/doc/version/23.09/solutions/EiffelBuild-_Key_shortcuts">EiffelBuild: Key shortcuts</a></li><li><a href="/doc/version/23.09/solutions/Docking">Docking</a></li></ul></li><li><a href="/doc/version/23.09/solutions/Layout_constructor">Layout constructor</a></li><li><a href="/doc/version/23.09/solutions/Type_selector">Type selector</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/Object_editor">Object editor</a><ul> <li><a href="/doc/version/23.09/solutions/Merging_radio_button_groups">Merging radio button groups</a></li><li><a href="/doc/version/23.09/solutions/Positioning_table_children">Positioning table children</a></li><li><a href="/doc/version/23.09/solutions/Positioning_fixed_children">Positioning fixed children</a></li></ul></li><li><a href="/doc/version/23.09/solutions/Display_window">Display window</a></li><li><a href="/doc/version/23.09/solutions/Builder_window">Builder window</a></li><li><a href="/doc/version/23.09/solutions/Component_selector">Component selector</a></li><li><a href="/doc/version/23.09/solutions/Widget_selector">Widget selector</a></li><li><a href="/doc/version/23.09/solutions/Component_viewer">Component viewer</a></li><li><a href="/doc/version/23.09/solutions/History">History</a></li><li><a href="/doc/version/23.09/solutions/Constants">Constants</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelBuild-_Project_settings_window">EiffelBuild: Project settings window</a><ul> <li><a href="/doc/version/23.09/solutions/Build_Tab">Build Tab</a></li><li><a href="/doc/version/23.09/solutions/Generation_Tab">Generation Tab</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelBuild_Preferences">EiffelBuild Preferences</a></li><li><a href="/doc/version/23.09/solutions/EiffelBuild-_Code_Generation">EiffelBuild: Code Generation</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelBuild_Version_History">EiffelBuild Version History</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelVision_2">EiffelVision 2</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelVision_Introduction">EiffelVision Introduction</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/Vison2_-_How-to">How to ...</a><ul> <li><a href="/doc/version/23.09/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/version/23.09/solutions/Triggering_Pick-and-Drop">Triggering PnD</a></li><li><a href="/doc/version/23.09/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/version/23.09/solutions/EiffelVision_Library_Reference_Manual">EiffelVision Library Reference Manual</a><ul> <li><a href="/doc/version/23.09/solutions/Kernel">Kernel</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/Widgets">Widgets</a><ul> <li><a href="/doc/version/23.09/solutions/Primitives">Primitives</a></li><li><a href="/doc/version/23.09/solutions/Containers">Containers</a></li><li><a href="/doc/version/23.09/solutions/EiffelVision_Dialogs">EiffelVision Dialogs</a></li></ul></li><li><a href="/doc/version/23.09/solutions/Items">Items</a></li><li><a href="/doc/version/23.09/solutions/Events">Events</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/Properties">Properties</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelVision_Pick_and_Drop">EiffelVision Pick and Drop</a></li></ul></li><li><a href="/doc/version/23.09/solutions/Support">Support</a></li><li><a href="/doc/version/23.09/solutions/Figures">Figures</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelVision_2_Class_Reference">EiffelVision 2 Class Reference</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelVision_2_Samples">EiffelVision 2 Samples</a><ul> <li><a href="/doc/version/23.09/solutions/Widgets_Sample">Widgets Sample</a></li><li><a href="/doc/version/23.09/solutions/Accelerator_Sample">Accelerator Sample</a></li><li><a href="/doc/version/23.09/solutions/Cursor_Sample">Cursor Sample</a></li><li><a href="/doc/version/23.09/solutions/Gauges_Sample">Gauges Sample</a></li><li><a href="/doc/version/23.09/solutions/Standard_dialogs_Sample">Standard_dialogs Sample</a></li><li><a href="/doc/version/23.09/solutions/Viewport_Sample">Viewport Sample</a></li></ul></li><li><a href="/doc/version/23.09/solutions/Revisions_and_Bug_Fixes">Revisions and Bug Fixes</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Dates_and_times">Dates and times</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelTime">EiffelTime</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelTime_Tutorial">EiffelTime Tutorial</a><ul> <li><a href="/doc/version/23.09/solutions/Absolute_time">Absolute time</a></li><li><a href="/doc/version/23.09/solutions/Duration">Duration</a></li><li><a href="/doc/version/23.09/solutions/Interval">Interval</a></li><li><a href="/doc/version/23.09/solutions/DATE_TIME_to_STRING_Conversion">DATE TIME to STRING Conversion</a></li><li><a href="/doc/version/23.09/solutions/More_precision">More precision</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelTime_Class_Reference">EiffelTime Class Reference</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Including_other_languages">With other languages</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/Eiffel_%22external%22_mechanism">Eiffel "external" mechanism</a><ul> <li><a href="/doc/version/23.09/solutions/Interfacing_with_C_and_C%2B%2B">Interfacing with C and C++</a></li><li><a href="/doc/version/23.09/solutions/Interfacing_with_DLLs">Interfacing with DLLs</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/Obsolete_%22external%22_interfaces">Obsolete "external" interfaces</a><ul> <li><a href="/doc/version/23.09/solutions/C_externals">C externals</a></li><li><a href="/doc/version/23.09/solutions/C%2B%2B_Externals">C++ Externals</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/CECIL">CECIL</a><ul> <li><a href="/doc/version/23.09/solutions/Compiling_an_Eiffel_system_for_CECIL">Compiling an Eiffel system for CECIL</a></li><li><a href="/doc/version/23.09/solutions/Using_a_CECIL_archive">Using a CECIL archive</a></li><li><a href="/doc/version/23.09/solutions/CECIL_interface_overview">CECIL interface overview</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/CECIL_Reference">CECIL Reference</a><ul> <li><a href="/doc/version/23.09/solutions/attribute_exists">attribute_exists</a></li><li><a href="/doc/version/23.09/solutions/eif_access">eif_access</a></li><li><a href="/doc/version/23.09/solutions/eif_adopt">eif_adopt</a></li><li><a href="/doc/version/23.09/solutions/eif_attribute">eif_attribute</a></li><li><a href="/doc/version/23.09/solutions/eif_attribute_type">eif_attribute_type</a></li><li><a href="/doc/version/23.09/solutions/eif_create">eif_create</a></li><li><a href="/doc/version/23.09/solutions/eif_disable_visible_exception">eif_disable_visible_exception</a></li><li><a href="/doc/version/23.09/solutions/eif_enable_visible_exception">eif_enable_visible_exception</a></li><li><a href="/doc/version/23.09/solutions/eif_name">eif_name</a></li><li><a href="/doc/version/23.09/solutions/eif_name_by_tid">eif_name_by_tid</a></li><li><a href="/doc/version/23.09/solutions/eif_procedure">eif_procedure</a></li><li><a href="/doc/version/23.09/solutions/eif_protect">eif_protect</a></li><li><a href="/doc/version/23.09/solutions/eif_string">eif_string</a></li><li><a href="/doc/version/23.09/solutions/eif_type">eif_type</a></li><li><a href="/doc/version/23.09/solutions/eif_type_by_name">eif_type_by_name</a></li><li><a href="/doc/version/23.09/solutions/eif_type_by_reference">eif_type_by_reference</a></li><li><a href="/doc/version/23.09/solutions/eif_type_id">eif_type_id</a></li><li><a href="/doc/version/23.09/solutions/eif_wean">eif_wean</a></li><li><a href="/doc/version/23.09/solutions/eif_%2A_function">eif_*_function</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/CECIL_samples">CECIL samples</a><ul> <li><a href="/doc/version/23.09/solutions/CECIL_-_C_to_Eiffel">CECIL - C to Eiffel</a></li><li><a href="/doc/version/23.09/solutions/CECIL_-_Eiffel_to_C">CECIL - Eiffel to C</a></li><li><a href="/doc/version/23.09/solutions/CECIL_-_Basic_sample">CECIL - Basic sample</a></li><li><a href="/doc/version/23.09/solutions/CECIL_-_Threads">CECIL - Threads</a></li><li><a href="/doc/version/23.09/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/version/23.09/solutions/Eiffel2Java">Eiffel2Java</a><ul> <li><a href="/doc/version/23.09/solutions/Eiffel2Java_Tutorial">Eiffel2Java Tutorial</a></li><li><a href="/doc/version/23.09/solutions/Eiffel2Java_class_reference">Eiffel2Java class reference</a></li><li><a href="/doc/version/23.09/solutions/Eiffel2Java_Sample">Eiffel2Java Sample</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Porting_instructions">Porting instructions</a><ul> <li><a href="/doc/version/23.09/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/version/23.09/solutions/Concurrency">Concurrency</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelThreads">EiffelThreads</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelThread_Tutorial">EiffelThread Tutorial</a><ul> <li><a href="/doc/version/23.09/solutions/Thread_library_overview">Thread library overview</a></li><li><a href="/doc/version/23.09/solutions/Compilation_of_multithreaded_systems">Compilation of multithreaded systems</a></li><li><a href="/doc/version/23.09/solutions/Once_features_in_multithreaded_mode">Once features in multithreaded mode</a></li><li><a href="/doc/version/23.09/solutions/Multithread_FAQ">Multithread FAQ</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelThread_Class_Reference">EiffelThread Class Reference</a></li></ul></li><li><a href="/doc/version/23.09/solutions/SCOOP_tutorial">SCOOP Tutorial (hands-on): a small concurrent email system</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/Concurrent_programming_with_SCOOP">SCOOP</a><ul> <li><a href="/doc/version/23.09/solutions/Getting_Started_with_SCOOP">Getting Started</a></li><li><a href="/doc/version/23.09/solutions/Regions_and_Processors">Regions and Processors</a></li><li><a href="/doc/version/23.09/solutions/Separate_Calls">Separate Calls</a></li><li><a href="/doc/version/23.09/solutions/Exclusive_Access">Exclusive Access</a></li><li><a href="/doc/version/23.09/solutions/Design_by_Contract_in_SCOOP">Design by Contract</a></li><li><a href="/doc/version/23.09/solutions/Asynchronous_Calls">Asynchronous Calls</a></li><li><a href="/doc/version/23.09/solutions/Exceptions_in_SCOOP">Exceptions</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/SCOOP_examples">SCOOP examples</a><ul> <li><a href="/doc/version/23.09/solutions/Single-element_producer-consumer">Single-element producer-consumer</a></li><li><a href="/doc/version/23.09/solutions/Counter">Counter</a></li><li><a href="/doc/version/23.09/solutions/Producer-consumer">Producer-consumer</a></li><li><a href="/doc/version/23.09/solutions/Dining_philosophers">Dining philosophers</a></li><li><a href="/doc/version/23.09/solutions/Barbershop">Barbershop</a></li><li><a href="/doc/version/23.09/solutions/Baboon_crossing">Baboon crossing</a></li><li><a href="/doc/version/23.09/solutions/Search-insert-delete">Search-insert-delete</a></li><li><a href="/doc/version/23.09/solutions/Senate_bus">Senate bus</a></li><li><a href="/doc/version/23.09/solutions/Quicksort">Quicksort</a></li><li><a href="/doc/version/23.09/solutions/Dining_savages">Dining savages</a></li><li><a href="/doc/version/23.09/solutions/Faneuil_Hall">Faneuil Hall</a></li><li><a href="/doc/version/23.09/solutions/Observer_pattern">Observer pattern</a></li></ul></li><li><a href="/doc/version/23.09/solutions/SCOOP_implementation">SCOOP implementation</a></li><li><a href="/doc/version/23.09/solutions/SCOOP_papers">papers</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Networking">Networking</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelNet">EiffelNet</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelNet_Tutorial">EiffelNet Tutorial</a><ul> <li><a href="/doc/version/23.09/solutions/What_is_EiffelNet">What is EiffelNet</a></li><li><a href="/doc/version/23.09/solutions/Clients_and_servers">Clients and servers</a></li><li><a href="/doc/version/23.09/solutions/An_overview_of_EiffelNet_Mechanisms">An overview of EiffelNet Mechanisms</a></li><li><a href="/doc/version/23.09/solutions/Introduction_to_the_examples">Introduction to the examples</a></li><li><a href="/doc/version/23.09/solutions/Obtaining_a_finer_degree_of_control">Obtaining a finer degree of control</a></li><li><a href="/doc/version/23.09/solutions/Using_datagram_sockets">Using datagram sockets</a></li><li><a href="/doc/version/23.09/solutions/Event-driven_command_execution">Event-driven command execution</a></li><li><a href="/doc/version/23.09/solutions/A_more_complex_example">A more complex example</a></li><li><a href="/doc/version/23.09/solutions/Bibliography">Bibliography</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelNet_Class_Reference">EiffelNet Class Reference</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelNet_Samples">EiffelNet Samples</a><ul> <li><a href="/doc/version/23.09/solutions/Advanced">Advanced</a></li><li><a href="/doc/version/23.09/solutions/Polling">Polling</a></li><li><a href="/doc/version/23.09/solutions/Predef">Predef</a></li><li><a href="/doc/version/23.09/solutions/Same_Machine">Same Machine</a></li><li><a href="/doc/version/23.09/solutions/Two_Machines">Two Machines</a></li></ul></li></ul></li></ul></li><li class="expandable expanded "><a href="/doc/version/23.09/solutions/Database_access">Database access</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/ABEL">ABEL</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/Tutorial">Tutorial</a><ul> <li><a href="/doc/version/23.09/solutions/Getting_started">Getting started</a></li><li><a href="/doc/version/23.09/solutions/Basic_operations">Basic operations</a></li><li><a href="/doc/version/23.09/solutions/Advanced_Queries">Advanced Queries</a></li><li><a href="/doc/version/23.09/solutions/Dealing_with_references">Dealing with references</a></li><li><a href="/doc/version/23.09/solutions/Tuple_queries">Tuple queries</a></li><li><a href="/doc/version/23.09/solutions/Error_handling">Error handling</a></li><li><a href="/doc/version/23.09/solutions/Accessing_an_existing_database">Accessing an existing database</a></li></ul></li></ul></li><li class="expandable expanded "><a href="/doc/version/23.09/solutions/EiffelStore">EiffelStore</a><ul> <li class="expandable expanded "><a href="/doc/version/23.09/solutions/EiffelStore_Tutorial">EiffelStore Tutorial</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelStore_Interface_Layer">EiffelStore Interface Layer</a><ul> <li><a href="/doc/version/23.09/solutions/Database_Connection">Database Connection</a></li><li><a href="/doc/version/23.09/solutions/Data_Modification">Data Modification</a></li><li><a href="/doc/version/23.09/solutions/Database_Selection">Database Selection</a></li><li><a href="/doc/version/23.09/solutions/Selection_Access">Selection Access</a></li><li><a href="/doc/version/23.09/solutions/Data_Object_Coupling">Data Object Coupling</a></li><li><a href="/doc/version/23.09/solutions/Query_variables">Query variables</a></li><li><a href="/doc/version/23.09/solutions/Stored_Procedures">Stored Procedures</a></li><li><a href="/doc/version/23.09/solutions/Database_control">Database control</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelStore_Implementation_Layer">EiffelStore Implementation Layer</a></li><li class="expandable expanded "><a href="/doc/version/23.09/solutions/EiffelStore_Generation_Cluster">EiffelStore Generation Cluster</a><ul> <li class="active "><a href="/doc/version/23.09/solutions/Data_structures_use">Data structures use</a></li><li><a href="/doc/version/23.09/solutions/Data_structures_creation">Data structures creation</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelStore_DataView_Cluster">EiffelStore DataView Cluster</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelStore_Class_Reference">EiffelStore Class Reference</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelStore_Samples">EiffelStore Samples</a><ul> <li><a href="/doc/version/23.09/solutions/Esql_Sample">Esql Sample</a></li><li><a href="/doc/version/23.09/solutions/Selector_Sample">Selector Sample</a></li><li><a href="/doc/version/23.09/solutions/Inserter_Sample">Inserter Sample</a></li></ul></li><li><a href="/doc/version/23.09/solutions/Defending_against_SQL_injections_with_EiffelStore">SQL injection</a></li><li><a href="/doc/version/23.09/solutions/EiffelStore_ODBC_with_PostgreSQL">EiffelStore ODBC</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Web_technology">Web technology</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelWeb_framework">EiffelWeb</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/Obsolete_EiffelWeb">Obsolete EiffelWeb</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelWeb_Tutorial">EiffelWeb Tutorial</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelWeb_Content_Introduction">EiffelWeb Content Introduction</a></li><li><a href="/doc/version/23.09/solutions/Processing_Requests">Processing Requests</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelWeb_Class_Reference">EiffelWeb Class Reference</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelWeb_Sample">EiffelWeb Sample</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelWeb_Basic_Sample">EiffelWeb Basic Sample</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Text_processing">Text processing</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelLex">EiffelLex</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelLex_Tutorial">EiffelLex Tutorial</a></li><li><a href="/doc/version/23.09/solutions/EiffelLex_Class_Reference">EiffelLex Class Reference</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelLex_Sample">EiffelLex Sample</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/Eiffel_scanner">Eiffel scanner</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelLex_Samples">EiffelLex Samples</a></li><li><a href="/doc/version/23.09/solutions/EIFFEL_SCAN_Text">EIFFEL_SCAN Text</a></li><li><a href="/doc/version/23.09/solutions/eiffel_scan_console_input">eiffel_scan console input</a></li><li><a href="/doc/version/23.09/solutions/eiffel_scan_console_output">eiffel_scan console output</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelParse">EiffelParse</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelParse_Tutorial">EiffelParse Tutorial</a></li><li><a href="/doc/version/23.09/solutions/EiffelParse_Class_Reference">EiffelParse Class Reference</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/Parse_Sample">Parse Sample</a><ul> <li><a href="/doc/version/23.09/solutions/Eiffel_polynomial_parser">Eiffel polynomial parser</a></li></ul></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Preferences">Preferences</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelPreferences">EiffelPreferences</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelPreferences_Tutorial">EiffelPreferences Tutorial</a><ul> <li><a href="/doc/version/23.09/solutions/Overview">Overview</a></li><li><a href="/doc/version/23.09/solutions/Initialization">Initialization</a></li><li><a href="/doc/version/23.09/solutions/Interface_for_preferences">Interface for preferences</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelPreferences_Class_Reference">EiffelPreferences Class Reference</a></li><li><a href="/doc/version/23.09/solutions/EiffelPreferences_Sample">EiffelPreferences Sample</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/Platform_specifics">Platform specifics</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/Microsoft_Windows">Microsoft Windows</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/WEL">WEL</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/WEL_Common_Concepts">WEL Common Concepts</a><ul> <li><a href="/doc/version/23.09/solutions/Inheriting_WEL_APPLICATION">Inheriting WEL_APPLICATION</a></li><li><a href="/doc/version/23.09/solutions/Redefining_main_window">Redefining main_window</a></li><li><a href="/doc/version/23.09/solutions/Redefining_%60init_application%27">Redefining `init_application'</a></li><li><a href="/doc/version/23.09/solutions/Common_message_hooks">Common message hooks</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/WEL_Interface_Content">WEL Interface Content</a><ul> <li><a href="/doc/version/23.09/solutions/windows_cluster">windows cluster</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/controls_cluster">controls cluster</a><ul> <li><a href="/doc/version/23.09/solutions/WEL_CHECKBOX">WEL_CHECKBOX</a></li><li><a href="/doc/version/23.09/solutions/WEL_CHECK_BOX_3_STATE">WEL_CHECK_BOX_3_STATE</a></li><li><a href="/doc/version/23.09/solutions/WEL_GROUP_BOX">WEL_GROUP_BOX</a></li><li><a href="/doc/version/23.09/solutions/WEL_LIST_VIEW">WEL_LIST_VIEW</a></li><li><a href="/doc/version/23.09/solutions/WEL_MULTIPLE_LINE_EDIT">WEL_MULTIPLE_LINE_EDIT</a></li><li><a href="/doc/version/23.09/solutions/WEL_MULTIPLE_SELECTION_LIST_BOX">WEL_MULTIPLE_SELECTION_LIST_BOX</a></li><li><a href="/doc/version/23.09/solutions/WEL_OWNER_DRAW_BUTTON">WEL_OWNER_DRAW_BUTTON</a></li><li><a href="/doc/version/23.09/solutions/WEL_PROGRESS_BAR">WEL_PROGRESS_BAR</a></li><li><a href="/doc/version/23.09/solutions/WEL_PUSH_BUTTON">WEL_PUSH_BUTTON</a></li><li><a href="/doc/version/23.09/solutions/WEL_RADIO_BUTTON">WEL_RADIO_BUTTON</a></li><li><a href="/doc/version/23.09/solutions/WEL_SCROLL_BAR">WEL_SCROLL_BAR</a></li><li><a href="/doc/version/23.09/solutions/WEL_SINGLE_LINE_EDIT">WEL_SINGLE_LINE_EDIT</a></li><li><a href="/doc/version/23.09/solutions/WEL_SINGLE_SELECTION_LIST_BOX">WEL_SINGLE_SELECTION_LIST_BOX</a></li><li><a href="/doc/version/23.09/solutions/WEL_TOOLTIP">WEL_TOOLTIP</a></li><li><a href="/doc/version/23.09/solutions/WEL_TRACK_BAR">WEL_TRACK_BAR</a></li><li><a href="/doc/version/23.09/solutions/WEL_UP_DOWN_CONTROL">WEL_UP_DOWN_CONTROL</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/stddlgs_cluster">stddlgs cluster</a><ul> <li><a href="/doc/version/23.09/solutions/WEL_CHOOSE_COLOR_DIALOG">WEL_CHOOSE_COLOR_DIALOG</a></li><li><a href="/doc/version/23.09/solutions/WEL_CHOOSE_FOLDER_DIALOG">WEL_CHOOSE_FOLDER_DIALOG</a></li><li><a href="/doc/version/23.09/solutions/WEL_CHOOSE_FONT_DIALOG">WEL_CHOOSE_FONT_DIALOG</a></li><li><a href="/doc/version/23.09/solutions/WEL_OPEN_FILE_DIALOG">WEL_OPEN_FILE_DIALOG</a></li><li><a href="/doc/version/23.09/solutions/WEL_PRINT_DIALOG">WEL_PRINT_DIALOG</a></li><li><a href="/doc/version/23.09/solutions/WEL_SAVE_FILE_DIALOG">WEL_SAVE_FILE_DIALOG</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/WEL_Tutorial">WEL Tutorial</a><ul> <li><a href="/doc/version/23.09/solutions/Tutorial_Step_1">Tutorial Step 1</a></li><li><a href="/doc/version/23.09/solutions/Tutorial_Step_2">Tutorial Step 2</a></li><li><a href="/doc/version/23.09/solutions/Tutorial_Step_3">Tutorial Step 3</a></li><li><a href="/doc/version/23.09/solutions/Tutorial_Step_4">Tutorial Step 4</a></li><li><a href="/doc/version/23.09/solutions/Tutorial_Step_5">Tutorial Step 5</a></li><li><a href="/doc/version/23.09/solutions/Tutorial_Step_6">Tutorial Step 6</a></li><li><a href="/doc/version/23.09/solutions/Tutorial_Step_7">Tutorial Step 7</a></li><li><a href="/doc/version/23.09/solutions/Tutorial_Step_8">Tutorial Step 8</a></li></ul></li><li><a href="/doc/version/23.09/solutions/WEL_Class_Reference">WEL Class Reference</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/WEL_Samples">WEL Samples</a><ul> <li><a href="/doc/version/23.09/solutions/Bmpview">Bmpview</a></li><li><a href="/doc/version/23.09/solutions/Brushes">Brushes</a></li><li><a href="/doc/version/23.09/solutions/Common_Controls">Common Controls</a></li><li><a href="/doc/version/23.09/solutions/Commands">Commands</a></li><li><a href="/doc/version/23.09/solutions/Controls_Sample">Controls Sample</a></li><li><a href="/doc/version/23.09/solutions/Ctlcolor">Ctlcolor</a></li><li><a href="/doc/version/23.09/solutions/Cursors">Cursors</a></li><li><a href="/doc/version/23.09/solutions/Disk_Space">Disk Space</a></li><li><a href="/doc/version/23.09/solutions/Fontenum">Fontenum</a></li><li><a href="/doc/version/23.09/solutions/Fun">Fun</a></li><li><a href="/doc/version/23.09/solutions/Header_Control">Header Control</a></li><li><a href="/doc/version/23.09/solutions/Hello_World%21">Hello World!</a></li><li><a href="/doc/version/23.09/solutions/List_View">List View</a></li><li><a href="/doc/version/23.09/solutions/Magnify">Magnify</a></li><li><a href="/doc/version/23.09/solutions/MDI_%28Multiple_Document_Interface%29">MDI (Multiple Document Interface)</a></li><li><a href="/doc/version/23.09/solutions/Wel_Sample-_Menus">Wel Sample: Menus</a></li><li><a href="/doc/version/23.09/solutions/Minimal">Minimal</a></li><li><a href="/doc/version/23.09/solutions/Pizza">Pizza</a></li><li><a href="/doc/version/23.09/solutions/Printer">Printer</a></li><li><a href="/doc/version/23.09/solutions/Rich_Edit">Rich Edit</a></li><li><a href="/doc/version/23.09/solutions/Split_Area">Split Area</a></li><li><a href="/doc/version/23.09/solutions/Standard_Dialogs_Sample">Standard Dialogs Sample</a></li><li><a href="/doc/version/23.09/solutions/Timer">Timer</a></li><li><a href="/doc/version/23.09/solutions/Tree_View_Sample">Tree View Sample</a></li><li><a href="/doc/version/23.09/solutions/Unicode_Sample">Unicode Sample</a></li><li><a href="/doc/version/23.09/solutions/Windows_Sample">Windows Sample</a></li><li><a href="/doc/version/23.09/solutions/Xcell">Xcell</a></li><li><a href="/doc/version/23.09/solutions/XY_Co-ordinates">XY Co-ordinates</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/COM">COM</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelCOM_Wizard">EiffelCOM Wizard</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/COM_and_Eiffel">COM and Eiffel</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelCOM-_Introduction">EiffelCOM: Introduction</a></li><li><a href="/doc/version/23.09/solutions/COM_Concepts">COM Concepts</a></li><li><a href="/doc/version/23.09/solutions/COM_Interfaces">COM Interfaces</a></li><li><a href="/doc/version/23.09/solutions/Coclass">Coclass</a></li><li><a href="/doc/version/23.09/solutions/The_Component_Location">The Component Location</a></li><li><a href="/doc/version/23.09/solutions/Access_Type">Access Type</a></li><li><a href="/doc/version/23.09/solutions/Deeper_into_COM">Deeper into COM</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelCOM_Wizard_Introduction">EiffelCOM Wizard Introduction</a></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelCOM_Wizard_Guided_Tour">EiffelCOM Wizard Guided Tour</a><ul> <li><a href="/doc/version/23.09/solutions/Creating_a_New_COM_Component">Creating a New COM Component</a></li><li><a href="/doc/version/23.09/solutions/Creating_a_new_component_from_an_Eiffel_project">Creating a new component from an Eiffel project</a></li><li><a href="/doc/version/23.09/solutions/Accessing_a_COM_Component">Accessing a COM Component</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelCOM_Wizard_Reference">EiffelCOM Wizard Reference</a><ul> <li><a href="/doc/version/23.09/solutions/How_the_EiffelCOM_Wizard_works">How the EiffelCOM Wizard works</a></li><li><a href="/doc/version/23.09/solutions/Generated_Files">Generated Files</a></li><li><a href="/doc/version/23.09/solutions/Class_Hierarchy">Class Hierarchy</a></li><li><a href="/doc/version/23.09/solutions/Eiffel_Project_Processing">Eiffel Project Processing</a></li><li><a href="/doc/version/23.09/solutions/Reusing_a_COM_Component">Reusing a COM Component</a></li><li><a href="/doc/version/23.09/solutions/Building_a_COM_Component">Building a COM Component</a></li><li><a href="/doc/version/23.09/solutions/Wizards-_Command_Line_Options">Wizards: Command Line Options</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelCOM_Library">EiffelCOM Library</a><ul> <li class="expandable "><a href="/doc/version/23.09/solutions/EiffelCOM_Interface_Content">EiffelCOM Interface Content</a><ul> <li><a href="/doc/version/23.09/solutions/Interfaces">Interfaces</a></li><li><a href="/doc/version/23.09/solutions/Structures">Structures</a></li></ul></li><li><a href="/doc/version/23.09/solutions/EiffelCOM_Class_Reference">EiffelCOM Class Reference</a></li></ul></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/ResourceBench">ResourceBench</a><ul> <li><a href="/doc/version/23.09/solutions/Features">Features</a></li><li><a href="/doc/version/23.09/solutions/Tour">Tour</a></li><li><a href="/doc/version/23.09/solutions/Troubleshooting">Troubleshooting</a></li></ul></li><li class="expandable "><a href="/doc/version/23.09/solutions/EiffelRibbon">EiffelRibbon</a><ul> <li><a href="/doc/version/23.09/solutions/EiffelRibbon_Design_Tool">EiffelRibbon Design Tool</a></li></ul></li></ul></li></ul></li></ul></li><li><a href="/doc/version/23.09/glossary/Glossary">Glossary</a></li><li><a href="/doc/version/23.09/faq/FAQ">FAQ</a></li><li class="expandable "><a href="/doc/version/23.09/contribute/How_to_contribute">Contribute</a><ul> <li><a href="/doc/version/23.09/contribute/How_to_contribute_to_documentation">To documentation</a></li><li><a href="/doc/version/23.09/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/solutions">solutions</a> :: Data structures use </div> </header> <div><ul class="message"><li class="warning">This is not the released version of the documentation. <a href="/doc/solutions/Data_structures_use">Recommended Version</a></li></ul><div class="wdocs-versions">Version<ul><li class="active"><a href="/doc/version/23.09/solutions/Data_structures_use">23.09 ...</a><ul class="popup-menu"><li><a href="/doc/version/trunk/solutions/Data_structures_use">trunk (trunk)</a></li><li><a href="/doc/solutions/Data_structures_use">25.02 (released)</a></li><li><a href="/doc/version/24.05/solutions/Data_structures_use">24.05</a></li><li class="active"><a href="/doc/version/23.09/solutions/Data_structures_use">23.09</a></li><li><a href="/doc/version/22.12/solutions/Data_structures_use">22.12</a></li></ul></li></ul></div> <div class="wikipage"><h1 class="wikititle">Data structures use</h1> <div class="wiki-toc wiki-toc-auto"> <ol><a id="toc"></a><span class="title">Contents</span> <li><a href="#1._Overview">1. Overview</a></li> <li><a href="#2._Data_structure_capabilities">2. Data structure capabilities</a><ol> <li><a href="#2.1._Storing_table/view_rows_content">2.1. Storing table/view rows content</a></li> <li><a href="#2.2._Manipulating_abstract_table/view_rows_content">2.2. Manipulating abstract table/view rows content</a></li> <li><a href="#2.3._Getting_objects_metadata">2.3. Getting objects metadata</a></li> <li><a href="#2.4._Accessing_database_metadata">2.4. Accessing database metadata</a></li> <li><a href="#2.5._More_interesting_features">2.5. More interesting features</a></li> </ol> </li> <li><a href="#3._Implementation">3. Implementation</a></li> <li><a href="#2._Table_and_description_classes_relationship">2. Table and description classes relationship</a><ol> <li><a href="#2.1._Table_classes">2.1. Table classes</a></li> <li><a href="#2.2._Description_classes">2.2. Description classes</a></li> <li><a href="#2.3._Relationship">2.3. Relationship</a></li> </ol> </li> <li><a href="#3._Table_access_classes">3. Table access classes</a><ol> <li><a href="#3.1._Overview">3.1. Overview</a></li> <li><a href="#3.2._DB_SPECIFIC_TABLES_ACCESS_class">3.2. DB_SPECIFIC_TABLES_ACCESS class</a></li> <li><a href="#3.3._Abstract_access_class">3.3. Abstract access class</a></li> <li><a href="#3.4._Use_classes">3.4. Use classes</a></li> </ol> </li> </ol> </div> <p></p> <a id="1._Overview"></a><h2>1. Overview</h2> <p>EiffelStore affords a context that optimizes and facilitates the use of the classes that maps your database content. </p> <p>The main advantage of database-specific structures is the static checking: you can determine at compile-time the type of information you are accessing or modifying. </p> <p>However, it can be more flexible to determine the type of data you are dealing with at run-time. This can be particularly useful for GUI applications, take a look at the <a href="/doc/version/23.09/solutions/EiffelStore_DataView_Cluster" class="wiki_link">DataView cluster</a> . </p> <p>Each data structure carries some meta-data about its type so that the run-time typing hazards can be avoided with assertions based on this meta-data. </p> <p>The advantage of this system is two-fold: </p> <ul><li> You can choose to use compile-time type checking or not, depending on your own needs.</li> <li> If you choose run-time type checking, assertions ensure that each object type is valid and prevent cat calls.</li> </ul> <p>Let us see first <a href="#capabilities" class="wiki_link">what you can do</a> with data structures and their context, then <a href="#implementation" class="wiki_link">how it is implemented</a> . </p> <a id="2._Data_structure_capabilities"></a><h2>2. Data structure capabilities</h2> <p>Database-specific classes and their context let you perform the following operations:</p> <ul><li> <a href="#cap_storage" class="wiki_link">Storing table/view rows content</a> </li> <li> <a href="#cap_manipulation" class="wiki_link">Manipulating abstract table/view rows content</a> </li> <li> <a href="#cap_objects_metadata" class="wiki_link">Getting objects metadata</a> </li> <li> <a href="#cap_database_metadata" class="wiki_link">Accessing database metadata</a> </li> <li> <a href="#cap_more" class="wiki_link">More interesting features</a> </li> </ul> <a id="2.1._Storing_table/view_rows_content"></a><h3>2.1. Storing table/view rows content</h3> <p>You can store table/view rows content into classes that have the table or view name: one database table/view row correspond to one Eiffel object. Each table attribute will correspond to a class attribute with the same name. <em>set</em> commands enable to change the object content to insert rows in the database or update rows. <a href="/doc-static/version/23.09/libraries/store/reference/db_selection_flatshort" class="wiki_external">DB_SELECTION</a> class can directly map database results into these objects, and you can directly create a table/view row from one object with the <a href="/doc-static/version/23.09/libraries/store/reference/db_store_flatshort" class="wiki_external">DB_STORE</a> class. Take a look at the <a href="/doc/version/23.09/solutions/Data_Object_Coupling" class="wiki_link">data-object coupling</a> section. </p> <a id="2.2._Manipulating_abstract_table/view_rows_content"></a><h3>2.2. Manipulating abstract table/view rows content</h3> <p>Each table/view storage structure inherits from the <a href="/doc-static/version/23.09/libraries/store/reference/db_table_flatshort" class="wiki_external">DB_TABLE</a> abstract class. This enables to handle <a href="/doc-static/version/23.09/libraries/store/reference/db_table_flatshort" class="wiki_external">DB_TABLE</a> objects as abstract database table/view structures.</p> <p>You can then access or modify <a href="/doc-static/version/23.09/libraries/store/reference/db_table_flatshort" class="wiki_external">DB_TABLE</a> attributes: instead of accessing attributes with their <em>name</em>, which implies that the object type is known at compile-time, attributes can then be accessed with a <em>code</em>. <code> tablerow: DB_TABLE ... display_attribute (code: INTEGER) -- Display attribute with `code'. do io.putstring (tablerow.table_description.attribute (code).out) end</code></p> <p><p class="tpl note-message"><a href="/doc-image/version/23.09/LogoInformation"><img src="/doc-image/version/23.09/23.09/_images/tpl_Information.png" border="0" width="24" alt=""/></a> <strong>Note: </strong>to access attributes data with <em>code</em>, you need to use the <a href="/doc-static/version/23.09/libraries/store/reference/db_table_description_flatshort" class="wiki_external">DB_TABLE_DESCRIPTION</a> object associated to your <a href="/doc-static/version/23.09/libraries/store/reference/db_table_flatshort" class="wiki_external">DB_TABLE</a> object. </p> </p> <a id="2.3._Getting_objects_metadata"></a><h3>2.3. Getting objects metadata</h3> <p>While manipulating <eiffel class="inline">DB_TABLE</eiffel> objects, you can easily get:</p> <ul><li> Which database table/view the object references.</li> <li> What are the types of its attributes.</li> </ul> <p><strong>Note:</strong> you also get objects metadata through the <eiffel class="inline">DB_TABLE_DESCRIPTION</eiffel> object associated to your DB_TABLE object. Objects metadata used in assertions ensures objects type validity. To illustrates this, let's look at the contract form of a class that manipulates "abstract" table/view rows:<code> set_table_code (code: INTEGER) -- Assign `code' to `tablecode'. tablecode: INTEGER -- Table code. compute (tablerow: DB_TABLE) -- Compute `tablerow'. require type_is_ok: tablerow.table_description.Table_code = tablecode</code></p> <a id="2.4._Accessing_database_metadata"></a><h3>2.4. Accessing database metadata</h3> <p>Basic database metadata is also available: the <eiffel class="inline">DB_SPECIFIC_TABLES_ACCESS_USE</eiffel> class (generated), stores INTEGER codes for each database table/view. These codes afford related table/view name and related new storing objects (i.e. that conforms to DB_TABLE class). <code> tables: DB_SPECIFIC_TABLES_ACCESS ... new_object (code: INTEGER): DB_TABLE -- New object of table with `code'. do Result := tables.obj (code) end</code></p> <a id="2.5._More_interesting_features"></a><h3>2.5. More interesting features</h3> <p>The <eiffel class="inline">DB_TABLE_DESCRIPTION</eiffel> class offers more features to get table row attributes as conveniently as possible:</p> <ul><li> The table/view row primary key value (ID)</li> <li> The list of table/view row attributes</li> <li> A selection of table/view row attributes</li> <li> The list of table/view row attributes mapped to a function.</li> <li> Printable attribute values (i.e. the associated STRING values)</li> </ul> <a id="3._Implementation"></a><h2>3. Implementation</h2> <p>Database-specific classes can be divided into 3 types:</p> <ul><li> Classes holding database table rows content (inheriting from <eiffel class="inline">DB_TABLE</eiffel>)</li> <li> Classes describing database tables (inheriting from <eiffel class="inline">DB_TABLE_DESCRIPTION</eiffel>)</li> <li> A class describing the database and giving access to the previous types of classes (inheriting from <eiffel class="inline">DB_TABLES_ACCESS</eiffel>)</li> </ul> <p>One database table is hence associated to one table class and one description class. Both classes are closely <a href="#table-descr_relationship" class="wiki_link"> interrelated</a> to provide what the developer need. The <a href="#table_access_classes" class="wiki_link">table access classes</a> describes the database tables and gives access to both table and description classes. </p> <p>Each database-specific (generated) class inherits from an abstract class. These abstract classes gathers all the facilities that are not specific to your database, and so that can be inherited by all the database-specific classes.</p> <p>Let us see abstract and database-specific classes relationship:</p> <p><a href="/doc-image/version/23.09/tables-access-inherit"><img src="/doc-image/version/23.09/solutions/_images/tables-access-inherit.png" border="0"/></a> </p> <p>General and generated classes relationships</p> <ul><li> Yellow classes are abstract.</li> <li> Green classes are database-specific.</li> </ul> <a id="2._Table_and_description_classes_relationship"></a><h2>2. Table and description classes relationship</h2> <p>Table classes, that inherit from <eiffel class="inline">DB_TABLE</eiffel>, and description classes, that inherit from <eiffel class="inline">DB_TABLE_DESCRIPTION</eiffel>, both deals with database tables. This section explains what are their own role and their relationship.</p> <a id="2.1._Table_classes"></a><h3>2.1. Table classes</h3> <p>As seen in the previous section, table classes merely store table rows attribute values. Their objects can be considered as database table rows, or more precisely, database table rows on the Eiffel side. These classes inherit from <eiffel class="inline">DB_TABLE</eiffel>. </p> <p>Each of these classes are associated to a description class. </p> <p><strong>Tip:</strong> Use table classes to <em>carry</em> data. </p> <a id="2.2._Description_classes"></a><h3>2.2. Description classes</h3> <p>The description classes goal is 3-fold: </p> <ul><li> <a href="#cap_objects_metadata" class="wiki_link">Getting meta-data</a> about the table represented at run-time. </li> <li> <a href="#cap_manipulation" class="wiki_link">Getting table rows data</a> dynamically. </li> <li> <a href="#cap_more" class="wiki_link">Facilitating data management</a> . </li> </ul> <p>These descriptions inherit from <a href="/doc-static/version/23.09/libraries/store/reference/db_table_description_flatshort" class="wiki_external">DB_TABLE_DESCRIPTION</a> .</p> <p>Since they only describes a table and provide tools, description objects can be unique. EiffelStore ensures their unicity for resources optimization.</p> <p><strong>Tip:</strong> Use description classes to <em>access and modify</em> data. </p> <a id="2.3._Relationship"></a><h3>2.3. Relationship</h3> <p>Each table class is associated to the description class corresponding to the same database table.</p> <p>A table class object provides the associated table description:</p> <p><code> row: DB_TABLE description: DB_TABLE_DESCRIPTION ... row := db_manager.database_result description := row.table_description</code></p> <p>As descriptions are unique, every table row object is associated to the same description. The following figure illustrates this: <a href="/doc-image/version/23.09/table-descr-objects"><img src="/doc-image/version/23.09/solutions/_images/table-descr-objects.png" border="0"/></a> </p> <p>table and description objects relationship</p> <p>As seen in the previous section, to manipulate abstract table/view rows content, you have to use the description class. The following example shows how to output a table row ID value.</p> <p><code> row: DB_TABLE description: DB_TABLE_DESCRIPTION ... -- Link description unique object to `row' content. description := row.table_description io.putstring (description.attribute (description.id_name) + ": ") io.putstring (description.attribute (description.id_code).out)</code></p> <p>As descriptions are unique, this means that description objects are also associated to a specific table object to deal with it (i.e. access or modify its content). Actually, the table_description feature associates the description with the current object and then returns this description.</p> <p><p class="tpl note-message"><a href="/doc-image/version/23.09/LogoInformation"><img src="/doc-image/version/23.09/23.09/_images/tpl_Information.png" border="0" width="24" alt=""/></a> <strong>Note: </strong>The table_description feature is still a query as the association part should not be visible at the interface level. </p> </p> <p>On the whole, you have to pay attention to always execute table_descriptionon your table/view row to get the appropriate description.</p> <a id="3._Table_access_classes"></a><h2>3. Table access classes</h2> <a id="3.1._Overview"></a><h3>3.1. Overview</h3> <p>Table access classes provide facilities to manage table row and table description objects. They also give basic database table meta-data.</p> <p>The following figure shows table access classes and their relations.</p> <ul><li> Yellow classes are EiffelStore classes</li> <li> Green class is generated</li> <li> Pink class is an application class</li> </ul> <p><a href="/doc-image/version/23.09/db-specific-tables-access-use"><img src="/doc-image/version/23.09/solutions/_images/db-specific-tables-access-use.png" border="0"/></a> </p> <p>Table access classes BON diagram</p> <p><a href="/doc-image/version/23.09/table-descr-access-objects"><img src="/doc-image/version/23.09/solutions/_images/table-descr-access-objects.png" border="0"/></a> </p> <p>Relationship between the tables access object, description and table objects</p> <a id="3.2._DB_SPECIFIC_TABLES_ACCESS_class"></a><h3>3.2. DB_SPECIFIC_TABLES_ACCESS class</h3> <p>The <eiffel class="inline">DB_SPECIFIC_TABLES_ACCESS</eiffel> class stores the unique table description object. It also provides the following facilities: </p> <ul><li> Every database table code</li> <li> Table descriptions from a table code</li> <li> Sample table class objects from a table code</li> <li> Table names from a table code</li> </ul> <p><strong>Note</strong>: database table codes given in the class match the table codes provided by <eiffel class="inline">DB_TABLE_DESCRIPTION</eiffel>. </p> <a id="3.3._Abstract_access_class"></a><h3>3.3. Abstract access class</h3> <p>The DB_TABLES_ACCESS class provides an interface for the <eiffel class="inline">DB_SPECIFIC_TABLES_ACCESS</eiffel> class which is non-specific to the database. This can be used by non database-specific code (for instance the <a href="/doc/version/23.09/solutions/EiffelStore_DataView_Cluster" class="wiki_link">DataView cluster</a> ) to access database tables. </p> <p>Unique table description objects and table codes are of course not directly available from this class, but the following features are still available:</p> <ul><li> Table descriptions from a table code</li> <li> Sample table class objects from a table code</li> <li> Table names from a table code</li> </ul> <a id="3.4._Use_classes"></a><h3>3.4. Use classes</h3> <p>The <eiffel class="inline">DB_SPECIFIC_TABLES_ACCESS</eiffel> object can be accessed as a kind of "global variable" by any class which inherits from <eiffel class="inline">DB_SPECIFIC_TABLES_ACCESS_USE</eiffel>. This class also ensures <eiffel class="inline">DB_SPECIFIC_TABLES_ACCESS</eiffel> object unicity. </p> <p>The DB_TABLES_ACCESS_USE class affords the same possibility but with no reference to the <eiffel class="inline">DB_SPECIFIC_TABLES_ACCESS</eiffel> object. The unique <eiffel class="inline">DB_SPECIFIC_TABLES_ACCESS</eiffel> should be set to this class as of type <eiffel class="inline">DB_TABLES_ACCESS</eiffel>. <br/></p> </div> <div class="wdocs-nav"><div class="wdocs-nav-section">Back to <a href="/doc/version/23.09/solutions/EiffelStore_Generation_Cluster" class="wdocs-folder">EiffelStore Generation Cluster</a></div><div class="wdocs-uuid"><a href="/doc/version/23.09/uuid/25885469-d6c8-5d1c-bbf8-c5fca5524d36">Permanent link</a></div> </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/25885469-d6c8-5d1c-bbf8-c5fca5524d36', // 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%2Fversion%2F23.09%2Fsolutions%2FData_structures_use">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%2Fversion%2F23.09%2Fsolutions%2FData_structures_use">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/28/2025 8:09:33.000 AM --> <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>