From cfed1a97d38675c891516b81c735c295d4eae011 Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:57:49 -0500 Subject: [PATCH 01/11] Rename spec_890_ada_text_io into 890_ada_text_io --- .../{spec_890_ada_text_io.rst => 890_ada_text_io.rst} | 2 +- .../{spec_890_ada_text_io.lab.rst => 890_ada_text_io.lab.rst} | 2 +- .../answers/{spec_890_ada_text_io.txt => 890_ada_text_io.txt} | 0 .../ada95/{spec_890_ada_text_io.txt => 890_ada_text_io.txt} | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename courses/fundamentals_of_ada/{spec_890_ada_text_io.rst => 890_ada_text_io.rst} (99%) rename courses/fundamentals_of_ada/labs/{spec_890_ada_text_io.lab.rst => 890_ada_text_io.lab.rst} (88%) rename courses/fundamentals_of_ada/labs/answers/{spec_890_ada_text_io.txt => 890_ada_text_io.txt} (100%) rename courses/fundamentals_of_ada/labs/answers/ada95/{spec_890_ada_text_io.txt => 890_ada_text_io.txt} (100%) diff --git a/courses/fundamentals_of_ada/spec_890_ada_text_io.rst b/courses/fundamentals_of_ada/890_ada_text_io.rst similarity index 99% rename from courses/fundamentals_of_ada/spec_890_ada_text_io.rst rename to courses/fundamentals_of_ada/890_ada_text_io.rst index fbff0c8d3..5162a616f 100644 --- a/courses/fundamentals_of_ada/spec_890_ada_text_io.rst +++ b/courses/fundamentals_of_ada/890_ada_text_io.rst @@ -288,7 +288,7 @@ Ada.IO_Exceptions Lab ======== -.. include:: labs/spec_890_ada_text_io.lab.rst +.. include:: labs/890_ada_text_io.lab.rst ========= Summary diff --git a/courses/fundamentals_of_ada/labs/spec_890_ada_text_io.lab.rst b/courses/fundamentals_of_ada/labs/890_ada_text_io.lab.rst similarity index 88% rename from courses/fundamentals_of_ada/labs/spec_890_ada_text_io.lab.rst rename to courses/fundamentals_of_ada/labs/890_ada_text_io.lab.rst index d802d71a7..970746fcf 100644 --- a/courses/fundamentals_of_ada/labs/spec_890_ada_text_io.lab.rst +++ b/courses/fundamentals_of_ada/labs/890_ada_text_io.lab.rst @@ -25,5 +25,5 @@ Ada.Text_IO Lab Ada.Text_IO Lab Solution ---------------------------------------------- -.. container:: source_include labs/answers/spec_890_ada_text_io.txt :code:Ada :number-lines:1 +.. container:: source_include labs/answers/890_ada_text_io.txt :code:Ada :number-lines:1 diff --git a/courses/fundamentals_of_ada/labs/answers/spec_890_ada_text_io.txt b/courses/fundamentals_of_ada/labs/answers/890_ada_text_io.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/spec_890_ada_text_io.txt rename to courses/fundamentals_of_ada/labs/answers/890_ada_text_io.txt diff --git a/courses/fundamentals_of_ada/labs/answers/ada95/spec_890_ada_text_io.txt b/courses/fundamentals_of_ada/labs/answers/ada95/890_ada_text_io.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/ada95/spec_890_ada_text_io.txt rename to courses/fundamentals_of_ada/labs/answers/ada95/890_ada_text_io.txt From 078d8cb821faf6728796c5ad7a3038b777d67611 Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 12:01:39 -0500 Subject: [PATCH 02/11] Rename spec_891_ada_characters 891_ada_characters --- .../{spec_891_ada_characters.rst => 891_ada_characters.rst} | 2 +- ...ec_891_ada_characters.lab.rst => 891_ada_characters.lab.rst} | 2 +- .../{spec_891_ada_characters.txt => 891_ada_characters.txt} | 0 .../{spec_891_ada_characters => 891_ada_characters}/default.gpr | 0 .../{spec_891_ada_characters => 891_ada_characters}/main.adb | 0 5 files changed, 2 insertions(+), 2 deletions(-) rename courses/fundamentals_of_ada/{spec_891_ada_characters.rst => 891_ada_characters.rst} (99%) rename courses/fundamentals_of_ada/labs/{spec_891_ada_characters.lab.rst => 891_ada_characters.lab.rst} (86%) rename courses/fundamentals_of_ada/labs/answers/{spec_891_ada_characters.txt => 891_ada_characters.txt} (100%) rename courses/fundamentals_of_ada/labs/prompts/{spec_891_ada_characters => 891_ada_characters}/default.gpr (100%) rename courses/fundamentals_of_ada/labs/prompts/{spec_891_ada_characters => 891_ada_characters}/main.adb (100%) diff --git a/courses/fundamentals_of_ada/spec_891_ada_characters.rst b/courses/fundamentals_of_ada/891_ada_characters.rst similarity index 99% rename from courses/fundamentals_of_ada/spec_891_ada_characters.rst rename to courses/fundamentals_of_ada/891_ada_characters.rst index 6282b9288..c97bb1186 100644 --- a/courses/fundamentals_of_ada/spec_891_ada_characters.rst +++ b/courses/fundamentals_of_ada/891_ada_characters.rst @@ -163,7 +163,7 @@ Character Transformation Lab ======== -.. include:: labs/spec_891_ada_characters.lab.rst +.. include:: labs/891_ada_characters.lab.rst ========= Summary diff --git a/courses/fundamentals_of_ada/labs/spec_891_ada_characters.lab.rst b/courses/fundamentals_of_ada/labs/891_ada_characters.lab.rst similarity index 86% rename from courses/fundamentals_of_ada/labs/spec_891_ada_characters.lab.rst rename to courses/fundamentals_of_ada/labs/891_ada_characters.lab.rst index fc51f1ad7..dfb73dcb9 100644 --- a/courses/fundamentals_of_ada/labs/spec_891_ada_characters.lab.rst +++ b/courses/fundamentals_of_ada/labs/891_ada_characters.lab.rst @@ -17,5 +17,5 @@ Ada.Characters Lab Ada.Characters Lab Solution ----------------------------- -.. container:: source_include labs/answers/spec_891_ada_characters.txt :code:Ada :number-lines:1 +.. container:: source_include labs/answers/891_ada_characters.txt :code:Ada :number-lines:1 diff --git a/courses/fundamentals_of_ada/labs/answers/spec_891_ada_characters.txt b/courses/fundamentals_of_ada/labs/answers/891_ada_characters.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/spec_891_ada_characters.txt rename to courses/fundamentals_of_ada/labs/answers/891_ada_characters.txt diff --git a/courses/fundamentals_of_ada/labs/prompts/spec_891_ada_characters/default.gpr b/courses/fundamentals_of_ada/labs/prompts/891_ada_characters/default.gpr similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/spec_891_ada_characters/default.gpr rename to courses/fundamentals_of_ada/labs/prompts/891_ada_characters/default.gpr diff --git a/courses/fundamentals_of_ada/labs/prompts/spec_891_ada_characters/main.adb b/courses/fundamentals_of_ada/labs/prompts/891_ada_characters/main.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/spec_891_ada_characters/main.adb rename to courses/fundamentals_of_ada/labs/prompts/891_ada_characters/main.adb From 9cf15301c90aafa1abc855c3e7debafae1e83d97 Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 12:04:33 -0500 Subject: [PATCH 03/11] Rename spec_892_ada_strings to 892_ada_strings --- .../{spec_892_ada_strings.rst => 892_ada_strings.rst} | 2 +- .../{spec_892_ada_strings.lab.rst => 892_ada_strings.lab.rst} | 2 +- .../answers/{spec_892_ada_strings.txt => 892_ada_strings.txt} | 0 .../{spec_892_ada_strings => 892_ada_strings}/default.gpr | 0 .../prompts/{spec_892_ada_strings => 892_ada_strings}/main.adb | 0 5 files changed, 2 insertions(+), 2 deletions(-) rename courses/fundamentals_of_ada/{spec_892_ada_strings.rst => 892_ada_strings.rst} (99%) rename courses/fundamentals_of_ada/labs/{spec_892_ada_strings.lab.rst => 892_ada_strings.lab.rst} (89%) rename courses/fundamentals_of_ada/labs/answers/{spec_892_ada_strings.txt => 892_ada_strings.txt} (100%) rename courses/fundamentals_of_ada/labs/prompts/{spec_892_ada_strings => 892_ada_strings}/default.gpr (100%) rename courses/fundamentals_of_ada/labs/prompts/{spec_892_ada_strings => 892_ada_strings}/main.adb (100%) diff --git a/courses/fundamentals_of_ada/spec_892_ada_strings.rst b/courses/fundamentals_of_ada/892_ada_strings.rst similarity index 99% rename from courses/fundamentals_of_ada/spec_892_ada_strings.rst rename to courses/fundamentals_of_ada/892_ada_strings.rst index f4d7a8a42..36b0969f4 100644 --- a/courses/fundamentals_of_ada/spec_892_ada_strings.rst +++ b/courses/fundamentals_of_ada/892_ada_strings.rst @@ -260,7 +260,7 @@ Unique Subprograms Lab ======== -.. include:: labs/spec_892_ada_strings.lab.rst +.. include:: labs/892_ada_strings.lab.rst ========= Summary diff --git a/courses/fundamentals_of_ada/labs/spec_892_ada_strings.lab.rst b/courses/fundamentals_of_ada/labs/892_ada_strings.lab.rst similarity index 89% rename from courses/fundamentals_of_ada/labs/spec_892_ada_strings.lab.rst rename to courses/fundamentals_of_ada/labs/892_ada_strings.lab.rst index c49936062..ecdeafdd5 100644 --- a/courses/fundamentals_of_ada/labs/spec_892_ada_strings.lab.rst +++ b/courses/fundamentals_of_ada/labs/892_ada_strings.lab.rst @@ -26,7 +26,7 @@ Ada.Strings Lab Ada.Strings Lab Solution (Declarations) ----------------------------------------- -.. container:: source_include labs/answers/spec_892_ada_strings.txt :start-after:--declarations --:end-before:--declarations :code:Ada :number-lines:1 +.. container:: source_include labs/answers/892_ada_strings.txt :start-after:--declarations --:end-before:--declarations :code:Ada :number-lines:1 --------------------------------- Ada.Strings Lab Solution (Main) diff --git a/courses/fundamentals_of_ada/labs/answers/spec_892_ada_strings.txt b/courses/fundamentals_of_ada/labs/answers/892_ada_strings.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/spec_892_ada_strings.txt rename to courses/fundamentals_of_ada/labs/answers/892_ada_strings.txt diff --git a/courses/fundamentals_of_ada/labs/prompts/spec_892_ada_strings/default.gpr b/courses/fundamentals_of_ada/labs/prompts/892_ada_strings/default.gpr similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/spec_892_ada_strings/default.gpr rename to courses/fundamentals_of_ada/labs/prompts/892_ada_strings/default.gpr diff --git a/courses/fundamentals_of_ada/labs/prompts/spec_892_ada_strings/main.adb b/courses/fundamentals_of_ada/labs/prompts/892_ada_strings/main.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/spec_892_ada_strings/main.adb rename to courses/fundamentals_of_ada/labs/prompts/892_ada_strings/main.adb From 0f8e3faa9092f9e2e97d775d47e9b1358e016cb6 Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 12:07:55 -0500 Subject: [PATCH 04/11] Rename spec_893_ada_numerics to 893_ada_numerics --- .../{spec_893_ada_numerics.rst => 893_ada_numerics.rst} | 2 +- .../{spec_893_ada_numerics.lab.rst => 893_ada_numerics.lab.rst} | 2 +- .../answers/{spec_893_ada_numerics.txt => 893_ada_numerics.txt} | 0 .../{spec_893_ada_numerics => 893_ada_numerics}/default.gpr | 0 .../{spec_893_ada_numerics => 893_ada_numerics}/main.adb | 0 5 files changed, 2 insertions(+), 2 deletions(-) rename courses/fundamentals_of_ada/{spec_893_ada_numerics.rst => 893_ada_numerics.rst} (99%) rename courses/fundamentals_of_ada/labs/{spec_893_ada_numerics.lab.rst => 893_ada_numerics.lab.rst} (90%) rename courses/fundamentals_of_ada/labs/answers/{spec_893_ada_numerics.txt => 893_ada_numerics.txt} (100%) rename courses/fundamentals_of_ada/labs/prompts/{spec_893_ada_numerics => 893_ada_numerics}/default.gpr (100%) rename courses/fundamentals_of_ada/labs/prompts/{spec_893_ada_numerics => 893_ada_numerics}/main.adb (100%) diff --git a/courses/fundamentals_of_ada/spec_893_ada_numerics.rst b/courses/fundamentals_of_ada/893_ada_numerics.rst similarity index 99% rename from courses/fundamentals_of_ada/spec_893_ada_numerics.rst rename to courses/fundamentals_of_ada/893_ada_numerics.rst index 7165f1fae..fc33e04c0 100644 --- a/courses/fundamentals_of_ada/spec_893_ada_numerics.rst +++ b/courses/fundamentals_of_ada/893_ada_numerics.rst @@ -216,7 +216,7 @@ Randon Number Usage Lab ======== -.. include:: labs/spec_893_ada_numerics.lab.rst +.. include:: labs/893_ada_numerics.lab.rst ========= Summary diff --git a/courses/fundamentals_of_ada/labs/spec_893_ada_numerics.lab.rst b/courses/fundamentals_of_ada/labs/893_ada_numerics.lab.rst similarity index 90% rename from courses/fundamentals_of_ada/labs/spec_893_ada_numerics.lab.rst rename to courses/fundamentals_of_ada/labs/893_ada_numerics.lab.rst index 90e78a666..5814522ca 100644 --- a/courses/fundamentals_of_ada/labs/spec_893_ada_numerics.lab.rst +++ b/courses/fundamentals_of_ada/labs/893_ada_numerics.lab.rst @@ -34,5 +34,5 @@ Ada.Numerics Lab Ada.Numerics Lab Solution ---------------------------------------------- -.. container:: source_include labs/answers/spec_893_ada_numerics.txt :code:Ada :number-lines:1 +.. container:: source_include labs/answers/893_ada_numerics.txt :code:Ada :number-lines:1 diff --git a/courses/fundamentals_of_ada/labs/answers/spec_893_ada_numerics.txt b/courses/fundamentals_of_ada/labs/answers/893_ada_numerics.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/spec_893_ada_numerics.txt rename to courses/fundamentals_of_ada/labs/answers/893_ada_numerics.txt diff --git a/courses/fundamentals_of_ada/labs/prompts/spec_893_ada_numerics/default.gpr b/courses/fundamentals_of_ada/labs/prompts/893_ada_numerics/default.gpr similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/spec_893_ada_numerics/default.gpr rename to courses/fundamentals_of_ada/labs/prompts/893_ada_numerics/default.gpr diff --git a/courses/fundamentals_of_ada/labs/prompts/spec_893_ada_numerics/main.adb b/courses/fundamentals_of_ada/labs/prompts/893_ada_numerics/main.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/spec_893_ada_numerics/main.adb rename to courses/fundamentals_of_ada/labs/prompts/893_ada_numerics/main.adb From 5ad1818dede06cf051a72f4a2ddc302f5ce8059a Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 12:08:48 -0500 Subject: [PATCH 05/11] Remove unused module --- .../915_predefined_libraries.rst | 165 ------------------ 1 file changed, 165 deletions(-) delete mode 100644 courses/fundamentals_of_ada/915_predefined_libraries.rst diff --git a/courses/fundamentals_of_ada/915_predefined_libraries.rst b/courses/fundamentals_of_ada/915_predefined_libraries.rst deleted file mode 100644 index 4b7d1faba..000000000 --- a/courses/fundamentals_of_ada/915_predefined_libraries.rst +++ /dev/null @@ -1,165 +0,0 @@ -****************************** -Annex - Predefined Libraries -****************************** - -.. container:: PRELUDE BEGIN - -.. container:: PRELUDE ROLES - -.. role:: ada(code) - :language: Ada - -.. role:: C(code) - :language: C - -.. role:: cpp(code) - :language: C++ - -.. container:: PRELUDE SYMBOLS - -.. |rightarrow| replace:: :math:`\rightarrow` -.. |forall| replace:: :math:`\forall` -.. |exists| replace:: :math:`\exists` -.. |equivalent| replace:: :math:`\iff` -.. |le| replace:: :math:`\le` -.. |ge| replace:: :math:`\ge` -.. |lt| replace:: :math:`<` -.. |gt| replace:: :math:`>` -.. |checkmark| replace:: :math:`\checkmark` - -.. container:: PRELUDE REQUIRES - -.. container:: PRELUDE PROVIDES - -.. container:: PRELUDE END - -------------------------- -Ada Top-Level Namespace -------------------------- - -* Top-level language-defined packages - - - Standard - - Ada - - Interfaces - - System - -* Implementations can add top-level units - - - GNAT - -* Binding generators and support for inter-language interfacing can make libraries in other languages accessible to Ada and vice versa -* Full hierarchy (language-defined and GNAT) is browsable from :toolname:`GNAT Studio` Help menu - ---------------------- -Ada.* Hierarchy (1) ---------------------- - -* Character Handling - - - `Ada.Characters` - - `Ada.Wide_Characters` - - `Ada.Wide_Wide_Characters` - -* String Handling - - - `Ada.Strings` - - + Fixed-length, bounded-length, and unbounded-length strings - + Sets and mappings - + Hashing, comparison and encoding - + Support for `String`, `Wide_String`, `Wide_Wide_String` - -* Numerics - - - `Ada.Numerics` - - `Ada.Numerics.Generic_Elementary_Functions` - - `Ada.Numerics.Float_Random` - ---------------------- -Ada.* Hierarchy (2) ---------------------- - -* Input/Output - - - `Ada.Sequential_IO` - - `Ada.Direct_IO` - - `Ada.Storage_IO` - -* `Ada.IO_Exceptions` -* Text (Graphical Character) I/O - - - `Ada.Text_IO` - - `Ada.Wide_Text_IO` - - `Ada.Wide_Wide_Text_IO` - -* Execution Environment Interfacing - - - `Ada.Command_Line` - - `Ada.Directories` - - `Ada.Environment_Variables` - ---------------------- -Ada.* Hierarchy (3) ---------------------- - -* Containers - - - `Ada.Containers` - -* Internationalization - - - `Ada.Locales` - -* Many predefined units are intrinsic to the core language, including: - - - `Ada.Exceptions` - - `Ada.Iterator_Interfaces` - - `Ada.Finalization` - - `Ada.Tags` - - `Ada.Streams` - - `Ada.Assertions` - -* Other predefined units are defined in Annex B (*Interfacing to Other Languages*) and in the **Specialized Needs Annexes** - ----------------------- -Interfaces Hierarchy ----------------------- - -* Interfaces - - - Contains standardized numeric types and operators - - + Sized numbers (e.g. `Integer_16`, `Unsigned_64`) - + Shift functions - + Rotation functions - -* Language-interfaces - - - `Interfaces.C` - - + `Interfaces.C.Extensions` - + `Interfaces.C.Pointers` - + `Interfaces.C_Streams` - + `Interfaces.C.Strings` - - - `Interfaces.COBOL` - - `Interfaces.Fortran` - -* `Interfaces.Packed_Decimal` - - - For converting to IBM packed decimal format - ------------------- -System Hierarchy ------------------- - -* Typical System Packages - - - `System` - - `System.Address_Operations` - - `System.Address_to_Access_Conversions` - -* Hundreds of other packages for standardizing interaction with environment - - - Many are compiler-specific From 4a949ad972dc1d7fe8b9fcd3705225145705807a Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 12:24:04 -0500 Subject: [PATCH 06/11] Rename adv_120_advanced_privacy to 290_advanced_data_hiding --- ..._advanced_privacy.rst => 290_advanced_data_hiding.rst} | 4 ++-- courses/fundamentals_of_ada/advanced.txt | 2 +- .../capabilities_and_constraints.adb | 0 .../capabilities_and_constraints/obj/.empty | 0 .../capabilities_and_constraints/prj.gpr | 0 .../capabilities_and_constraints/src/main.adb | 0 ...d_privacy.lab.rst => 290_advanced_data_hiding.lab.rst} | 8 ++++---- ..._advanced_privacy.txt => 290_advanced_data_hiding.txt} | 0 ..._advanced_privacy.txt => 290_advanced_data_hiding.txt} | 0 .../default.gpr | 0 .../main.adb | 0 .../messages-list_types-operations.adb | 0 .../messages-list_types-operations.ads | 0 .../messages-list_types.ads | 0 .../messages.adb | 0 .../messages.ads | 0 16 files changed, 7 insertions(+), 7 deletions(-) rename courses/fundamentals_of_ada/{adv_120_advanced_privacy.rst => 290_advanced_data_hiding.rst} (99%) rename courses/fundamentals_of_ada/examples/{adv_120_advanced_privacy => 290_advanced_data_hiding}/capabilities_and_constraints.adb (100%) rename courses/fundamentals_of_ada/examples/{adv_120_advanced_privacy => 290_advanced_data_hiding}/capabilities_and_constraints/obj/.empty (100%) rename courses/fundamentals_of_ada/examples/{adv_120_advanced_privacy => 290_advanced_data_hiding}/capabilities_and_constraints/prj.gpr (100%) rename courses/fundamentals_of_ada/examples/{adv_120_advanced_privacy => 290_advanced_data_hiding}/capabilities_and_constraints/src/main.adb (100%) rename courses/fundamentals_of_ada/labs/{adv_120_advanced_privacy.lab.rst => 290_advanced_data_hiding.lab.rst} (75%) rename courses/fundamentals_of_ada/labs/answers/{adv_120_advanced_privacy.txt => 290_advanced_data_hiding.txt} (100%) rename courses/fundamentals_of_ada/labs/answers/ada95/{adv_120_advanced_privacy.txt => 290_advanced_data_hiding.txt} (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_120_advanced_privacy => 290_advanced_data_hiding}/default.gpr (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_120_advanced_privacy => 290_advanced_data_hiding}/main.adb (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_120_advanced_privacy => 290_advanced_data_hiding}/messages-list_types-operations.adb (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_120_advanced_privacy => 290_advanced_data_hiding}/messages-list_types-operations.ads (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_120_advanced_privacy => 290_advanced_data_hiding}/messages-list_types.ads (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_120_advanced_privacy => 290_advanced_data_hiding}/messages.adb (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_120_advanced_privacy => 290_advanced_data_hiding}/messages.ads (100%) diff --git a/courses/fundamentals_of_ada/adv_120_advanced_privacy.rst b/courses/fundamentals_of_ada/290_advanced_data_hiding.rst similarity index 99% rename from courses/fundamentals_of_ada/adv_120_advanced_privacy.rst rename to courses/fundamentals_of_ada/290_advanced_data_hiding.rst index 50ef49ea2..cc7e4fb23 100644 --- a/courses/fundamentals_of_ada/adv_120_advanced_privacy.rst +++ b/courses/fundamentals_of_ada/290_advanced_data_hiding.rst @@ -66,7 +66,7 @@ Partial Vs Full View of a Type - Partial view may declare supplementary constraint that the full view doesn't have -.. include:: examples/adv_120_advanced_privacy/capabilities_and_constraints.adb +.. include:: examples/290_advanced_data_hiding/capabilities_and_constraints.adb :code: Ada --------------- @@ -505,7 +505,7 @@ Children "Inherit" From Private Properties of Parent Lab ======== -.. include:: labs/adv_120_advanced_privacy.lab.rst +.. include:: labs/290_advanced_data_hiding.lab.rst ========= Summary diff --git a/courses/fundamentals_of_ada/advanced.txt b/courses/fundamentals_of_ada/advanced.txt index 3b61c929b..715e7b781 100644 --- a/courses/fundamentals_of_ada/advanced.txt +++ b/courses/fundamentals_of_ada/advanced.txt @@ -4,7 +4,7 @@ 065_discriminated_records.rst 080_expressions-with_quantified.rst 120_limited_types.rst -adv_120_advanced_privacy.rst +290_advanced_data_hiding.rst 140_access_types-advanced.rst 160_genericity.rst 170_tagged_derivation.rst diff --git a/courses/fundamentals_of_ada/examples/adv_120_advanced_privacy/capabilities_and_constraints.adb b/courses/fundamentals_of_ada/examples/290_advanced_data_hiding/capabilities_and_constraints.adb similarity index 100% rename from courses/fundamentals_of_ada/examples/adv_120_advanced_privacy/capabilities_and_constraints.adb rename to courses/fundamentals_of_ada/examples/290_advanced_data_hiding/capabilities_and_constraints.adb diff --git a/courses/fundamentals_of_ada/examples/adv_120_advanced_privacy/capabilities_and_constraints/obj/.empty b/courses/fundamentals_of_ada/examples/290_advanced_data_hiding/capabilities_and_constraints/obj/.empty similarity index 100% rename from courses/fundamentals_of_ada/examples/adv_120_advanced_privacy/capabilities_and_constraints/obj/.empty rename to courses/fundamentals_of_ada/examples/290_advanced_data_hiding/capabilities_and_constraints/obj/.empty diff --git a/courses/fundamentals_of_ada/examples/adv_120_advanced_privacy/capabilities_and_constraints/prj.gpr b/courses/fundamentals_of_ada/examples/290_advanced_data_hiding/capabilities_and_constraints/prj.gpr similarity index 100% rename from courses/fundamentals_of_ada/examples/adv_120_advanced_privacy/capabilities_and_constraints/prj.gpr rename to courses/fundamentals_of_ada/examples/290_advanced_data_hiding/capabilities_and_constraints/prj.gpr diff --git a/courses/fundamentals_of_ada/examples/adv_120_advanced_privacy/capabilities_and_constraints/src/main.adb b/courses/fundamentals_of_ada/examples/290_advanced_data_hiding/capabilities_and_constraints/src/main.adb similarity index 100% rename from courses/fundamentals_of_ada/examples/adv_120_advanced_privacy/capabilities_and_constraints/src/main.adb rename to courses/fundamentals_of_ada/examples/290_advanced_data_hiding/capabilities_and_constraints/src/main.adb diff --git a/courses/fundamentals_of_ada/labs/adv_120_advanced_privacy.lab.rst b/courses/fundamentals_of_ada/labs/290_advanced_data_hiding.lab.rst similarity index 75% rename from courses/fundamentals_of_ada/labs/adv_120_advanced_privacy.lab.rst rename to courses/fundamentals_of_ada/labs/290_advanced_data_hiding.lab.rst index 2ea7e29cf..c19c2c353 100644 --- a/courses/fundamentals_of_ada/labs/adv_120_advanced_privacy.lab.rst +++ b/courses/fundamentals_of_ada/labs/290_advanced_data_hiding.lab.rst @@ -28,23 +28,23 @@ Advanced Privacy Lab Advanced Privacy Lab Solution - Message Type ---------------------------------------------- -.. container:: source_include labs/answers/adv_120_advanced_privacy.txt :start-after:--Messages :end-before:--Messages :code:Ada :number-lines:1 +.. container:: source_include labs/answers/290_advanced_data_hiding.txt :start-after:--Messages :end-before:--Messages :code:Ada :number-lines:1 --------------------------------------------------- Advanced Privacy Lab Solution - Message List Type --------------------------------------------------- -.. container:: source_include labs/answers/adv_120_advanced_privacy.txt :start-after:--List_Types :end-before:--List_Types :code:Ada :number-lines:1 +.. container:: source_include labs/answers/290_advanced_data_hiding.txt :start-after:--List_Types :end-before:--List_Types :code:Ada :number-lines:1 --------------------------------------------------------- Advanced Privacy Lab Solution - Message List Operations --------------------------------------------------------- -.. container:: source_include labs/answers/adv_120_advanced_privacy.txt :start-after:--Operations :end-before:--Operations :code:Ada :number-lines:1 +.. container:: source_include labs/answers/290_advanced_data_hiding.txt :start-after:--Operations :end-before:--Operations :code:Ada :number-lines:1 -------------------------------------- Advanced Privacy Lab Solution - Main -------------------------------------- -.. container:: source_include labs/answers/adv_120_advanced_privacy.txt :start-after:--Main :end-before:--Main :code:Ada :number-lines:1 +.. container:: source_include labs/answers/290_advanced_data_hiding.txt :start-after:--Main :end-before:--Main :code:Ada :number-lines:1 diff --git a/courses/fundamentals_of_ada/labs/answers/adv_120_advanced_privacy.txt b/courses/fundamentals_of_ada/labs/answers/290_advanced_data_hiding.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/adv_120_advanced_privacy.txt rename to courses/fundamentals_of_ada/labs/answers/290_advanced_data_hiding.txt diff --git a/courses/fundamentals_of_ada/labs/answers/ada95/adv_120_advanced_privacy.txt b/courses/fundamentals_of_ada/labs/answers/ada95/290_advanced_data_hiding.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/ada95/adv_120_advanced_privacy.txt rename to courses/fundamentals_of_ada/labs/answers/ada95/290_advanced_data_hiding.txt diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/default.gpr b/courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/default.gpr similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/default.gpr rename to courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/default.gpr diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/main.adb b/courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/main.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/main.adb rename to courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/main.adb diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages-list_types-operations.adb b/courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages-list_types-operations.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages-list_types-operations.adb rename to courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages-list_types-operations.adb diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages-list_types-operations.ads b/courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages-list_types-operations.ads similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages-list_types-operations.ads rename to courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages-list_types-operations.ads diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages-list_types.ads b/courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages-list_types.ads similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages-list_types.ads rename to courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages-list_types.ads diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages.adb b/courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages.adb rename to courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages.adb diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages.ads b/courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages.ads similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_120_advanced_privacy/messages.ads rename to courses/fundamentals_of_ada/labs/prompts/290_advanced_data_hiding/messages.ads From 551a7a77cabfd49583b64b4220991b319ac9f9da Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 14:09:11 -0500 Subject: [PATCH 07/11] Rename adv_250_containers to 894_ada_containers --- .../{adv_250_containers.rst => 894_ada_containers.rst} | 2 +- ..._250_containers.lab.rst => 894_ada_containers.lab.rst} | 8 ++++---- .../{adv_250_containers.txt => 894_ada_containers.txt} | 0 .../city_trivia.adb | 0 .../city_trivia.ads | 0 .../default.gpr | 0 .../{adv_250_containers => 894_ada_containers}/main.adb | 0 7 files changed, 5 insertions(+), 5 deletions(-) rename courses/fundamentals_of_ada/{adv_250_containers.rst => 894_ada_containers.rst} (99%) rename courses/fundamentals_of_ada/labs/{adv_250_containers.lab.rst => 894_ada_containers.lab.rst} (83%) rename courses/fundamentals_of_ada/labs/answers/{adv_250_containers.txt => 894_ada_containers.txt} (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_250_containers => 894_ada_containers}/city_trivia.adb (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_250_containers => 894_ada_containers}/city_trivia.ads (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_250_containers => 894_ada_containers}/default.gpr (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_250_containers => 894_ada_containers}/main.adb (100%) diff --git a/courses/fundamentals_of_ada/adv_250_containers.rst b/courses/fundamentals_of_ada/894_ada_containers.rst similarity index 99% rename from courses/fundamentals_of_ada/adv_250_containers.rst rename to courses/fundamentals_of_ada/894_ada_containers.rst index 0bc4726f9..e50ed9b6e 100644 --- a/courses/fundamentals_of_ada/adv_250_containers.rst +++ b/courses/fundamentals_of_ada/894_ada_containers.rst @@ -362,7 +362,7 @@ Standard ``Ada.Containers`` Packages Lab ======== -.. include:: labs/adv_250_containers.lab.rst +.. include:: labs/894_ada_containers.lab.rst ========= Summary diff --git a/courses/fundamentals_of_ada/labs/adv_250_containers.lab.rst b/courses/fundamentals_of_ada/labs/894_ada_containers.lab.rst similarity index 83% rename from courses/fundamentals_of_ada/labs/adv_250_containers.lab.rst rename to courses/fundamentals_of_ada/labs/894_ada_containers.lab.rst index 43ecfa282..c17dedfc2 100644 --- a/courses/fundamentals_of_ada/labs/adv_250_containers.lab.rst +++ b/courses/fundamentals_of_ada/labs/894_ada_containers.lab.rst @@ -24,22 +24,22 @@ Containers Lab Containers Lab Solution - Database (Spec) ------------------------------------------- -.. container:: source_include labs/answers/adv_250_containers.txt :start-after:--Database_Spec :end-before:--Database_Spec :code:Ada :number-lines:1 +.. container:: source_include labs/answers/894_ada_containers.txt :start-after:--Database_Spec :end-before:--Database_Spec :code:Ada :number-lines:1 -------------------------------------------------- Containers Lab Solution - Database (Body 1/2) -------------------------------------------------- -.. container:: source_include labs/answers/adv_250_containers.txt :start-after:--Database_Body_1 :end-before:--Database_Body_1 :code:Ada :number-lines:1 +.. container:: source_include labs/answers/894_ada_containers.txt :start-after:--Database_Body_1 :end-before:--Database_Body_1 :code:Ada :number-lines:1 ---------------------------------------------- Containers Lab Solution - Database (Body 2/2) ---------------------------------------------- -.. container:: source_include labs/answers/adv_250_containers.txt :start-after:--Database_Body_2 :end-before:--Database_Body_2 :code:Ada :number-lines:1 +.. container:: source_include labs/answers/894_ada_containers.txt :start-after:--Database_Body_2 :end-before:--Database_Body_2 :code:Ada :number-lines:1 -------------------------------- Containers Lab Solution - Main -------------------------------- -.. container:: source_include labs/answers/adv_250_containers.txt :start-after:--Main :end-before:--Main :code:Ada :number-lines:1 +.. container:: source_include labs/answers/894_ada_containers.txt :start-after:--Main :end-before:--Main :code:Ada :number-lines:1 diff --git a/courses/fundamentals_of_ada/labs/answers/adv_250_containers.txt b/courses/fundamentals_of_ada/labs/answers/894_ada_containers.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/adv_250_containers.txt rename to courses/fundamentals_of_ada/labs/answers/894_ada_containers.txt diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_250_containers/city_trivia.adb b/courses/fundamentals_of_ada/labs/prompts/894_ada_containers/city_trivia.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_250_containers/city_trivia.adb rename to courses/fundamentals_of_ada/labs/prompts/894_ada_containers/city_trivia.adb diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_250_containers/city_trivia.ads b/courses/fundamentals_of_ada/labs/prompts/894_ada_containers/city_trivia.ads similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_250_containers/city_trivia.ads rename to courses/fundamentals_of_ada/labs/prompts/894_ada_containers/city_trivia.ads diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_250_containers/default.gpr b/courses/fundamentals_of_ada/labs/prompts/894_ada_containers/default.gpr similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_250_containers/default.gpr rename to courses/fundamentals_of_ada/labs/prompts/894_ada_containers/default.gpr diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_250_containers/main.adb b/courses/fundamentals_of_ada/labs/prompts/894_ada_containers/main.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_250_containers/main.adb rename to courses/fundamentals_of_ada/labs/prompts/894_ada_containers/main.adb From b2813ea51ec8f010cc6b2bab38f0327005aa4703 Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 14:12:14 -0500 Subject: [PATCH 08/11] Rename adv_260_controlled_types to 260_controlled_types --- ...dv_260_controlled_types.rst => 260_controlled_types.rst} | 2 +- ...ontrolled_types.lab.rst => 260_controlled_types.lab.rst} | 6 +++--- ...dv_260_controlled_types.txt => 260_controlled_types.txt} | 0 .../default.gpr | 0 .../keys_pkg.adb | 0 .../keys_pkg.ads | 0 .../main.adb | 0 7 files changed, 4 insertions(+), 4 deletions(-) rename courses/fundamentals_of_ada/{adv_260_controlled_types.rst => 260_controlled_types.rst} (99%) rename courses/fundamentals_of_ada/labs/{adv_260_controlled_types.lab.rst => 260_controlled_types.lab.rst} (72%) rename courses/fundamentals_of_ada/labs/answers/{adv_260_controlled_types.txt => 260_controlled_types.txt} (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_260_controlled_types => 260_controlled_types}/default.gpr (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_260_controlled_types => 260_controlled_types}/keys_pkg.adb (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_260_controlled_types => 260_controlled_types}/keys_pkg.ads (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_260_controlled_types => 260_controlled_types}/main.adb (100%) diff --git a/courses/fundamentals_of_ada/adv_260_controlled_types.rst b/courses/fundamentals_of_ada/260_controlled_types.rst similarity index 99% rename from courses/fundamentals_of_ada/adv_260_controlled_types.rst rename to courses/fundamentals_of_ada/260_controlled_types.rst index a1be24fe7..e65b49b63 100644 --- a/courses/fundamentals_of_ada/adv_260_controlled_types.rst +++ b/courses/fundamentals_of_ada/260_controlled_types.rst @@ -263,7 +263,7 @@ Finalizable Aspect Lab ======== -.. include:: labs/adv_260_controlled_types.lab.rst +.. include:: labs/260_controlled_types.lab.rst ========= Summary diff --git a/courses/fundamentals_of_ada/labs/adv_260_controlled_types.lab.rst b/courses/fundamentals_of_ada/labs/260_controlled_types.lab.rst similarity index 72% rename from courses/fundamentals_of_ada/labs/adv_260_controlled_types.lab.rst rename to courses/fundamentals_of_ada/labs/260_controlled_types.lab.rst index 844d1e2ef..c22500003 100644 --- a/courses/fundamentals_of_ada/labs/adv_260_controlled_types.lab.rst +++ b/courses/fundamentals_of_ada/labs/260_controlled_types.lab.rst @@ -28,16 +28,16 @@ Controlled Types Lab Controlled Types Lab Solution - Keys (Spec) ---------------------------------------------- -.. container:: source_include labs/answers/adv_260_controlled_types.txt :start-after:--Spec :end-before:--Spec :code:Ada :number-lines:1 +.. container:: source_include labs/answers/260_controlled_types.txt :start-after:--Spec :end-before:--Spec :code:Ada :number-lines:1 ------------------------------------------------ Controlled Types Lab Solution - Keys (Body) ------------------------------------------------ -.. container:: source_include labs/answers/adv_260_controlled_types.txt :start-after:--Body :end-before:--Body :code:Ada :number-lines:1 +.. container:: source_include labs/answers/260_controlled_types.txt :start-after:--Body :end-before:--Body :code:Ada :number-lines:1 ---------------------------------------------- Controlled Types Lab Solution - Main ---------------------------------------------- -.. container:: source_include labs/answers/adv_260_controlled_types.txt :start-after:--Main :end-before:--Main :code:Ada :number-lines:1 +.. container:: source_include labs/answers/260_controlled_types.txt :start-after:--Main :end-before:--Main :code:Ada :number-lines:1 diff --git a/courses/fundamentals_of_ada/labs/answers/adv_260_controlled_types.txt b/courses/fundamentals_of_ada/labs/answers/260_controlled_types.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/adv_260_controlled_types.txt rename to courses/fundamentals_of_ada/labs/answers/260_controlled_types.txt diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_260_controlled_types/default.gpr b/courses/fundamentals_of_ada/labs/prompts/260_controlled_types/default.gpr similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_260_controlled_types/default.gpr rename to courses/fundamentals_of_ada/labs/prompts/260_controlled_types/default.gpr diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_260_controlled_types/keys_pkg.adb b/courses/fundamentals_of_ada/labs/prompts/260_controlled_types/keys_pkg.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_260_controlled_types/keys_pkg.adb rename to courses/fundamentals_of_ada/labs/prompts/260_controlled_types/keys_pkg.adb diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_260_controlled_types/keys_pkg.ads b/courses/fundamentals_of_ada/labs/prompts/260_controlled_types/keys_pkg.ads similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_260_controlled_types/keys_pkg.ads rename to courses/fundamentals_of_ada/labs/prompts/260_controlled_types/keys_pkg.ads diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_260_controlled_types/main.adb b/courses/fundamentals_of_ada/labs/prompts/260_controlled_types/main.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_260_controlled_types/main.adb rename to courses/fundamentals_of_ada/labs/prompts/260_controlled_types/main.adb From 651887eb1f0b6961227fd8a60f09a01857a9b72d Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 14:17:52 -0500 Subject: [PATCH 09/11] Rename adv_280_low_level_programming to 280_low_level_programming --- ...programming.rst => 280_low_level_programming.rst} | 2 +- courses/fundamentals_of_ada/advanced.txt | 2 +- .../address_clauses_and_overlays.rst | 0 .../data_representation.rst | 0 ...ing.lab.rst => 280_low_level_programming.lab.rst} | 12 ++++++------ ...programming.txt => 280_low_level_programming.txt} | 0 ...programming.txt => 280_low_level_programming.txt} | 0 .../crc.adb | 0 .../crc.ads | 0 .../default.gpr | 0 .../main.adb | 0 .../messages.adb | 0 .../messages.ads | 0 13 files changed, 8 insertions(+), 8 deletions(-) rename courses/fundamentals_of_ada/{adv_280_low_level_programming.rst => 280_low_level_programming.rst} (99%) rename courses/fundamentals_of_ada/examples/{adv_280_low_level_programming => 280_low_level_programming}/address_clauses_and_overlays.rst (100%) rename courses/fundamentals_of_ada/examples/{adv_280_low_level_programming => 280_low_level_programming}/data_representation.rst (100%) rename courses/fundamentals_of_ada/labs/{adv_280_low_level_programming.lab.rst => 280_low_level_programming.lab.rst} (70%) rename courses/fundamentals_of_ada/labs/answers/{adv_280_low_level_programming.txt => 280_low_level_programming.txt} (100%) rename courses/fundamentals_of_ada/labs/answers/ada95/{adv_280_low_level_programming.txt => 280_low_level_programming.txt} (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_280_low_level_programming => 280_low_level_programming}/crc.adb (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_280_low_level_programming => 280_low_level_programming}/crc.ads (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_280_low_level_programming => 280_low_level_programming}/default.gpr (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_280_low_level_programming => 280_low_level_programming}/main.adb (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_280_low_level_programming => 280_low_level_programming}/messages.adb (100%) rename courses/fundamentals_of_ada/labs/prompts/{adv_280_low_level_programming => 280_low_level_programming}/messages.ads (100%) diff --git a/courses/fundamentals_of_ada/adv_280_low_level_programming.rst b/courses/fundamentals_of_ada/280_low_level_programming.rst similarity index 99% rename from courses/fundamentals_of_ada/adv_280_low_level_programming.rst rename to courses/fundamentals_of_ada/280_low_level_programming.rst index ca33f9e7f..1a73ea9eb 100644 --- a/courses/fundamentals_of_ada/adv_280_low_level_programming.rst +++ b/courses/fundamentals_of_ada/280_low_level_programming.rst @@ -595,7 +595,7 @@ Flat Arrays Lab ======== -.. include:: labs/adv_280_low_level_programming.lab.rst +.. include:: labs/280_low_level_programming.lab.rst ========= Summary diff --git a/courses/fundamentals_of_ada/advanced.txt b/courses/fundamentals_of_ada/advanced.txt index 715e7b781..78068a847 100644 --- a/courses/fundamentals_of_ada/advanced.txt +++ b/courses/fundamentals_of_ada/advanced.txt @@ -14,4 +14,4 @@ 240_tasking_in_depth.rst 273_subprogram_contracts.rst 276_type_contracts.rst -adv_280_low_level_programming.rst +280_low_level_programming.rst diff --git a/courses/fundamentals_of_ada/examples/adv_280_low_level_programming/address_clauses_and_overlays.rst b/courses/fundamentals_of_ada/examples/280_low_level_programming/address_clauses_and_overlays.rst similarity index 100% rename from courses/fundamentals_of_ada/examples/adv_280_low_level_programming/address_clauses_and_overlays.rst rename to courses/fundamentals_of_ada/examples/280_low_level_programming/address_clauses_and_overlays.rst diff --git a/courses/fundamentals_of_ada/examples/adv_280_low_level_programming/data_representation.rst b/courses/fundamentals_of_ada/examples/280_low_level_programming/data_representation.rst similarity index 100% rename from courses/fundamentals_of_ada/examples/adv_280_low_level_programming/data_representation.rst rename to courses/fundamentals_of_ada/examples/280_low_level_programming/data_representation.rst diff --git a/courses/fundamentals_of_ada/labs/adv_280_low_level_programming.lab.rst b/courses/fundamentals_of_ada/labs/280_low_level_programming.lab.rst similarity index 70% rename from courses/fundamentals_of_ada/labs/adv_280_low_level_programming.lab.rst rename to courses/fundamentals_of_ada/labs/280_low_level_programming.lab.rst index 97d9eb8dd..784d40092 100644 --- a/courses/fundamentals_of_ada/labs/adv_280_low_level_programming.lab.rst +++ b/courses/fundamentals_of_ada/labs/280_low_level_programming.lab.rst @@ -55,35 +55,35 @@ Hints Low Level Programming Lab Solution - CRC ------------------------------------------ -.. container:: source_include labs/answers/adv_280_low_level_programming.txt :start-after:--Crc :end-before:--Crc :code:Ada :number-lines:1 +.. container:: source_include labs/answers/280_low_level_programming.txt :start-after:--Crc :end-before:--Crc :code:Ada :number-lines:1 ------------------------------------------------------ Low Level Programming Lab Solution - Messages (Spec) ------------------------------------------------------ -.. container:: source_include labs/answers/adv_280_low_level_programming.txt :start-after:--Messages_Spec :end-before:--Messages_Spec :code:Ada :number-lines:1 +.. container:: source_include labs/answers/280_low_level_programming.txt :start-after:--Messages_Spec :end-before:--Messages_Spec :code:Ada :number-lines:1 ----------------------------------------------------- Low Level Programming Lab Solution - Main (Helpers) ----------------------------------------------------- -.. container:: source_include labs/answers/adv_280_low_level_programming.txt :start-after:--Main_Helpers :end-before:--Main_Helpers :code:Ada :number-lines:1 +.. container:: source_include labs/answers/280_low_level_programming.txt :start-after:--Main_Helpers :end-before:--Main_Helpers :code:Ada :number-lines:1 ------------------------------------------- Low Level Programming Lab Solution - Main ------------------------------------------- -.. container:: source_include labs/answers/adv_280_low_level_programming.txt :start-after:--Main_Main :end-before:--Main_Main :code:Ada :number-lines:1 +.. container:: source_include labs/answers/280_low_level_programming.txt :start-after:--Main_Main :end-before:--Main_Main :code:Ada :number-lines:1 --------------------------------------------------------- Low Level Programming Lab Solution - Messages (Helpers) --------------------------------------------------------- -.. container:: source_include labs/answers/adv_280_low_level_programming.txt :start-after:--Messages_Helpers :end-before:--Messages_Helpers :code:Ada :number-lines:1 +.. container:: source_include labs/answers/280_low_level_programming.txt :start-after:--Messages_Helpers :end-before:--Messages_Helpers :code:Ada :number-lines:1 ------------------------------------------------------ Low Level Programming Lab Solution - Messages (Body) ------------------------------------------------------ -.. container:: source_include labs/answers/adv_280_low_level_programming.txt :start-after:--Messages_Body :end-before:--Messages_Body :code:Ada :number-lines:1 +.. container:: source_include labs/answers/280_low_level_programming.txt :start-after:--Messages_Body :end-before:--Messages_Body :code:Ada :number-lines:1 diff --git a/courses/fundamentals_of_ada/labs/answers/adv_280_low_level_programming.txt b/courses/fundamentals_of_ada/labs/answers/280_low_level_programming.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/adv_280_low_level_programming.txt rename to courses/fundamentals_of_ada/labs/answers/280_low_level_programming.txt diff --git a/courses/fundamentals_of_ada/labs/answers/ada95/adv_280_low_level_programming.txt b/courses/fundamentals_of_ada/labs/answers/ada95/280_low_level_programming.txt similarity index 100% rename from courses/fundamentals_of_ada/labs/answers/ada95/adv_280_low_level_programming.txt rename to courses/fundamentals_of_ada/labs/answers/ada95/280_low_level_programming.txt diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/crc.adb b/courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/crc.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/crc.adb rename to courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/crc.adb diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/crc.ads b/courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/crc.ads similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/crc.ads rename to courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/crc.ads diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/default.gpr b/courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/default.gpr similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/default.gpr rename to courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/default.gpr diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/main.adb b/courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/main.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/main.adb rename to courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/main.adb diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/messages.adb b/courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/messages.adb similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/messages.adb rename to courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/messages.adb diff --git a/courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/messages.ads b/courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/messages.ads similarity index 100% rename from courses/fundamentals_of_ada/labs/prompts/adv_280_low_level_programming/messages.ads rename to courses/fundamentals_of_ada/labs/prompts/280_low_level_programming/messages.ads From 7da2d940196f1b86fa6251c5fd421705d421e3f3 Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 22:27:49 -0500 Subject: [PATCH 10/11] Few more renames and delete an empty directory --- ...spec_901_ada_2022_specific.rst => 901_ada_2022_specific.rst} | 0 ..._902_future_capabilities.rst => 902_future_capabilities.rst} | 0 courses/fundamentals_of_ada/chapters/README.md | 2 -- 3 files changed, 2 deletions(-) rename courses/fundamentals_of_ada/{spec_901_ada_2022_specific.rst => 901_ada_2022_specific.rst} (100%) rename courses/fundamentals_of_ada/{spec_902_future_capabilities.rst => 902_future_capabilities.rst} (100%) delete mode 100644 courses/fundamentals_of_ada/chapters/README.md diff --git a/courses/fundamentals_of_ada/spec_901_ada_2022_specific.rst b/courses/fundamentals_of_ada/901_ada_2022_specific.rst similarity index 100% rename from courses/fundamentals_of_ada/spec_901_ada_2022_specific.rst rename to courses/fundamentals_of_ada/901_ada_2022_specific.rst diff --git a/courses/fundamentals_of_ada/spec_902_future_capabilities.rst b/courses/fundamentals_of_ada/902_future_capabilities.rst similarity index 100% rename from courses/fundamentals_of_ada/spec_902_future_capabilities.rst rename to courses/fundamentals_of_ada/902_future_capabilities.rst diff --git a/courses/fundamentals_of_ada/chapters/README.md b/courses/fundamentals_of_ada/chapters/README.md deleted file mode 100644 index d9d47b252..000000000 --- a/courses/fundamentals_of_ada/chapters/README.md +++ /dev/null @@ -1,2 +0,0 @@ -This directory contains some specific chapters, which are supposed to be included into section, -depending on the need (Ada 2012...) From c2c4bc960f5d8e06e8e8556f0d6068d22c2f818b Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Thu, 19 Dec 2024 22:30:00 -0500 Subject: [PATCH 11/11] Remove extra module --- .../intro_245_ravenscar_tasking.rst | 717 ------------------ 1 file changed, 717 deletions(-) delete mode 100644 courses/fundamentals_of_ada/intro_245_ravenscar_tasking.rst diff --git a/courses/fundamentals_of_ada/intro_245_ravenscar_tasking.rst b/courses/fundamentals_of_ada/intro_245_ravenscar_tasking.rst deleted file mode 100644 index e52517e39..000000000 --- a/courses/fundamentals_of_ada/intro_245_ravenscar_tasking.rst +++ /dev/null @@ -1,717 +0,0 @@ -******************* -Ravenscar Tasking -******************* - -.. container:: PRELUDE BEGIN - -.. container:: PRELUDE ROLES - -.. role:: ada(code) - :language: Ada - -.. role:: C(code) - :language: C - -.. role:: cpp(code) - :language: C++ - -.. container:: PRELUDE SYMBOLS - -.. |rightarrow| replace:: :math:`\rightarrow` -.. |forall| replace:: :math:`\forall` -.. |exists| replace:: :math:`\exists` -.. |equivalent| replace:: :math:`\iff` -.. |le| replace:: :math:`\le` -.. |ge| replace:: :math:`\ge` -.. |lt| replace:: :math:`<` -.. |gt| replace:: :math:`>` -.. |checkmark| replace:: :math:`\checkmark` - -.. container:: PRELUDE REQUIRES - -.. container:: PRELUDE PROVIDES - -.. container:: PRELUDE END - -================ -Introduction -================ - --------------------------------- -What Is the Ravenscar Profile? --------------------------------- - -* A **subset** of the Ada tasking model - - + Defined in the RM D.13 - -* Use concurrency in embedded real-time systems - - - Verifiable - - Simple (Implemented reliably and efficiently) - -* Scheduling theory for accurate analysis of real-time behavior -* Defined to help meet **safety-critical real-time** requirements - - - Determinism - - Schedulability analysis - - Memory-boundedness - - Execution efficiency and small footprint - - Certification - -* :ada:`pragma Profile (Ravenscar)` - ------------------------------ -What Is the Jorvik profile? ------------------------------ - -* A **non-backwards compatible profile** based on Ravenscar - - + Defined in the RM D.13 (Ada 2022) - -* Removes some constraints - - - Scheduling analysis may be harder to perform - -* Subset of Ravenscar's requirements -* This class is about the more widespread Ravenscar - - + But some of Jorvik's differences are indicated - -* :ada:`pragma Profile (Jorvik)` - -------------------------- -What Are GNAT Runtimes? -------------------------- - -* The :dfn:`runtime` is an embedded library - - - Executing at run-time - - In charge of standard's library support... - - ...including tasking - -* Standard runtime - - - Full runtime support - - "Full-fledged" OS target (Linux, VxWorks...) - - Large memory footprint - - Full tasking (not shown in this class) - -* Embedded runtime - - - Baremetal and RTOS targets - - Reduced memory footprint - - Most of runtime, except I/O and networking - - Ravenscar / Jorvik tasking - -* Light runtime - - - Baremetal targets - - Very small memory footprint - - Selected, very limited, runtime - - Optional Ravenscar tasking (*Light-tasking* runtime) - ---------------- -A Simple Task ---------------- - -* Concurrent code execution via **task** -* :ada:`limited` types (No copies allowed) - - .. code:: Ada - - package P is - task type Put_T; - - T : Put_T; - end P; - - package body P is - task body Put_T is - begin - loop - delay until Clock + Milliseconds (100); - Put_Line ("T"); - end loop; - end Put_T; - end P; - --------------------------------- -Two Ada Synchronization Models --------------------------------- - -* Passive - - - **Protected objects** model - - Concurrency-safe **semantics** - -* Active - - - Rendezvous - - **Client / Server** model - -* In Ravenscar: only **passive** - -======= -Tasks -======= - ------------------- -Task Declaration ------------------- - -* Each instance of a task type is executing **concurrently** -* The **whole** tasking setup must be **static** - - - Compiler "compiles-in" the scheduling - -* Task instances must be declared at the **library level** - - - Reminder: :ada:`main` declarative part is **not** at library level - -* Body of a task must **never stop** -* Tasks should probably **yield** - - - For example with :ada:`delay until` - - Or also a **protected entry guard** (see later) - - Because of **Ravenscar scheduling** (see later) - -------------------------------------- -Ravenscar Tasks Declaration Example -------------------------------------- - -:filename:`my_tasks.ads` - -.. code:: Ada - - package My_Tasks is - task type Printer; - - P1 : Printer; - P2 : Printer; - end My_Tasks; - -:filename:`my_tasks.adb` - -.. code:: Ada - - with Ada.Text_IO; use Ada.Text_IO; - with Ada.Real_Time; use Ada.Real_Time; - - package body My_Tasks is - P3 : Printer; -- correct - - task body Printer is - Period : Time_Span := Milliseconds (100); - Next : Time := Clock + Period; - -- P : Printer -- /!\ Would be incorrect: not at library level - begin - loop - Put_Line ("loops"); - - -- Yielding - delay until Next; - Next := Next + Period; - end loop; - end Printer; - end My_Tasks; - -====== -Delays -====== - -------------- -Delay Keyword -------------- - -- :ada:`delay` keyword part of tasking -- Blocks for a time -- Absolute: Blocks until a given :ada:`Ada.Real_Time.Time` -- Relative: exists, but forbidden in Ravenscar - -.. code:: Ada - - with Ada.Real_Time; use Ada.Real_Time; - - procedure Main is - Next : Time := Clock; - begin - loop - Next := Next + Milliseconds (10); - delay until Next; - end loop; - end Main; - -=================== -Protected Objects -=================== - -------------------- -Protected Objects -------------------- - -* **Multitask-safe** accessors to get and set state -* **No** direct state manipulation -* **No** concurrent modifications -* :ada:`limited` types (No copies allowed) - -.. container:: columns - - .. container:: column - - .. code:: Ada - - protected type - Protected_Value is - procedure Set (V : Integer); - function Get return Integer; - private - Value : Integer; - end Protected_Value; - - .. container:: column - - .. code:: Ada - - protected body Protected_Value is - procedure Set (V : Integer) is - begin - Value := V; - end Set; - - function Get return Integer is - begin - return Value; - end Get; - end Protected_Value; - -. - --------------------------- -Misc: Single Declaration --------------------------- - - * Instantiate an **anonymous** task (or protected) type - * Declares an object of that type - - - Body declaration is then using the **object** name - - .. code:: Ada - - task Printer; - -.. code:: Ada - - task body Printer is - begin - loop - Put_Line ("loops"); - end loop; - end Printer; - -------------------------------------- -Protected: Functions and Procedures -------------------------------------- - -* A :ada:`function` can **get** the state - - - Protected data is **read-only** - - Concurrent call to :ada:`function` is **allowed** - - **No** concurrent call to :ada:`procedure` - -* A :ada:`procedure` can **set** the state - - - **No** concurrent call to either :ada:`procedure` or :ada:`function` - -* In case of concurrency, other callers get **blocked** - - - Until call finishes - -------------------- -Protected Entries -------------------- - -* A :ada:`entry` is equivalent to a procedure but - - - It can have a **guard condition** - - + Must be a **Boolean variable** - + Declared as :ada:`private` member of the type - - - Calling task **blocks** on the guard until it is lifted - - + At most one task blocked (in Ravenscar) - - - At most one entry per protected type (in Ravenscar) - -.. code:: Ada - - protected Blocker is - entry Wait when Ready; - procedure Mark_Ready; -- sets Ready to True - private - Ready : Boolean := False; - end protected; - -====================== -Ravenscar Scheduling -====================== - --------------------- -Ravenscar Patterns --------------------- - -* Periodic tasks (cyclic tasks / time triggered) - - - Sensor data acquisition - - System monitoring - - Control loops - - Display update - -* Event driven tasks - - - Alarm, Timeout - - Interrupt - - Data from another task - -* Tasks can synchronize and communicate via protected objects - ---------------- -Task Activation ---------------- - -* Instantiated tasks start running when **activated** -* On the **stack** - - - When the **enclosing** package has finished **elaborating** - -* Can be deferred to the end of **all** elaboration - -:filename:`my_tasks.ads` - -.. code:: Ada - - package My_Tasks is - task type Foo_Task_T; - - T : Foo_Task_T; - -- T is not running yet - end My_Tasks; - -:filename:`main.adb` - -.. code:: Ada - - with My_Tasks; - -- My_Tasks has finished elab, T runs - - procedure Main is - [...] - ------------- -Scheduling ------------- - -* Priority-based -* No time slicing (quantum) -* A task executes until ... - - - The task is blocked - - + :ada:`delay until` - + protected object :ada:`entry` - - - A higher priority task is woken up or unblocked (preemption) - ------------------------------------------- -Protected Objects and Interrupt Handling ------------------------------------------- - -* Simple protected operations - - - No queuing (except in Jorvik) - - :dfn:`Ceiling locking` on monoprocessor (see later) - - :dfn:`Proxy model` for protected entries - - + Entry body executed by the active task on behalf of the waiting tasks - + Avoids unneeded context switches - + Timing harder to analyze - -* Simple, efficient, interrupt handling - - - Protected procedures as low level interrupt handlers - - Procedure is :dfn:`attached` to interrupt - - Interrupt masking follows active priority - -======================== -Some Advanced Concepts -======================== - ------------- -Priorities ------------- - -.. container:: columns - - .. container:: column - - * Set by a :ada:`pragma Priority` or :ada:`Interrupt_Priority` - - - Can also use aspects - - Tasks - - Main subprogram (environment task) - - :ada:`protected` definition - - * Lower values mean lower priority - - - :ada:`Priority` - - + At least 30 levels - - - :ada:`Interrupt_Priority` - - + At least 1 level - + ``>`` :ada:`Priority` - - .. container:: column - - .. code:: Ada - - procedure Main is - pragma Priority (2); - - task T is - pragma Priority (4); - - protected Buffer is - ... - private - pragma Priority (3); - end Buffer; - ------------------ -Ceiling Locking ------------------ - -* Example of priority inversion: - -.. code:: - - L : Lock; - - T1 : Task (Priority => 1); - T2 : Task (Priority => 2); - T3 : Task (Priority => 3); - - T1 locks L - T3 starts, get scheduled (T3 > T1) - T3 tries to get L, blocks - T2 starts, get scheduled (T2 > T1) - - Result: T2 running, T1 blocked, T3 blocked through L (but T3 > T2!) - -* Solved with ceiling locking - - - Increase the priority of a task when it uses a protected - -* Task priority is increased within a protected object - - - Condition: Task priority ``<=`` priorities of all protected objects it uses - - Blocks other tasks without explicit locking - -* :ada:`pragma Locking_Policy (Ceiling_Locking)` - - - Default on Ravenscar / Jorvik - -------------------------- -Ceiling Locking Example -------------------------- - - .. code:: Ada - - protected P with Priority => 5 is - procedure Set (V : Integer); - - .. code:: Ada - - task T with Priority => 4 is - ... - - task body T is - ... - P.Set (1); - -.. image:: ravenscar_ceiling_locking.png - :width: 45% - ------- -Queue ------- - -* Protected :ada:`entry` are activated by **one** task at a time -* **Mutual exclusion** section -* Other tasks trying to enter - - - Are forbidden (Ravenscar) - - Or are **queued** (Jorvik) - - + In **First-In First-Out** (FIFO) by default - --------------------------- -Synchronous Task Control --------------------------- - -* Primitives synchronization mechanisms and two-stage suspend operation - - - No critical section - - More lightweight than protected objects - -* Package exports a `Suspension_Object` type - - - Values are :ada:`True` and :ada:`False`, initially :ada:`False` - - Such objects are awaited by (at most) one task - - + But can be set by several tasks - -.. code:: Ada - - package Ada.Synchronous_Task_Control is - type Suspension_Object is limited private; - procedure Set_True (S : in out Suspension_Object); - procedure Set_False (S : in out Suspension_Object); - procedure Suspend_Until_True (S : in out Suspension_Object); - function Current_State (S : Suspension_Object) return Boolean; - private - ... - end Ada.Synchronous_Task_Control; - ---------------- -Timing Events ---------------- - -* User-defined actions executed at a specified wall-clock time - - - Calls back an :ada:`access protected procedure` - -* Do not require a :ada:`task` or a :ada:`delay` statement - - .. code:: Ada - - package Ada.Real_Time.Timing_Events is - type Timing_Event is tagged limited private; - type Timing_Event_Handler is access protected procedure ( - Event : in out Timing_Event); - procedure Set_Handler (Event : in out Timing_Event; - At_Time : Time; - Handler : Timing_Event_Handler); - function Current_Handler (Event : Timing_Event) - return Timing_Event_Handler; - procedure Cancel_Handler (Event : in out Timing_Event; - Cancelled : out Boolean); - function Time_Of_Event (Event : Timing_Event) - return Time; - private - ... - end Ada.Real_Time.Timing_Events; - ------------------------ -Execution Time Clocks ------------------------ - -* Not specific to Ravenscar / Jorvik -* Each task has an associated CPU time clock - - - Accessible via function call - -* Clocks starts at creation time - - - **Before** activation - -* Measures the task's total execution time - - - Including calls to libraries, OS services... - - But not including time in a blocked or suspended state - -* System and runtime also execute code - - - As well as interrupt handlers - - Their execution time clock assignment is implementation-defined - -------------------------------- -Partition Elaboration Control -------------------------------- - -* Library units are elaborated in a partially-defined order - - - They can declare tasks and interrupt handlers - - Once elaborated, tasks start executing - - Interrupts may occur as soon as hardware is enabled - - * May be during elaboration - -* This can cause race conditions - - - Not acceptable for certification - -* :ada:`pragma Partition_Elaboration_Policy` - ------------------------------- -Partition Elaboration Policy ------------------------------- - -* :ada:`pragma Partition_Elaboration_Policy` - - - Defined in RM Annex H "High Integrity Systems" - -* Controls tasks' activation -* Controls interrupts attachment -* Always relative to library units' elaboration -* **Concurrent policy** - - - Activation at the end of declaration's scope elaboration - - Ada default policy - -* **Sequential policy** - - - Deferred activation and attachment until **all** library units are activated - - Easier scheduling analysis - -========= -Summary -========= - ---------------- -Light-Tasking ---------------- - -.. container:: columns - - .. container:: column - - * Everything is done by the Ada runtime - - - No OS underneath - - * Simple - - - Less than 2800 Logical SLOCs - - Footprint for simple tasking program is 10KB - - * Static tasking model - - - Static tasks descriptors and stacks created at compile time - - Task creation and activation is very simple - - All tasks are created at initialization - - .. container:: column - - * Simple protected operations - - - No queuing - - Locking/unlocking by increasing/decreasing priority - - * Complex features removed - - - Such as exception handling and propagation - - * ECSS (E-ST-40C and Q-ST-80C) qualification material