]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Include design documentation within runtime sources
authorPat Bernardi <bernardi@adacore.com>
Mon, 18 Jul 2022 05:56:28 +0000 (01:56 -0400)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Tue, 12 Nov 2024 13:05:47 +0000 (14:05 +0100)
The existing design documentation, required when generating the Software
Architecture Design Specification and Software Component Design
Specification documents for the light and light-tasking runtimes, has been
included directly within runtime sources.

gcc/ada/ChangeLog:

* libgnarl/a-dynpri.ads: Add design annotations.
* libgnarl/a-reatim.ads: Likewise.
* libgnarl/a-synbar.ads: Likewise.
* libgnarl/a-taside.ads: Likewise.
* libgnarl/s-tarest.ads: Likewise.
* libgnarl/s-tasinf.ads: Likewise.
* libgnarl/s-taspri__posix.ads: Likewise.
* libgnarl/s-tpobmu.ads: Likewise.
* libgnat/a-assert.ads: Likewise.
* libgnat/a-comlin.ads: Likewise.
* libgnat/a-nbnbig.ads: Likewise.
* libgnat/a-nubinu.ads: Likewise.
* libgnat/a-numeri.ads: Likewise.
* libgnat/a-unccon.ads: Likewise.
* libgnat/a-uncdea.ads: Likewise.
* libgnat/ada.ads: Likewise.
* libgnat/g-debuti.ads: Likewise.
* libgnat/g-sestin.ads: Likewise.
* libgnat/g-souinf.ads: Likewise.
* libgnat/gnat.ads: Likewise.
* libgnat/i-cexten.ads: Likewise.
* libgnat/i-cexten__128.ads: Likewise.
* libgnat/i-cstrin.adb: Likewise.
* libgnat/i-cstrin.ads: Likewise.
* libgnat/interfac__2020.ads: Likewise.
* libgnat/machcode.ads: Likewise.
* libgnat/s-addope.ads: Likewise.
* libgnat/s-aridou.ads: Likewise.
* libgnat/s-arit32.ads: Likewise.
* libgnat/s-arit64.ads: Likewise.
* libgnat/s-assert.ads: Likewise.
* libgnat/s-atacco.ads: Likewise.
* libgnat/s-atocou.ads: Likewise.
* libgnat/s-atocou__builtin.adb: Likewise.
* libgnat/s-atopri.ads: Likewise.
* libgnat/s-bitops.ads: Likewise.
* libgnat/s-boarop.ads: Likewise.
* libgnat/s-bytswa.ads: Likewise.
* libgnat/s-carsi8.ads: Likewise.
* libgnat/s-carun8.ads: Likewise.
* libgnat/s-casi16.ads: Likewise.
* libgnat/s-casi32.ads: Likewise.
* libgnat/s-casi64.ads: Likewise.
* libgnat/s-caun16.ads: Likewise.
* libgnat/s-caun32.ads: Likewise.
* libgnat/s-caun64.ads: Likewise.
* libgnat/s-exnint.ads: Likewise.
* libgnat/s-exnllf.ads: Likewise.
* libgnat/s-exnlli.ads: Likewise.
* libgnat/s-expint.ads: Likewise.
* libgnat/s-explli.ads: Likewise.
* libgnat/s-expllu.ads: Likewise.
* libgnat/s-expmod.ads: Likewise.
* libgnat/s-exponn.ads: Likewise.
* libgnat/s-expont.ads: Likewise.
* libgnat/s-exponu.ads: Likewise.
* libgnat/s-expuns.ads: Likewise.
* libgnat/s-fatflt.ads: Likewise.
* libgnat/s-fatgen.ads: Likewise.
* libgnat/s-fatlfl.ads: Likewise.
* libgnat/s-fatllf.ads: Likewise.
* libgnat/s-flocon.ads: Likewise.
* libgnat/s-geveop.ads: Likewise.
* libgnat/s-imageb.ads: Likewise.
* libgnat/s-imaged.ads: Likewise.
* libgnat/s-imagef.ads: Likewise.
* libgnat/s-imagei.ads: Likewise.
* libgnat/s-imagen.ads: Likewise.
* libgnat/s-imageu.ads: Likewise.
* libgnat/s-imagew.ads: Likewise.
* libgnat/s-imde128.ads: Likewise.
* libgnat/s-imde32.ads: Likewise.
* libgnat/s-imde64.ads: Likewise.
* libgnat/s-imen16.ads: Likewise.
* libgnat/s-imen32.ads: Likewise.
* libgnat/s-imenu8.ads: Likewise.
* libgnat/s-imfi32.ads: Likewise.
* libgnat/s-imfi64.ads: Likewise.
* libgnat/s-imgbiu.ads: Likewise.
* libgnat/s-imgboo.ads: Likewise.
* libgnat/s-imgcha.ads: Likewise.
* libgnat/s-imgint.ads: Likewise.
* libgnat/s-imgllb.ads: Likewise.
* libgnat/s-imglli.ads: Likewise.
* libgnat/s-imgllu.ads: Likewise.
* libgnat/s-imgllw.ads: Likewise.
* libgnat/s-imgrea.ads: Likewise.
* libgnat/s-imguns.ads: Likewise.
* libgnat/s-imguti.ads: Likewise.
* libgnat/s-imgwiu.ads: Likewise.
* libgnat/s-maccod.ads: Likewise.
* libgnat/s-multip.ads: Likewise.
* libgnat/s-pack03.ads: Likewise.
* libgnat/s-pack05.ads: Likewise.
* libgnat/s-pack06.ads: Likewise.
* libgnat/s-pack07.ads: Likewise.
* libgnat/s-pack09.ads: Likewise.
* libgnat/s-pack10.ads: Likewise.
* libgnat/s-pack100.ads: Likewise.
* libgnat/s-pack101.ads: Likewise.
* libgnat/s-pack102.ads: Likewise.
* libgnat/s-pack103.ads: Likewise.
* libgnat/s-pack104.ads: Likewise.
* libgnat/s-pack105.ads: Likewise.
* libgnat/s-pack106.ads: Likewise.
* libgnat/s-pack107.ads: Likewise.
* libgnat/s-pack108.ads: Likewise.
* libgnat/s-pack109.ads: Likewise.
* libgnat/s-pack11.ads: Likewise.
* libgnat/s-pack110.ads: Likewise.
* libgnat/s-pack111.ads: Likewise.
* libgnat/s-pack112.ads: Likewise.
* libgnat/s-pack113.ads: Likewise.
* libgnat/s-pack114.ads: Likewise.
* libgnat/s-pack115.ads: Likewise.
* libgnat/s-pack116.ads: Likewise.
* libgnat/s-pack117.ads: Likewise.
* libgnat/s-pack118.ads: Likewise.
* libgnat/s-pack119.ads: Likewise.
* libgnat/s-pack12.ads: Likewise.
* libgnat/s-pack120.ads: Likewise.
* libgnat/s-pack121.ads: Likewise.
* libgnat/s-pack122.ads: Likewise.
* libgnat/s-pack123.ads: Likewise.
* libgnat/s-pack124.ads: Likewise.
* libgnat/s-pack125.ads: Likewise.
* libgnat/s-pack126.ads: Likewise.
* libgnat/s-pack127.ads: Likewise.
* libgnat/s-pack13.ads: Likewise.
* libgnat/s-pack14.ads: Likewise.
* libgnat/s-pack15.ads: Likewise.
* libgnat/s-pack17.ads: Likewise.
* libgnat/s-pack18.ads: Likewise.
* libgnat/s-pack19.ads: Likewise.
* libgnat/s-pack20.ads: Likewise.
* libgnat/s-pack21.ads: Likewise.
* libgnat/s-pack22.ads: Likewise.
* libgnat/s-pack23.ads: Likewise.
* libgnat/s-pack24.ads: Likewise.
* libgnat/s-pack25.ads: Likewise.
* libgnat/s-pack26.ads: Likewise.
* libgnat/s-pack27.ads: Likewise.
* libgnat/s-pack28.ads: Likewise.
* libgnat/s-pack29.ads: Likewise.
* libgnat/s-pack30.ads: Likewise.
* libgnat/s-pack31.ads: Likewise.
* libgnat/s-pack33.ads: Likewise.
* libgnat/s-pack34.ads: Likewise.
* libgnat/s-pack35.ads: Likewise.
* libgnat/s-pack36.ads: Likewise.
* libgnat/s-pack37.ads: Likewise.
* libgnat/s-pack38.ads: Likewise.
* libgnat/s-pack39.ads: Likewise.
* libgnat/s-pack40.ads: Likewise.
* libgnat/s-pack41.ads: Likewise.
* libgnat/s-pack42.ads: Likewise.
* libgnat/s-pack43.ads: Likewise.
* libgnat/s-pack44.ads: Likewise.
* libgnat/s-pack45.ads: Likewise.
* libgnat/s-pack46.ads: Likewise.
* libgnat/s-pack47.ads: Likewise.
* libgnat/s-pack48.ads: Likewise.
* libgnat/s-pack49.ads: Likewise.
* libgnat/s-pack50.ads: Likewise.
* libgnat/s-pack51.ads: Likewise.
* libgnat/s-pack52.ads: Likewise.
* libgnat/s-pack53.ads: Likewise.
* libgnat/s-pack54.ads: Likewise.
* libgnat/s-pack55.ads: Likewise.
* libgnat/s-pack56.ads: Likewise.
* libgnat/s-pack57.ads: Likewise.
* libgnat/s-pack58.ads: Likewise.
* libgnat/s-pack59.ads: Likewise.
* libgnat/s-pack60.ads: Likewise.
* libgnat/s-pack61.ads: Likewise.
* libgnat/s-pack62.ads: Likewise.
* libgnat/s-pack63.ads: Likewise.
* libgnat/s-pack65.ads: Likewise.
* libgnat/s-pack66.ads: Likewise.
* libgnat/s-pack67.ads: Likewise.
* libgnat/s-pack68.ads: Likewise.
* libgnat/s-pack69.ads: Likewise.
* libgnat/s-pack70.ads: Likewise.
* libgnat/s-pack71.ads: Likewise.
* libgnat/s-pack72.ads: Likewise.
* libgnat/s-pack73.ads: Likewise.
* libgnat/s-pack74.ads: Likewise.
* libgnat/s-pack75.ads: Likewise.
* libgnat/s-pack76.ads: Likewise.
* libgnat/s-pack77.ads: Likewise.
* libgnat/s-pack78.ads: Likewise.
* libgnat/s-pack79.ads: Likewise.
* libgnat/s-pack80.ads: Likewise.
* libgnat/s-pack81.ads: Likewise.
* libgnat/s-pack82.ads: Likewise.
* libgnat/s-pack83.ads: Likewise.
* libgnat/s-pack84.ads: Likewise.
* libgnat/s-pack85.ads: Likewise.
* libgnat/s-pack86.ads: Likewise.
* libgnat/s-pack87.ads: Likewise.
* libgnat/s-pack88.ads: Likewise.
* libgnat/s-pack89.ads: Likewise.
* libgnat/s-pack90.ads: Likewise.
* libgnat/s-pack91.ads: Likewise.
* libgnat/s-pack92.ads: Likewise.
* libgnat/s-pack93.ads: Likewise.
* libgnat/s-pack94.ads: Likewise.
* libgnat/s-pack95.ads: Likewise.
* libgnat/s-pack96.ads: Likewise.
* libgnat/s-pack97.ads: Likewise.
* libgnat/s-pack98.ads: Likewise.
* libgnat/s-pack99.ads: Likewise.
* libgnat/s-parame.ads: Likewise.
* libgnat/s-rident.ads: Likewise.
* libgnat/s-spark.ads: Likewise.
* libgnat/s-spcuop.ads: Likewise.
* libgnat/s-stoele.ads: Likewise.
* libgnat/s-traent.ads: Likewise.
* libgnat/s-unstyp.ads: Likewise.
* libgnat/s-vaispe.ads: Likewise.
* libgnat/s-valspe.ads: Likewise.
* libgnat/s-vauspe.ads: Likewise.
* libgnat/s-veboop.ads: Likewise.
* libgnat/s-vector.ads: Likewise.
* libgnat/s-vs_int.ads: Likewise.
* libgnat/s-vs_lli.ads: Likewise.
* libgnat/s-vs_llu.ads: Likewise.
* libgnat/s-vs_uns.ads: Likewise.
* libgnat/s-vsllli.ads: Likewise.
* libgnat/text_io.ads: Likewise.
* libgnat/unchconv.ads: Likewise.
* libgnat/unchdeal.ads: Likewise.
* s-pack.ads.tmpl: Likewise.

233 files changed:
gcc/ada/libgnarl/a-dynpri.ads
gcc/ada/libgnarl/a-reatim.ads
gcc/ada/libgnarl/a-synbar.ads
gcc/ada/libgnarl/a-taside.ads
gcc/ada/libgnarl/s-tarest.ads
gcc/ada/libgnarl/s-tasinf.ads
gcc/ada/libgnarl/s-taspri__posix.ads
gcc/ada/libgnarl/s-tpobmu.ads
gcc/ada/libgnat/a-assert.ads
gcc/ada/libgnat/a-comlin.ads
gcc/ada/libgnat/a-nbnbig.ads
gcc/ada/libgnat/a-nubinu.ads
gcc/ada/libgnat/a-numeri.ads
gcc/ada/libgnat/a-unccon.ads
gcc/ada/libgnat/a-uncdea.ads
gcc/ada/libgnat/ada.ads
gcc/ada/libgnat/g-debuti.ads
gcc/ada/libgnat/g-sestin.ads
gcc/ada/libgnat/g-souinf.ads
gcc/ada/libgnat/gnat.ads
gcc/ada/libgnat/i-cexten.ads
gcc/ada/libgnat/i-cexten__128.ads
gcc/ada/libgnat/i-cstrin.adb
gcc/ada/libgnat/i-cstrin.ads
gcc/ada/libgnat/interfac__2020.ads
gcc/ada/libgnat/machcode.ads
gcc/ada/libgnat/s-addope.ads
gcc/ada/libgnat/s-aridou.ads
gcc/ada/libgnat/s-arit32.ads
gcc/ada/libgnat/s-arit64.ads
gcc/ada/libgnat/s-assert.ads
gcc/ada/libgnat/s-atacco.ads
gcc/ada/libgnat/s-atocou.ads
gcc/ada/libgnat/s-atocou__builtin.adb
gcc/ada/libgnat/s-atopri.ads
gcc/ada/libgnat/s-bitops.ads
gcc/ada/libgnat/s-boarop.ads
gcc/ada/libgnat/s-bytswa.ads
gcc/ada/libgnat/s-carsi8.ads
gcc/ada/libgnat/s-carun8.ads
gcc/ada/libgnat/s-casi16.ads
gcc/ada/libgnat/s-casi32.ads
gcc/ada/libgnat/s-casi64.ads
gcc/ada/libgnat/s-caun16.ads
gcc/ada/libgnat/s-caun32.ads
gcc/ada/libgnat/s-caun64.ads
gcc/ada/libgnat/s-exnint.ads
gcc/ada/libgnat/s-exnllf.ads
gcc/ada/libgnat/s-exnlli.ads
gcc/ada/libgnat/s-expint.ads
gcc/ada/libgnat/s-explli.ads
gcc/ada/libgnat/s-expllu.ads
gcc/ada/libgnat/s-expmod.ads
gcc/ada/libgnat/s-exponn.ads
gcc/ada/libgnat/s-expont.ads
gcc/ada/libgnat/s-exponu.ads
gcc/ada/libgnat/s-expuns.ads
gcc/ada/libgnat/s-fatflt.ads
gcc/ada/libgnat/s-fatgen.ads
gcc/ada/libgnat/s-fatlfl.ads
gcc/ada/libgnat/s-fatllf.ads
gcc/ada/libgnat/s-flocon.ads
gcc/ada/libgnat/s-geveop.ads
gcc/ada/libgnat/s-imageb.ads
gcc/ada/libgnat/s-imaged.ads
gcc/ada/libgnat/s-imagef.ads
gcc/ada/libgnat/s-imagei.ads
gcc/ada/libgnat/s-imagen.ads
gcc/ada/libgnat/s-imageu.ads
gcc/ada/libgnat/s-imagew.ads
gcc/ada/libgnat/s-imde128.ads
gcc/ada/libgnat/s-imde32.ads
gcc/ada/libgnat/s-imde64.ads
gcc/ada/libgnat/s-imen16.ads
gcc/ada/libgnat/s-imen32.ads
gcc/ada/libgnat/s-imenu8.ads
gcc/ada/libgnat/s-imfi32.ads
gcc/ada/libgnat/s-imfi64.ads
gcc/ada/libgnat/s-imgbiu.ads
gcc/ada/libgnat/s-imgboo.ads
gcc/ada/libgnat/s-imgcha.ads
gcc/ada/libgnat/s-imgint.ads
gcc/ada/libgnat/s-imgllb.ads
gcc/ada/libgnat/s-imglli.ads
gcc/ada/libgnat/s-imgllu.ads
gcc/ada/libgnat/s-imgllw.ads
gcc/ada/libgnat/s-imgrea.ads
gcc/ada/libgnat/s-imguns.ads
gcc/ada/libgnat/s-imguti.ads
gcc/ada/libgnat/s-imgwiu.ads
gcc/ada/libgnat/s-maccod.ads
gcc/ada/libgnat/s-multip.ads
gcc/ada/libgnat/s-pack03.ads
gcc/ada/libgnat/s-pack05.ads
gcc/ada/libgnat/s-pack06.ads
gcc/ada/libgnat/s-pack07.ads
gcc/ada/libgnat/s-pack09.ads
gcc/ada/libgnat/s-pack10.ads
gcc/ada/libgnat/s-pack100.ads
gcc/ada/libgnat/s-pack101.ads
gcc/ada/libgnat/s-pack102.ads
gcc/ada/libgnat/s-pack103.ads
gcc/ada/libgnat/s-pack104.ads
gcc/ada/libgnat/s-pack105.ads
gcc/ada/libgnat/s-pack106.ads
gcc/ada/libgnat/s-pack107.ads
gcc/ada/libgnat/s-pack108.ads
gcc/ada/libgnat/s-pack109.ads
gcc/ada/libgnat/s-pack11.ads
gcc/ada/libgnat/s-pack110.ads
gcc/ada/libgnat/s-pack111.ads
gcc/ada/libgnat/s-pack112.ads
gcc/ada/libgnat/s-pack113.ads
gcc/ada/libgnat/s-pack114.ads
gcc/ada/libgnat/s-pack115.ads
gcc/ada/libgnat/s-pack116.ads
gcc/ada/libgnat/s-pack117.ads
gcc/ada/libgnat/s-pack118.ads
gcc/ada/libgnat/s-pack119.ads
gcc/ada/libgnat/s-pack12.ads
gcc/ada/libgnat/s-pack120.ads
gcc/ada/libgnat/s-pack121.ads
gcc/ada/libgnat/s-pack122.ads
gcc/ada/libgnat/s-pack123.ads
gcc/ada/libgnat/s-pack124.ads
gcc/ada/libgnat/s-pack125.ads
gcc/ada/libgnat/s-pack126.ads
gcc/ada/libgnat/s-pack127.ads
gcc/ada/libgnat/s-pack13.ads
gcc/ada/libgnat/s-pack14.ads
gcc/ada/libgnat/s-pack15.ads
gcc/ada/libgnat/s-pack17.ads
gcc/ada/libgnat/s-pack18.ads
gcc/ada/libgnat/s-pack19.ads
gcc/ada/libgnat/s-pack20.ads
gcc/ada/libgnat/s-pack21.ads
gcc/ada/libgnat/s-pack22.ads
gcc/ada/libgnat/s-pack23.ads
gcc/ada/libgnat/s-pack24.ads
gcc/ada/libgnat/s-pack25.ads
gcc/ada/libgnat/s-pack26.ads
gcc/ada/libgnat/s-pack27.ads
gcc/ada/libgnat/s-pack28.ads
gcc/ada/libgnat/s-pack29.ads
gcc/ada/libgnat/s-pack30.ads
gcc/ada/libgnat/s-pack31.ads
gcc/ada/libgnat/s-pack33.ads
gcc/ada/libgnat/s-pack34.ads
gcc/ada/libgnat/s-pack35.ads
gcc/ada/libgnat/s-pack36.ads
gcc/ada/libgnat/s-pack37.ads
gcc/ada/libgnat/s-pack38.ads
gcc/ada/libgnat/s-pack39.ads
gcc/ada/libgnat/s-pack40.ads
gcc/ada/libgnat/s-pack41.ads
gcc/ada/libgnat/s-pack42.ads
gcc/ada/libgnat/s-pack43.ads
gcc/ada/libgnat/s-pack44.ads
gcc/ada/libgnat/s-pack45.ads
gcc/ada/libgnat/s-pack46.ads
gcc/ada/libgnat/s-pack47.ads
gcc/ada/libgnat/s-pack48.ads
gcc/ada/libgnat/s-pack49.ads
gcc/ada/libgnat/s-pack50.ads
gcc/ada/libgnat/s-pack51.ads
gcc/ada/libgnat/s-pack52.ads
gcc/ada/libgnat/s-pack53.ads
gcc/ada/libgnat/s-pack54.ads
gcc/ada/libgnat/s-pack55.ads
gcc/ada/libgnat/s-pack56.ads
gcc/ada/libgnat/s-pack57.ads
gcc/ada/libgnat/s-pack58.ads
gcc/ada/libgnat/s-pack59.ads
gcc/ada/libgnat/s-pack60.ads
gcc/ada/libgnat/s-pack61.ads
gcc/ada/libgnat/s-pack62.ads
gcc/ada/libgnat/s-pack63.ads
gcc/ada/libgnat/s-pack65.ads
gcc/ada/libgnat/s-pack66.ads
gcc/ada/libgnat/s-pack67.ads
gcc/ada/libgnat/s-pack68.ads
gcc/ada/libgnat/s-pack69.ads
gcc/ada/libgnat/s-pack70.ads
gcc/ada/libgnat/s-pack71.ads
gcc/ada/libgnat/s-pack72.ads
gcc/ada/libgnat/s-pack73.ads
gcc/ada/libgnat/s-pack74.ads
gcc/ada/libgnat/s-pack75.ads
gcc/ada/libgnat/s-pack76.ads
gcc/ada/libgnat/s-pack77.ads
gcc/ada/libgnat/s-pack78.ads
gcc/ada/libgnat/s-pack79.ads
gcc/ada/libgnat/s-pack80.ads
gcc/ada/libgnat/s-pack81.ads
gcc/ada/libgnat/s-pack82.ads
gcc/ada/libgnat/s-pack83.ads
gcc/ada/libgnat/s-pack84.ads
gcc/ada/libgnat/s-pack85.ads
gcc/ada/libgnat/s-pack86.ads
gcc/ada/libgnat/s-pack87.ads
gcc/ada/libgnat/s-pack88.ads
gcc/ada/libgnat/s-pack89.ads
gcc/ada/libgnat/s-pack90.ads
gcc/ada/libgnat/s-pack91.ads
gcc/ada/libgnat/s-pack92.ads
gcc/ada/libgnat/s-pack93.ads
gcc/ada/libgnat/s-pack94.ads
gcc/ada/libgnat/s-pack95.ads
gcc/ada/libgnat/s-pack96.ads
gcc/ada/libgnat/s-pack97.ads
gcc/ada/libgnat/s-pack98.ads
gcc/ada/libgnat/s-pack99.ads
gcc/ada/libgnat/s-parame.ads
gcc/ada/libgnat/s-rident.ads
gcc/ada/libgnat/s-spark.ads
gcc/ada/libgnat/s-spcuop.ads
gcc/ada/libgnat/s-stoele.ads
gcc/ada/libgnat/s-traent.ads
gcc/ada/libgnat/s-unstyp.ads
gcc/ada/libgnat/s-vaispe.ads
gcc/ada/libgnat/s-valspe.ads
gcc/ada/libgnat/s-vauspe.ads
gcc/ada/libgnat/s-veboop.ads
gcc/ada/libgnat/s-vector.ads
gcc/ada/libgnat/s-vs_int.ads
gcc/ada/libgnat/s-vs_lli.ads
gcc/ada/libgnat/s-vs_llu.ads
gcc/ada/libgnat/s-vs_uns.ads
gcc/ada/libgnat/s-vsllli.ads
gcc/ada/libgnat/text_io.ads
gcc/ada/libgnat/unchconv.ads
gcc/ada/libgnat/unchdeal.ads
gcc/ada/s-pack.ads.tmpl

index 24fbbe48d8ded863b37af621608445a7df02399e..7b8f0e088ac07bf59a8570e0fa75401d2f43147e 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This unit implements dynamic priority support for Ada tasking as defined
+--  in ARM D.5.1. It allows a tasks priority to be changed after the task has
+--  been created.
+
 with System;
 with Ada.Task_Identification;
 
index 7f90820b1eef9ee6436b4c7ba23d5993c2f32961..28948cd3459eb4c0a473340fa18fbdc800f504dc 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  Package ``Ada.Real_Time`` provides basic definitions and operations related
+--  to the types defined ``Time`` and ``Time_Span`` as defined by ARM D.8. The
+--  types ``Time`` and ``Time_Span`` are implemented by the ``Duration`` type.
+--
+--  This software layer provides the Ada abstraction for time handling and
+--  delays, using the services provided by lower layers.
+
 with System.Task_Primitives.Operations;
 pragma Elaborate_All (System.Task_Primitives.Operations);
 
index a2b293774938ee88a1410c6585d7da5124c17c01..88b355d4a9867aeb9ad302089e2052570f8bef2f 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package implements functionality defined by ARM D.10.1 to
+--  synchronously release multiple blocked tasks after the number
+--  of blocked tasks has reached a specified threshold.
+
 package Ada.Synchronous_Barriers with SPARK_Mode => Off is
    pragma Preelaborate (Synchronous_Barriers);
 
index 8a1195509c3761851c42883a8abc9ffd652dfaae..2b50e18043984f4f95f70000e2d5608245ff3036 100644 (file)
@@ -33,6 +33,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package implements Ada task identification as defined by ARM C.7.1.
+
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised.
 --  This is enforced by setting the corresponding assertion policy to Ignore.
index e6c9ae07182888da1f6e3559fcbda880f513b028..4cad58e127fb31b46ca11be1b1b6d81e8e755565 100644 (file)
 --  intended to be used in a restricted run time.
 
 --  This package represents the high level tasking interface used by the
---  compiler to expand Ada 95 tasking constructs into simpler run time calls
---  (aka GNARLI, GNU Ada Run-time Library Interface)
+--  compiler to expand Ada 95 tasking constructs into simpler run-time calls.
 
---  Note: the compiler generates direct calls to this interface, via Rtsfind.
---  Any changes to this interface may require corresponding compiler changes
---  in exp_ch9.adb and possibly exp_ch7.adb
+--  The compiler generates direct calls to this interface, via Rtsfind. Any
+--  changes to this interface may require corresponding compiler changes in
+--  exp_ch9.adb and possibly exp_ch7.adb.
 
 --  The restricted GNARLI is also composed of System.Protected_Objects and
 --  System.Protected_Objects.Single_Entry
index 55f261c82200ebb9a99e2fab29e6a44fbf2f11cf..e2e3cc87b392277aa358c1efe60b0c552626a68c 100644 (file)
 ------------------------------------------------------------------------------
 
 --  This package contains the definitions and routines associated with the
---  implementation and use of the Task_Info pragma. It is specialized
+--  implementation and use of the ``Task_Info`` pragma. It is specialized
 --  appropriately for targets that make use of this pragma.
 
---  Note: the compiler generates direct calls to this interface, via Rtsfind.
---  Any changes to this interface may require corresponding compiler changes.
+--  The compiler generates direct calls to this interface, via Rtsfind. Any
+--  changes to this interface may require corresponding compiler changes.
 
 --  The functionality in this unit is now provided by the predefined package
 --  System.Multiprocessors and the CPU aspect. This package is obsolescent.
index 3453f4fea4ceb1beb3cf561c3d4bcf3ed3fe414a..d5e34318ae28e95d34662590c6949dce10d4de6e 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This is a POSIX-like version of this package
+--  This is the POSIX compliant systems implementation
+
+--  This package and its children provide a binding to the underlying platform.
+--  The base types are defined here while the functional implementations
+--  are in ``Task_Primitives.Operations``.
 
 --  Note: this file can only be used for POSIX compliant systems
 
index cb7643acf1c1c0f2328dea2f1a9b6c2e5c9a4f8a..05d5c1d0815b8fb4c7528a1403949991a69ec1e9 100644 (file)
@@ -29,6 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package provides primitives used for protected objects on
+--  multiprocessor systems.
+
 package System.Tasking.Protected_Objects.Multiprocessors is
 
    procedure Served (Entry_Call : Entry_Call_Link);
index eba19d40e55056f63b4a95b0655824a02f3723f9..37d58e4288960d4b0c0d2a34a11300928d5af2e5 100644 (file)
@@ -33,6 +33,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package provides the assertion feature defined by ARM 11.4.2
+
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised when calling Assert.
 --  This is enforced by setting the corresponding assertion policy to Ignore.
index be2e07fb1e69b5ff6eb9336263400b6702b77951..9fb8156f234c78235c77258bf2101be024adb780 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This language package providing support for obtaining the values of its
+--  command line arguments and to set the exit status of the program as defined
+--  by ARM A.15.
+
 package Ada.Command_Line is
    pragma Preelaborate;
 
index 382a7b60d18661c07012483daee24b88de236808..04aa62a928eb452d0e9180a0868ea1155f053b9b 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This unit is provided as a replacement for the standard unit
---  Ada.Numerics.Big_Numbers.Big_Integers when only proof with SPARK is
---  intended. It cannot be used for execution, as all subprograms are marked
---  imported with no definition.
+--  This package provides a reduced and non-executable implementation of the
+--  ARM A.5.6 defined ``Ada.Numerics.Big_Numbers.Big_Integers``  for use in
+--  SPARK proofs in the runtime. As it is only intended for SPARK proofs, this
+--  package is marked as a Ghost package and consequently does not have a
+--  runtime footprint.
 
 --  Contrary to Ada.Numerics.Big_Numbers.Big_Integers, this unit does not
 --  depend on System or Ada.Finalization, which makes it more convenient for
---  use in run-time units.
+--  use in run-time units. Note, since it is a ghost unit, all subprograms are
+--  marked as imported.
 
 --  Ghost code in this unit is meant for analysis only, not for run-time
 --  checking. This is enforced by setting the assertion policy to Ignore.
@@ -36,16 +38,20 @@ is
 
    type Big_Integer is private
      with Integer_Literal => From_Universal_Image;
+   --  Private type that holds the integer value
 
    function Is_Valid (Arg : Big_Integer) return Boolean
    with
      Import,
      Global => null;
+   --  Return whether a passed big integer is valid
 
    subtype Valid_Big_Integer is Big_Integer
      with Dynamic_Predicate => Is_Valid (Valid_Big_Integer),
           Predicate_Failure => raise Program_Error;
+   --  Holds a valid Big_Integer
 
+   --  Comparison operators defined for valid Big_Integer values
    function "=" (L, R : Valid_Big_Integer) return Boolean with
       Import,
       Global => null;
@@ -70,18 +76,21 @@ is
      with
        Import,
        Global => null;
+   --  Create a Big_Integer from an Integer value
 
    subtype Big_Positive is Big_Integer
      with Dynamic_Predicate =>
             (if Is_Valid (Big_Positive)
              then Big_Positive > To_Big_Integer (0)),
           Predicate_Failure => raise Constraint_Error;
+   --  Positive subtype of Big_Integers, analogous to Positive and Integer
 
    subtype Big_Natural is Big_Integer
      with Dynamic_Predicate =>
             (if Is_Valid (Big_Natural)
              then Big_Natural >= To_Big_Integer (0)),
           Predicate_Failure => raise Constraint_Error;
+   --  Natural subtype of Big_Integers, analogous to Natural and Integer
 
    function In_Range
      (Arg : Valid_Big_Integer; Low, High : Big_Integer) return Boolean
@@ -89,6 +98,7 @@ is
    with
      Import,
      Global => null;
+   --  Check whether Arg is in the range Low .. High
 
    function To_Integer (Arg : Valid_Big_Integer) return Integer
    with
@@ -98,14 +108,18 @@ is
                          High => To_Big_Integer (Integer'Last))
                 or else raise Constraint_Error,
      Global => null;
+   --  Convert a valid Big_Integer into an Integer
 
    generic
       type Int is range <>;
    package Signed_Conversions is
+      --  Generic package to implement conversion functions for
+      --  arbitrary ranged types.
 
       function To_Big_Integer (Arg : Int) return Valid_Big_Integer
       with
         Global => null;
+      --  Convert a ranged type into a valid Big_Integer
 
       function From_Big_Integer (Arg : Valid_Big_Integer) return Int
       with
@@ -114,15 +128,19 @@ is
                             High => To_Big_Integer (Int'Last))
                    or else raise Constraint_Error,
         Global => null;
+      --  Convert a valid Big_Integer into a ranged type
    end Signed_Conversions;
 
    generic
       type Int is mod <>;
    package Unsigned_Conversions is
+      --  Generic package to implement conversion functions for
+      --  arbitrary modular types.
 
       function To_Big_Integer (Arg : Int) return Valid_Big_Integer
       with
         Global => null;
+      --  Convert a modular type into a valid Big_Integer
 
       function From_Big_Integer (Arg : Valid_Big_Integer) return Int
       with
@@ -131,6 +149,7 @@ is
                             High => To_Big_Integer (Int'Last))
                    or else raise Constraint_Error,
         Global => null;
+      --  Convert a valid Big_Integer into a modular type
 
    end Unsigned_Conversions;
 
@@ -138,10 +157,12 @@ is
    with
      Import,
      Global => null;
+   --  Create a valid Big_Integer from a String
 
    function From_Universal_Image (Arg : String) return Valid_Big_Integer
      renames From_String;
 
+   --  Mathematical operators defined for valid Big_Integer values
    function "+" (L : Valid_Big_Integer) return Valid_Big_Integer
    with
      Import,
@@ -209,10 +230,12 @@ is
      Pre    => (L /= To_Big_Integer (0) and R /= To_Big_Integer (0))
                or else raise Constraint_Error,
      Global => null;
+   --  Calculate the greatest common divisor for two Big_Integer values
 
 private
    pragma SPARK_Mode (Off);
 
    type Big_Integer is null record;
+   --  Solely consists of Ghost code
 
 end Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
index c2b95d853fe108366b9448f1e12da7c8f732580e..e77a7bbbd74653d74b70cec0be2e4e502102ef47 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package defines the base types used for big numbers in Ada as defined
+--  by ARM A.5.5.
+
 package Ada.Numerics.Big_Numbers
   with Pure
 is
    subtype Field is Integer range 0 .. 255;
+   --  The width of a big number. This is used when converting
+   --  the internal representation into a string.
+
    subtype Number_Base is Integer range 2 .. 16;
+   --  The base of a big number. This is used when converting
+   --  the internal representation into a string.
+
 end Ada.Numerics.Big_Numbers;
index 6304ce135d8efe3843ca1823d593b0525c509be7..3c174b8c5faaa11569665f5461ee34875bb23a38 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package is the top of the Ada.Numerics hierarchy as defined by ARM
+--  A.5. It provides an exception used by all children and basic mathematical
+--  constants.
+
 package Ada.Numerics is
    pragma Pure;
 
    Argument_Error : exception;
+   --  The Argument_Error exception is raised whenever an invalid
+   --  value has passed as an argument to the subprograms defined
+   --  this this package and its children.
 
    Pi : constant :=
           3.14159_26535_89793_23846_26433_83279_50288_41971_69399_37511;
-
-   --  ["03C0"] : constant := Pi;
-   --  This is the Greek letter Pi (for Ada 2005 AI-388). Note that it is
-   --  conforming to have this constant present even in Ada 95 mode, as there
-   --  is no way for a normal mode Ada 95 program to reference this identifier.
-   --  ???This is removed for now, because nobody uses it, and it causes
-   --  trouble for tools other than the compiler. If people want to use the
-   --  Greek letter in their programs, they can easily define it themselves.
+   --  The mathematical constant Pi
 
    e : constant :=
          2.71828_18284_59045_23536_02874_71352_66249_77572_47093_69996;
+   --  The mathematical constant e
 
 end Ada.Numerics;
index a8429c16a41689de40335b3033b55492127b089b..164a5ec5e31645fc7431df8022f5a2db7298e7ba 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package is defined by ARM 13.9 to implement unchecked type
+--  conversions.
+
 generic
    type Source (<>) is limited private;
    type Target (<>) is limited private;
 
 function Ada.Unchecked_Conversion (S : Source) return Target;
+--  Returns the bit pattern of ``S`` for type ``Target``
 
 pragma No_Elaboration_Code_All (Ada.Unchecked_Conversion);
 pragma Pure (Ada.Unchecked_Conversion);
index 439fa616ccbdb938b539087bd46ddbf9fbbdf7ba..4b3a1970d57305008191d05bf7186a97652c0313 100644 (file)
@@ -13,6 +13,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package is defined by ARM 13.11.2 to implement unchecked storage
+--  deallocation of an object designated by a value of an access type.
+
 generic
    type Object (<>) is limited private;
    type Name is access Object;
@@ -21,6 +24,8 @@ procedure Ada.Unchecked_Deallocation (X : in out Name) with
   Depends => (X    => null,  --  X on exit does not depend on its input value
               null => X),    --  X's input value has no effect
   Post => X = null;          --  X's output value is null
+--  Deallocate object denoted by X, and set X to null.
+
 pragma Preelaborate (Unchecked_Deallocation);
 
 pragma Import (Intrinsic, Ada.Unchecked_Deallocation);
index 4c2a3d00e50e7c2dfbcf7050bb2aca9979619d23..0a8480954c521638222fead98f5f83ce85a4d1d0 100644 (file)
@@ -13,6 +13,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This is an empty package at the top of the Ada package hierarchy
+
 package Ada is
    pragma No_Elaboration_Code_All;
    pragma Pure;
index 87603712cebd65a534b0e7fa8a7bfefe9056d982..7ac4a719276470d439bea2181ba8be85cff701a8 100644 (file)
@@ -57,7 +57,7 @@ package GNAT.Debug_Utilities is
    function Image (S : String) return String;
    --  Returns a string image of S, obtained by prepending and appending
    --  quote (") characters and doubling any quote characters in the string.
-   --  The maximum length of the result is thus 2 ** S'Length + 2.
+   --  The maximum length of the result is thus 2 * S'Length + 2.
 
    function Image (A : System.Address) return Image_String;
    --  Returns a string of the form 16#hhhh_hhhh# for 32-bit addresses
index 3df524faabb2cddb42c46561710508b68c1141cc..addbcedba452d4fc3b9693e911c0c90897de8000 100644 (file)
@@ -29,8 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package provides facilities for obtaining information on secondary
---  stack usage. See System.Secondary_Stack for documentation.
+--  This package provides a public interface to the internal package
+--  ``System.Secondary_Stack``. It allows users to query the current high water
+--  mark of the secondary stack, the stack used to return unconstrained types.
 
 with System.Secondary_Stack;
 
@@ -38,5 +39,7 @@ package GNAT.Secondary_Stack_Info is
 
    function SS_Get_Max return Long_Long_Integer
      renames System.Secondary_Stack.SS_Get_Max;
+   --  Return the high water mark of the secondary stack for the current
+   --  secondary stack in bytes.
 
 end GNAT.Secondary_Stack_Info;
index 4e8f37a37705714183766a83620edbb4b0b9c0e9..bf4d991c70fb4130e1accf8b1e199047caf24f08 100644 (file)
@@ -58,11 +58,15 @@ is
      Import, Convention => Intrinsic;
    --  Return the name of the current file, not including the path information.
    --  The result is considered to be a static string constant.
+   --
+   --  This function is an intrinsic, implemented by the compiler.
 
    function Line return Positive with
      Import, Convention => Intrinsic;
    --  Return the current input line number. The result is considered to be a
    --  static expression.
+   --
+   --  This function is an intrinsic, implemented by the compiler.
 
    function Source_Location return String with
      Volatile_Function,
@@ -74,6 +78,8 @@ is
    --  additional suffixes of the same form are appended after the separating
    --  string " instantiated at ". The result is considered to be a static
    --  string constant.
+   --
+   --  This function is an intrinsic, implemented by the compiler.
 
    function Enclosing_Entity return String with
      Volatile_Function,
@@ -90,12 +96,16 @@ is
    --  the string returned will be the name of the instance, not the generic
    --  package itself. This is useful in identifying and logging information
    --  from within generic templates.
+   --
+   --  This function is an intrinsic, implemented by the compiler.
 
    function Compilation_ISO_Date return String with
      Volatile_Function,
      Global => Source_Code_Information,
      Import, Convention => Intrinsic;
    --  Returns date of compilation as a static string "yyyy-mm-dd".
+   --
+   --  This function is an intrinsic, implemented by the compiler.
 
    function Compilation_Date return String with
      Volatile_Function,
@@ -103,6 +113,8 @@ is
      Import, Convention => Intrinsic;
    --  Returns date of compilation as a static string "mmm dd yyyy". This is
    --  in local time form, and is exactly compatible with C macro __DATE__.
+   --
+   --  This function is an intrinsic, implemented by the compiler.
 
    function Compilation_Time return String with
      Volatile_Function,
@@ -110,5 +122,7 @@ is
      Import, Convention => Intrinsic;
    --  Returns GMT time of compilation as a static string "hh:mm:ss". This is
    --  in local time form, and is exactly compatible with C macro __TIME__.
+   --
+   --  This function is an intrinsic, implemented by the compiler.
 
 end GNAT.Source_Info;
index 300895409d0d9c995092d40f8c9645c9dfc4c95e..6f2ae0164fa0e2e0bc7ba4372ea693f8f501369b 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This is the parent package for a library of useful units provided with GNAT
+--  This is parent package of the GNAT package hierarchy, a collection of
+--  useful packages provided with GNAT. It contains types and exception
+--  definitions that a commonly used by GNAT child packages. As definitions
+--  these do not appear in the runtime code if they are not used.
 
---  Note: this unit is used during bootstrap, see ADA_GENERATED_FILES in
+--  This unit is used during bootstrap, see ADA_GENERATED_FILES in
 --  gcc-interface/Make-lang.in for details on the constraints.
 
 package GNAT is
index f88c63262f0a8836ee2cd42f09fbc63fb5e9f047..bb50aa4037b9837243916b942a45808c711d8655 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains additional C-related definitions, intended for use
---  with either manually or automatically generated bindings to C libraries.
+--  This package contains additional C type definitions that are not defined
+--  by ARM B.2 and is intended for use with manual or automatically generated
+--  bindings to C libraries. Specifically, it defines types for bitfields,
+--  C void types, incomplete and unknown structs and classes, C bool, 64-bit
+--  and 128-bit types, and 128-bit floating-point types.
 
 with System;
 
@@ -54,39 +57,38 @@ package Interfaces.C.Extensions is
    type incomplete_class_def_ptr is access incomplete_class_def;
    for incomplete_class_def_ptr'Storage_Size use 0;
 
-   --  C bool
-
    subtype bool is Interfaces.C.C_bool;
+   --  C bool
 
    --  64-bit integer types
 
    subtype long_long is Interfaces.C.long_long;
    subtype unsigned_long_long is Interfaces.C.unsigned_long_long;
 
-   --  128-bit integer type available on 64-bit platforms:
-   --  typedef int signed_128 __attribute__ ((mode (TI)));
-
    type Signed_128 is record
       low, high : unsigned_long_long;
    end record;
+   --  128-bit integer type available on 64-bit platforms:
+   --  typedef int signed_128 __attribute__ ((mode (TI)));
+
    pragma Convention (C_Pass_By_Copy, Signed_128);
    for Signed_128'Alignment use unsigned_long_long'Alignment * 2;
 
-   --  128-bit floating-point type available on x86:
-   --  typedef float float_128 __attribute__ ((mode (TF)));
-
    type Float_128 is record
       low, high : unsigned_long_long;
    end record;
+   --  128-bit floating-point type available on x86:
+   --  typedef float float_128 __attribute__ ((mode (TF)));
+
    pragma Convention (C_Pass_By_Copy, Float_128);
    for Float_128'Alignment use unsigned_long_long'Alignment * 2;
 
-   --  128-bit complex floating-point type available on x86:
-   --  typedef _Complex float cfloat_128 __attribute__ ((mode (TC)));
-
    type CFloat_128 is record
       re, im : Float_128;
    end record;
+   --  128-bit complex floating-point type available on x86:
+   --  typedef _Complex float cfloat_128 __attribute__ ((mode (TC)));
+
    pragma Convention (C_Pass_By_Copy, CFloat_128);
 
    --  Types for bitfields
index 73a47ae98bcac42f5ed2e3b475b62d2aa9c57adb..0af9107826ca4398522eed7b400a84a8a3963317 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains additional C-related definitions, intended for use
---  with either manually or automatically generated bindings to C libraries.
+--  This package contains additional C type definitions that are not defined
+--  by ARM B.2 and is intended for use with manual or automatically generated
+--  bindings to C libraries. Specifically, it defines types for bitfields,
+--  C void types, incomplete and unknown structs and classes, C bool, 64-bit
+--  and 128-bit types, and 128-bit floating-point types.
 
 with System;
 
@@ -54,30 +57,29 @@ package Interfaces.C.Extensions is
    type incomplete_class_def_ptr is access incomplete_class_def;
    for incomplete_class_def_ptr'Storage_Size use 0;
 
-   --  C bool
-
    subtype bool is Interfaces.C.C_bool;
+   --  C bool
 
    --  64-bit integer types
 
    subtype long_long is Interfaces.C.long_long;
    subtype unsigned_long_long is Interfaces.C.unsigned_long_long;
 
-   --  128-bit floating-point type available on x86:
-   --  typedef float float_128 __attribute__ ((mode (TF)));
-
    type Float_128 is record
       low, high : unsigned_long_long;
    end record;
+   --  128-bit floating-point type available on x86:
+   --  typedef float float_128 __attribute__ ((mode (TF)));
+
    pragma Convention (C_Pass_By_Copy, Float_128);
    for Float_128'Alignment use unsigned_long_long'Alignment * 2;
 
-   --  128-bit complex floating-point type available on x86:
-   --  typedef _Complex float cfloat_128 __attribute__ ((mode (TC)));
-
    type CFloat_128 is record
       re, im : Float_128;
    end record;
+   --  128-bit complex floating-point type available on x86:
+   --  typedef _Complex float cfloat_128 __attribute__ ((mode (TC)));
+
    pragma Convention (C_Pass_By_Copy, CFloat_128);
 
    --  Types for bitfields
index 494b949fe7fef75372d16cbeef9dbf38680b4b39..b76f736367112ff2c7a2725b156afa08fdbf5a8b 100644 (file)
@@ -43,6 +43,7 @@ is
    --  since arbitrary addresses can be converted, and it is quite likely that
    --  this type will in fact be used for aliasing values of other types.
 
+   --  Convert between chars_ptr and a C pointer
    function To_chars_ptr is
       new Ada.Unchecked_Conversion (System.Parameters.C_Address, chars_ptr);
 
@@ -73,9 +74,12 @@ is
 
    function Memory_Alloc (Size : size_t) return chars_ptr;
    pragma Import (C, Memory_Alloc, System.Parameters.C_Malloc_Linkname);
+   --  Allocate a chunk of memory on the heap
 
    procedure Memory_Free (Address : chars_ptr);
    pragma Import (C, Memory_Free, "__gnat_free");
+   --  Deallocate a previously allocated chunk of memory from the heap. On
+   --  runtimes that do not allow deallocation this is a no-op.
 
    ---------
    -- "+" --
index b59d1c746690b72ccc3f611aade00346744a623e..b68a43ee4b698ecbf1dcd3bc2e662f6c08340ba5 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package declares types and subprograms that allow the allocation,
+--  reference, update and deallocation of C-style strings, as defined by
+--  ARM B.3.1.
+
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
 --  setting the corresponding assertion policy to Ignore. These preconditions
@@ -49,6 +53,7 @@ package Interfaces.C.Strings with
 is
    pragma Preelaborate;
 
+   --  Definitions for C character arrays
    type char_array_access is access all char_array;
    for char_array_access'Size use System.Parameters.ptr_bits;
 
@@ -63,30 +68,38 @@ is
    type chars_ptr_array is array (size_t range <>) of aliased chars_ptr;
 
    Null_Ptr : constant chars_ptr;
+   --  Null value for private type chars_ptr
 
    function To_Chars_Ptr
      (Item      : char_array_access;
       Nul_Check : Boolean := False) return chars_ptr
    with
      SPARK_Mode => Off;  --  To_Chars_Ptr'Result is aliased with Item
+   --  Extract raw chars_ptr from char_array access type
 
    function New_Char_Array (Chars : char_array) return chars_ptr with
      Volatile_Function,
      Post   => New_Char_Array'Result /= Null_Ptr,
      Global => (Input => C_Memory);
+   --  Copy the contents of Chars into a newly allocated chars_ptr
 
    function New_String (Str : String) return chars_ptr with
      Volatile_Function,
      Post   => New_String'Result /= Null_Ptr,
      Global => (Input => C_Memory);
+   --  Copy the contents of Str into a newly allocated chars_ptr
 
    procedure Free (Item : in out chars_ptr) with
      SPARK_Mode => Off;
    --  When deallocation is prohibited (eg: cert runtimes) this routine
-   --  will raise Program_Error
+   --  will raise Program_Error.
 
    Dereference_Error : exception;
+   --  This exception is raised when a subprogram of this unit tries to
+   --  dereference a chars_ptr with the value Null_Ptr.
 
+   --  The Value functions copy the contents of a chars_ptr object
+   --  into a char_array/String.
    function Value (Item : chars_ptr) return char_array with
      Pre    => Item /= Null_Ptr,
      Global => (Input => C_Memory);
@@ -112,7 +125,11 @@ is
    function Strlen (Item : chars_ptr) return size_t with
      Pre    => Item /= Null_Ptr,
      Global => (Input => C_Memory);
+   --  Return the length of a string contained in a chars_ptr
 
+   --  Update the contents of a chars_ptr with a char_array/String. If the
+   --  update exceeds the original length of the chars_ptr the Update_Error
+   --  exception is raised.
    procedure Update
      (Item   : chars_ptr;
       Offset : size_t;
index cb20f34b0d7d5f82330e194749839cc38e8d26d1..f1e066c03ceb583a336d656804127af5c32a4d88 100644 (file)
 
 --  This is the runtime version of this unit (not used during GNAT build)
 
+--  ``Interfaces`` is the parent of several library packages that declare types
+--  and other entities useful for interfacing to foreign languages as defined
+--  by ARM B.2.
+--
+--  It defines signed and modular integer types of 8, 16, 32, 64 and 128 bits.
+--  For each such modular type, shifting and rotating intrinsic subprograms
+--  are specified. There is also the definition of IEEE 754 floating point
+--  types (``IEEE_Float_32``, ``IEEE_Float_64``, and ``IEEE_Extended_Float``).
+
 package Interfaces with
   Always_Terminates
 is
    pragma No_Elaboration_Code_All;
    pragma Pure;
 
+   pragma Implementation_Defined;
    --  All identifiers in this unit are implementation defined
 
-   pragma Implementation_Defined;
+   --  Definitions of 8, 16, 24, 32, 64 and 128 bit signed and unsigned integer
+   --  types.
 
    type Integer_8  is range -2 **  7 .. 2 **  7 - 1;
    for Integer_8'Size use  8;
@@ -56,15 +67,15 @@ is
 
    type Integer_64 is new Long_Long_Integer;
    for Integer_64'Size use 64;
-   --  Note: we use Long_Long_Integer'First instead of -2 ** 63 to allow this
-   --  unit to compile when using custom target configuration files where the
-   --  maximum integer is 32 bits. This is useful for static analysis tools
-   --  such as SPARK or CodePeer. In the normal case Long_Long_Integer is
-   --  always 64-bits so we get the desired 64-bit type.
+   --  We use Long_Long_Integer'First instead of -2 ** 63 to allow this unit to
+   --  compile when using custom target configuration files where the maximum
+   --  integer is 32 bits. This is useful for static analysis tools such as
+   --  SPARK or CodePeer. In the normal case Long_Long_Integer is 64-bits so we
+   --  get the desired 64-bit type.
 
    type Integer_128 is new Long_Long_Long_Integer;
-   --  Note: we use Long_Long_Long_Integer instead of literal bounds to allow
-   --  this unit to be compiled with compilers not supporting 128-bit integers.
+   --  We use Long_Long_Long_Integer instead of literal bounds to allow this
+   --  unit to be compiled with compilers not supporting 128-bit integers.
    --  We do not put a confirming size clause of 128 bits for the same reason.
 
    type Unsigned_8 is mod 2 ** 8;
@@ -88,6 +99,8 @@ is
    type Unsigned_128 is mod 2 ** Long_Long_Long_Integer'Size;
    --  See comment on Integer_128 above
 
+   --  Compiler intrinsics implemented by the compiler
+
    function Shift_Left
      (Value  : Unsigned_8;
       Amount : Natural) return Unsigned_8
@@ -221,9 +234,9 @@ is
    type IEEE_Float_64 is digits 15;
    for IEEE_Float_64'Size use 64;
 
-   --  If there is an IEEE extended float available on the machine, we assume
-   --  that it is available as Long_Long_Float.
-
+   --  If there is an IEEE extended float available on the machine, we
+   --  assume that it is available as Long_Long_Float.
+   --
    --  Note: it is harmless, and explicitly permitted, to include additional
    --  types in interfaces, so it is not wrong to have IEEE_Extended_Float
    --  defined even if the extended format is not available.
index 55e1ae594d8e8c49178a71c022de7ceaa0b078ff..51c702efb78a9647f87f84be6cfcbc54aec56b67 100644 (file)
@@ -13,6 +13,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package is a renaming of :ref:`system.machine_code`
+
 with System.Machine_Code;
 
 package Machine_Code renames System.Machine_Code;
index f9625f8b48b2e4804db695f1047597338bb449ed..50a488d205b92c23e3c13a321e4be20ed00ab1ba 100644 (file)
 
 --  This package provides arithmetic and logical operations on type Address.
 --  It is intended for use by other packages in the System hierarchy. For
---  applications requiring this capability, see System.Storage_Elements or
---  the operations introduced in System.Aux_DEC;
-
---  The reason we need this package is that arithmetic operations may not
---  be available in the case where type Address is non-private and the
---  operations have been made abstract in the spec of System (to avoid
---  inappropriate use by applications programs). In addition, the logical
---  operations may not be available if type Address is a signed integer.
+--  applications requiring this capability, use `System.Storage_Elements`
+--  instead.
+--
+--  The reason for this package is that arithmetic operations may not be
+--  available in the case where type Address is non-private and the operations
+--  have been made abstract in the spec of System (to avoid inappropriate use
+--  by applications programs). In addition, the logical operations may not be
+--  available if type Address is a signed integer.
 
 package System.Address_Operations is
    pragma Pure;
@@ -47,24 +47,29 @@ package System.Address_Operations is
    --  a modular type with the same length as Address, i.e. they provide
    --  twos complement wrap around arithmetic treating the address value
    --  as an unsigned value, with no overflow checking.
-
+   --
    --  Note that we do not use the infix names for these operations to
    --  avoid problems with ambiguities coming from declarations in package
    --  Standard (which may or may not be visible depending on the exact
    --  form of the declaration of type System.Address).
-
+   --
    --  For addition, subtraction, and multiplication, the effect of overflow
    --  is 2's complement wrapping (as though the type Address were unsigned).
-
+   --
    --  For division and modulus operations, the caller is responsible for
    --  ensuring that the Right argument is non-zero, and the effect of the
    --  call is not specified if a zero argument is passed.
 
    function AddA (Left, Right : Address) return Address;
+   --  Computes the sum of ``Left`` and ``Right``
    function SubA (Left, Right : Address) return Address;
+   --  Computes the difference between ``Left`` and ``Right``
    function MulA (Left, Right : Address) return Address;
+   --  Computes the product of ``Left`` and ``Right``
    function DivA (Left, Right : Address) return Address;
+   --  Computes the quotient of ``Left`` and ``Right``
    function ModA (Left, Right : Address) return Address;
+   --  Computes the modulus of ``Left`` and ``Right``
 
    --  The semantics of the logical operations are those that apply to
    --  a modular type with the same length as Address, i.e. they provide
@@ -72,7 +77,9 @@ package System.Address_Operations is
    --  bit if Address is a signed integer type).
 
    function AndA (Left, Right : Address) return Address;
+   --  Computes the bit-wise 'and' mask of ``Left`` and ``Right``
    function OrA  (Left, Right : Address) return Address;
+   --  Computes the bit-wise 'or' mask of ``Left`` and ``Right``
 
    pragma Inline_Always (AddA);
    pragma Inline_Always (SubA);
index 5597c7b4dc97e974f16a912efc3c23f127a6ad9f..f1275adbd57a48815045d15afb1cb69f1cf920e3 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package provides software routines for doing arithmetic on "double"
---  signed integer values in cases where either overflow checking is required,
---  or intermediate results are longer than the result type.
+--  This generic package provides software routines for doing arithmetic on
+--  double word signed integer values in cases where either overflow checking
+--  is required, or intermediate results are longer than the result type.
 
 with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
 
@@ -100,24 +100,45 @@ is
    with
      Pre  => In_Double_Int_Range (Big (X) + Big (Y)),
      Post => Add_With_Ovflo_Check'Result = X + Y;
-   --  Raises Constraint_Error if sum of operands overflows Double_Int,
-   --  otherwise returns the signed integer sum.
+   --  Raises Constraint_Error if sum of operands overflows 64 bits,
+   --  otherwise returns the 64-bit signed integer sum.
+   --
+   --  The sum of ``X`` and ``Y`` is first computed using wrap-around
+   --  semantics.
+   --
+   --  If the sign of ``X`` and ``Y`` are opposed, no overflow is possible and
+   --  the result is correct.
+   --
+   --  Otherwise, ``X`` and ``Y`` have the same sign; if the sign of the result
+   --  is not identical to ``X`` (or ``Y``), then an overflow occurred and
+   --  the exception *Constraint_Error* is raised; otherwise the result is
+   --  correct.
 
    function Subtract_With_Ovflo_Check (X, Y : Double_Int) return Double_Int
    with
      Pre  => In_Double_Int_Range (Big (X) - Big (Y)),
      Post => Subtract_With_Ovflo_Check'Result = X - Y;
-   --  Raises Constraint_Error if difference of operands overflows Double_Int,
-   --  otherwise returns the signed integer difference.
+   --  Raises Constraint_Error if difference of operands overflows 64
+   --  bits, otherwise returns the 64-bit signed integer difference.
+   --
+   --  The logic of the implementation is reversed from *Add_With_Ovflo_Check*:
+   --  if ``X`` and ``Y`` have the same sign, no overflow is checked, otherwise
+   --  a sign of the result is compared with the sign of ``X`` to check for
+   --  overflow.
 
    function Multiply_With_Ovflo_Check (X, Y : Double_Int) return Double_Int
    with
      Pre  => In_Double_Int_Range (Big (X) * Big (Y)),
      Post => Multiply_With_Ovflo_Check'Result = X * Y;
    pragma Convention (C, Multiply_With_Ovflo_Check);
-   --  Raises Constraint_Error if product of operands overflows Double_Int,
-   --  otherwise returns the signed integer product. Gigi may also call this
-   --  routine directly.
+   --  Raises Constraint_Error if product of operands overflows 64
+   --  bits, otherwise returns the 64-bit signed integer product.
+   --  GIGI may also call this routine directly.
+   --
+   --  The multiplication is done using pencil and paper algorithm using base
+   --  2**32. The multiplication is done on unsigned values, then the correct
+   --  signed value is returned. Overflow check is performed by looking at
+   --  higher digits.
 
    function Same_Sign (X, Y : Big_Integer) return Boolean is
      (X = Big (Double_Int'(0))
@@ -153,13 +174,32 @@ is
                                       Big (X) * Big (Y) / Big (Z), Big (R))
           else
             Big (Q) = Big (X) * Big (Y) / Big (Z));
-   --  Performs the division of (X * Y) / Z, storing the quotient in Q
-   --  and the remainder in R. Constraint_Error is raised if Z is zero,
-   --  or if the quotient does not fit in Double_Int. Round indicates if
-   --  the result should be rounded. If Round is False, then Q, R are
-   --  the normal quotient and remainder from a truncating division.
-   --  If Round is True, then Q is the rounded quotient. The remainder
-   --  R is not affected by the setting of the Round flag.
+   --  Performs the division of (``X`` * ``Y``) / ``Z``, storing the quotient
+   --  in ``Q`` and the remainder in ``R``.
+   --
+   --  Constraint_Error is raised if ``Z`` is zero, or if the quotient does not
+   --  fit in ``Double_Int``.
+   --
+   --  ``Round`` indicates if the result should be rounded. If ``Round`` is
+   --  False, then ``Q``, ``R`` are the normal quotient and remainder from a
+   --  truncating division. If ``Round`` is True, then ``Q`` is the rounded
+   --  quotient. The remainder ``R`` is not affected by the setting of the
+   --  ``Round`` flag.
+   --
+   --  The multiplication is done using pencil and paper algorithm using base
+   --  2**32. The multiplication is done on unsigned values. The result is a
+   --  128 bit value.
+   --
+   --  The overflow is detected on the intermediate value.
+   --
+   --  If Z is a 32 bit value, the division is done using pencil and paper
+   --  algorithm.
+   --
+   --  Otherwise, the division is performed using the algorithm D from section
+   --  4.3.1 of "The Art of Computer Programming Vol. 2" [TACP2]. Rounding is
+   --  applied on the result.
+   --
+   --  Finally, the sign is applied to the result and returned.
 
    procedure Double_Divide
      (X, Y, Z : Double_Int;
@@ -180,12 +220,26 @@ is
                                       Big (X) / (Big (Y) * Big (Z)), Big (R))
           else
             Big (Q) = Big (X) / (Big (Y) * Big (Z)));
-   --  Performs the division X / (Y * Z), storing the quotient in Q and
-   --  the remainder in R. Constraint_Error is raised if Y or Z is zero,
-   --  or if the quotient does not fit in Double_Int. Round indicates if the
-   --  result should be rounded. If Round is False, then Q, R are the normal
-   --  quotient and remainder from a truncating division. If Round is True,
-   --  then Q is the rounded quotient. The remainder R is not affected by the
-   --  setting of the Round flag.
+   --  Performs the division ``X`` / (``Y`` * ``Z``), storing the quotient in
+   --  ``Q`` and the remainder in ``R``. Constraint_Error is raised if ``Y`` or
+   --  ``Z`` is zero, or if the quotient does not fit in ``Double_Int``.
+   --
+   --  ``Round`` indicates if the result should be rounded. If ``Round`` is
+   --  False, then ``Q``, ``R`` are the normal quotient and remainder from a
+   --  truncating division. If ``Round`` is True, then ``Q`` is the rounded
+   --  quotient. The remainder ``R`` is not affected by the setting of the
+   --  ``Round`` flag.
+   --
+   --  Division by 0 is first detected.
+   --
+   --  The intermediate value ``Y`` * ``Z`` is then computed on 128 bits. The
+   --  multiplication is done on unsigned values.
+   --
+   --  If the high 64 bits of the intermediate value is not 0, then 0 is
+   --  returned. The overflow case of the largest negative number divided by
+   --  -1 is detected here.
+   --
+   --  64-bit division is then performed, the result is rounded, its sign is
+   --  corrected, and then returned.
 
 end System.Arith_Double;
index f12c7bf90daa100b36a4ea6bcb9b6dafb674612e..cd1b1aee37b9a76fbc81ad237ec56136e80c4d39 100644 (file)
@@ -106,12 +106,31 @@ is
                                       Big (X) * Big (Y) / Big (Z), Big (R))
           else
             Big (Q) = Big (X) * Big (Y) / Big (Z));
-   --  Performs the division of (X * Y) / Z, storing the quotient in Q
-   --  and the remainder in R. Constraint_Error is raised if Z is zero,
-   --  or if the quotient does not fit in 32 bits. Round indicates if
-   --  the result should be rounded. If Round is False, then Q, R are
-   --  the normal quotient and remainder from a truncating division.
-   --  If Round is True, then Q is the rounded quotient. The remainder
-   --  R is not affected by the setting of the Round flag.
+   --  Performs the division of (``X`` * ``Y``) / ``Z``, storing the quotient
+   --  in ``Q`` and the remainder in ``R``.
+   --
+   --  Constraint_Error is raised if ``Z`` is zero, or if the quotient does not
+   --  fit in 32-bits.
+   --
+   --  ``Round`` indicates if the result should be rounded. If ``Round`` is
+   --  False, then ``Q``, ``R`` are the normal quotient and remainder from a
+   --  truncating division. If ``Round`` is True, then ``Q`` is the rounded
+   --  quotient. The remainder ``R`` is not affected by the setting of the
+   --  ``Round`` flag.
+   --
+   --  The multiplication is done using pencil and paper algorithm using base
+   --  2**32. The multiplication is done on unsigned values. The result is a
+   --  128 bit value.
+   --
+   --  The overflow is detected on the intermediate value.
+   --
+   --  If Z is a 32 bit value, the division is done using pencil and paper
+   --  algorithm.
+   --
+   --  Otherwise, the division is performed using the algorithm D from section
+   --  4.3.1 of "The Art of Computer Programming Vol. 2" [TACP2]. Rounding is
+   --  applied on the result.
+   --
+   --  Finally, the sign is applied to the result and returned.
 
 end System.Arith_32;
index 88f4677f5e04d2abc6bda8989680e3c79e8e9a76..cbf0af5fc25dcad6bd8af9fbe5226194ffe001f3 100644 (file)
@@ -81,6 +81,17 @@ is
      Post => Add_With_Ovflo_Check64'Result = X + Y;
    --  Raises Constraint_Error if sum of operands overflows 64 bits,
    --  otherwise returns the 64-bit signed integer sum.
+   --
+   --  The sum of ``X`` and ``Y`` is first computed using wrap-around
+   --  semantics.
+   --
+   --  If the sign of ``X`` and ``Y`` are opposed, no overflow is possible and
+   --  the result is correct.
+   --
+   --  Otherwise, ``X`` and ``Y`` have the same sign; if the sign of the result
+   --  is not identical to ``X`` (or ``Y``), then an overflow occurred and
+   --  the exception *Constraint_Error* is raised; otherwise the result is
+   --  correct.
 
    function Subtract_With_Ovflo_Check64 (X, Y : Int64) return Int64
    with
@@ -88,6 +99,11 @@ is
      Post => Subtract_With_Ovflo_Check64'Result = X - Y;
    --  Raises Constraint_Error if difference of operands overflows 64
    --  bits, otherwise returns the 64-bit signed integer difference.
+   --
+   --  The logic of the implementation is reversed from *Add_With_Ovflo_Check*:
+   --  if ``X`` and ``Y`` have the same sign, no overflow is checked, otherwise
+   --  a sign of the result is compared with the sign of ``X`` to check for
+   --  overflow.
 
    function Multiply_With_Ovflo_Check64 (X, Y : Int64) return Int64
    with
@@ -96,7 +112,12 @@ is
    pragma Export (C, Multiply_With_Ovflo_Check64, "__gnat_mulv64");
    --  Raises Constraint_Error if product of operands overflows 64
    --  bits, otherwise returns the 64-bit signed integer product.
-   --  Gigi may also call this routine directly.
+   --  GIGI may also call this routine directly.
+   --
+   --  The multiplication is done using pencil and paper algorithm using base
+   --  2**32. The multiplication is done on unsigned values, then the correct
+   --  signed value is returned. Overflow check is performed by looking at
+   --  higher digits.
 
    function Same_Sign (X, Y : Big_Integer) return Boolean is
      (X = Big (Int64'(0))
@@ -132,13 +153,32 @@ is
                                       Big (X) * Big (Y) / Big (Z), Big (R))
           else
             Big (Q) = Big (X) * Big (Y) / Big (Z));
-   --  Performs the division of (X * Y) / Z, storing the quotient in Q
-   --  and the remainder in R. Constraint_Error is raised if Z is zero,
-   --  or if the quotient does not fit in 64 bits. Round indicates if
-   --  the result should be rounded. If Round is False, then Q, R are
-   --  the normal quotient and remainder from a truncating division.
-   --  If Round is True, then Q is the rounded quotient. The remainder
-   --  R is not affected by the setting of the Round flag.
+   --  Performs the division of (``X`` * ``Y``) / ``Z``, storing the quotient
+   --  in ``Q`` and the remainder in ``R``.
+   --
+   --  Constraint_Error is raised if ``Z`` is zero, or if the quotient does not
+   --  fit in 64-bits.
+   --
+   --  ``Round`` indicates if the result should be rounded. If ``Round`` is
+   --  False, then ``Q``, ``R`` are the normal quotient and remainder from a
+   --  truncating division. If ``Round`` is True, then ``Q`` is the rounded
+   --  quotient. The remainder ``R`` is not affected by the setting of the
+   --  ``Round`` flag.
+   --
+   --  The multiplication is done using pencil and paper algorithm using base
+   --  2**32. The multiplication is done on unsigned values. The result is a
+   --  128 bit value.
+   --
+   --  The overflow is detected on the intermediate value.
+   --
+   --  If Z is a 32 bit value, the division is done using pencil and paper
+   --  algorithm.
+   --
+   --  Otherwise, the division is performed using the algorithm D from section
+   --  4.3.1 of "The Art of Computer Programming Vol. 2" [TACP2]. Rounding is
+   --  applied on the result.
+   --
+   --  Finally, the sign is applied to the result and returned.
 
    procedure Scaled_Divide
      (X, Y, Z : Int64;
@@ -165,13 +205,27 @@ is
                                       Big (X) / (Big (Y) * Big (Z)), Big (R))
           else
             Big (Q) = Big (X) / (Big (Y) * Big (Z)));
-   --  Performs the division X / (Y * Z), storing the quotient in Q and
-   --  the remainder in R. Constraint_Error is raised if Y or Z is zero,
-   --  or if the quotient does not fit in 64 bits. Round indicates if the
-   --  result should be rounded. If Round is False, then Q, R are the normal
-   --  quotient and remainder from a truncating division. If Round is True,
-   --  then Q is the rounded quotient. The remainder R is not affected by the
-   --  setting of the Round flag.
+   --  Performs the division ``X`` / (``Y`` * ``Z``), storing the quotient in
+   --  ``Q`` and the remainder in ``R``. Constraint_Error is raised if ``Y`` or
+   --  ``Z`` is zero, or if the quotient does not fit in 64-bits.
+   --
+   --  ``Round`` indicates if the result should be rounded. If ``Round`` is
+   --  False, then ``Q``, ``R`` are the normal quotient and remainder from a
+   --  truncating division. If ``Round`` is True, then ``Q`` is the rounded
+   --  quotient. The remainder ``R`` is not affected by the setting of the
+   --  ``Round`` flag.
+   --
+   --  Division by 0 is first detected.
+   --
+   --  The intermediate value ``Y`` * ``Z`` is then computed on 128 bits. The
+   --  multiplication is done on unsigned values.
+   --
+   --  If the high 64 bits of the intermediate value is not 0, then 0 is
+   --  returned. The overflow case of the largest negative number divided by
+   --  -1 is detected here.
+   --
+   --  64-bit division is then performed, the result is rounded, its sign is
+   --  corrected, and then returned.
 
    procedure Double_Divide
      (X, Y, Z : Int64;
index 11679ad570dff5597905883bb49c65018709be36..22453800a0ef9722a7f39e9369e9d6995e58124a 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package provides support for assertions (including pragma Assert,
---  pragma Debug, and Precondition/Postcondition/Predicate/Invariant aspects
---  and their corresponding pragmas).
+--  This package provides support for assertions (including ``pragma Assert``,
+--  ``pragma Debug``, and Precondition/Postcondition/Predicate/Invariant
+--  aspects and their corresponding pragmas).
 
 --  This unit may be used directly from an application program by providing
 --  an appropriate WITH, and the interface can be expected to remain stable.
index 165464b4c1073a97310a4ed7eafd3f028184393e..bba2a7efb6bb04fc431829a9ea45c690b3022c57 100644 (file)
@@ -33,6 +33,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  Provides the means to convert addresses to access types as defined by ARM
+--  13.7.2.
+
 generic
    type Object (<>) is limited private;
 
@@ -46,6 +49,7 @@ package System.Address_To_Access_Conversions is
 
    type Object_Pointer is access all Object;
    for Object_Pointer'Size use Standard'Address_Size;
+   --  Access type definition to the object
 
    pragma No_Strict_Aliasing (Object_Pointer);
    --  Strictly speaking, this routine should not be used to generate pointers
@@ -56,8 +60,15 @@ package System.Address_To_Access_Conversions is
 
    function To_Pointer (Value : Address)        return Object_Pointer with
      Global => null;
+   --  Return ``Value`` as an access to *Object*.
+   --
+   --  This function is an intrinsic so implemented by the compiler.
+
    function To_Address (Value : Object_Pointer) return Address with
      SPARK_Mode => Off;
+   --  Return ``Value`` as an *Address*.
+   --
+   --  This function is an intrinsic so implemented by the compiler.
 
    pragma Import (Intrinsic, To_Pointer);
    pragma Import (Intrinsic, To_Address);
index c1e9f59ada829e4fc5c6ac6420d9fe3bb4342e80..668483544fb75f3f5bcae7c346d289c96998b96f 100644 (file)
@@ -29,7 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package provides atomic counter on platforms where it is supported:
+--  This package provides atomic counters routines
+
+--  This package support the following platforms:
 --    - all Alpha platforms
 --    - all AARCH64 platforms
 --    - all ARM platforms
index 3a2345526bf11f767ee7c8584cce57ae8a91edd6..5ed6f57d8c5f449871d101c789247091f6856a3c 100644 (file)
@@ -29,9 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package implements Atomic_Counter and Atomic_Unsigned operations for
---  platforms where GCC supports __atomic_add_fetch and __atomic_sub_fetch
---  builtins.
+--  This package implements unsigned and signed atomic counters using GCC's
+--  __atomic_add_fetch and __atomic_sub_fetch builtins.
 
 with System.Atomic_Primitives; use System.Atomic_Primitives;
 
index 980e9faa1355cbe3a420be0e0f71c12e33f83c9a..30db899f9359f0e76a524aaf2fdaa0c480d7e955 100644 (file)
@@ -29,7 +29,7 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains both atomic primitives defined from GCC built-in
+--  This package contains atomic primitives defined from GCC built-in
 --  functions and operations used by the compiler to generate the lock-free
 --  implementation of protected objects.
 
index a78fc0d72c13f058fb200e2fa9192e197015886e..0e1980bf5e9dfe3951799f38119d7d08ee2e752a 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Operations on packed bit strings
+--  This package provides subprograms on bit strings. The compiler uses these
+--  subprograms for packed array operations.
 
 package System.Bit_Ops is
 
-   --  Note: in all the following routines, the System.Address parameters
+   --  In all the following routines, the System.Address parameters
    --  represent the address of the first byte of an array used to represent
    --  a packed array (of type System.Unsigned_Types.Packed_Bytes{1,2,4})
    --  The length in bits is passed as a separate parameter. Note that all
@@ -45,30 +46,49 @@ package System.Bit_Ops is
       Right  : System.Address;
       Rlen   : Natural;
       Result : System.Address);
-   --  Bitwise "and" of given bit string with result being placed in Result.
-   --  The and operation is allowed to destroy unused bits in the last byte,
-   --  i.e. to leave them set in an undefined manner. Note that Left, Right
-   --  and Result always have the same length in bits (Len).
+   --  Bitwise "and" of given bit string with result being placed in
+   --  ``Result``. The and operation is allowed to destroy unused bits in
+   --  the last byte, i.e. to leave them set in an undefined manner. Note that
+   --  ``Left``, ``Right`` and ``Result`` always have the same length in bits.
+   --
+   --  The procedure raises Constraint_Error if ``Llen`` and ``Rlen`` are not
+   --  equal.
+   --
+   --  The bitwise "and" operation is performed byte per byte, where the number
+   --  of bytes is the smallest number not less than ``Llen`` (or ``Rlen``)
+   --  divided by the 8.
 
    function Bit_Eq
      (Left  : System.Address;
       Llen  : Natural;
       Right : System.Address;
       Rlen  : Natural) return Boolean;
-   --  Left and Right are the addresses of two bit packed arrays with Llen
-   --  and Rlen being the respective length in bits. The routine compares the
-   --  two bit strings for equality, being careful not to include the unused
-   --  bits in the final byte. Note that the result is always False if Rlen
-   --  is not equal to Llen.
+   --  ``Left`` and ``Right`` are the addresses of two bit packed arrays with
+   --  ``Llen`` and ``Rlen`` being the respective length in bits. The routine
+   --  compares the two bit strings for equality, being careful not to include
+   --  the unused bits in the final byte.
+   --
+   --  Note that the result is always False if ``Rlen`` is not equal to
+   --  ``Llen``.
+   --
+   --  Otherwise all the bytes but the last one are compared, and False is
+   --  returned if they aren't equal. Only the ``Llen`` mod 8 bits of the last
+   --  byte are compared, and false is returned if they aren't equal.
+   --
+   --  Otherwise, True is returned.
 
    procedure Bit_Not
      (Opnd   : System.Address;
       Len    : Natural;
       Result : System.Address);
-   --  Bitwise "not" of given bit string with result being placed in Result.
-   --  The not operation is allowed to destroy unused bits in the last byte,
-   --  i.e. to leave them set in an undefined manner. Note that Result and
-   --  Opnd always have the same length in bits (Len).
+   --  Bitwise "not" of given bit string with result being placed in
+   --  ``Result``. The not operation is allowed to destroy unused bits in the
+   --  last byte, i.e. to leave them set in an undefined manner. Note that
+   --  ``Result`` and ``Opnd`` always have the same length in bits (``Len``).
+   --
+   --  The bitwise "not" operation is performed byte per byte, where the
+   --  number of bytes is the smallest number not less that ``Len`` divided by
+   --  the number of bits in a byte (8).
 
    procedure Bit_Or
      (Left   : System.Address;
@@ -76,10 +96,13 @@ package System.Bit_Ops is
       Right  : System.Address;
       Rlen   : Natural;
       Result : System.Address);
-   --  Bitwise "or" of given bit string with result being placed in Result.
+   --  Bitwise "or" of given bit string with result being placed in ``Result``.
    --  The or operation is allowed to destroy unused bits in the last byte,
-   --  i.e. to leave them set in an undefined manner. Note that Left, Right
-   --  and Result always have the same length in bits (Len).
+   --  i.e. to leave them set in an undefined manner. Note that ``Left``,
+   --  ``Right`` and ``Result`` always have the same length in bits.
+   --
+   --  The implementation is similar to *Bit_And* but for the bitwise "or"
+   --  operation.
 
    procedure Bit_Xor
      (Left   : System.Address;
@@ -87,9 +110,12 @@ package System.Bit_Ops is
       Right  : System.Address;
       Rlen   : Natural;
       Result : System.Address);
-   --  Bitwise "xor" of given bit string with result being placed in Result.
-   --  The xor operation is allowed to destroy unused bits in the last byte,
-   --  i.e. to leave them set in an undefined manner. Note that Left, Right
-   --  and Result always have the same length in bits (Len).
+   --  Bitwise "xor" of given bit string with result being placed in
+   --  ``Result``. The xor operation is allowed to destroy unused bits in the
+   --  last byte, i.e. to leave them set in an undefined manner. Note that
+   --  ``Left``, ``Right`` and ``Result`` always have the same length in bits.
+   --
+   --  The implementation is similar to *Bit_And* but for the bitwise "xor"
+   --  operation.
 
 end System.Bit_Ops;
index 1bfb275a9c359405a95e9cc4ee707e4dfc13ae75..4da02b0f5ca3dfc3c3f6175a2801fd89260ac660 100644 (file)
@@ -38,6 +38,7 @@ package System.Boolean_Array_Operations is
    pragma Pure;
 
    type Boolean_Array is array (Integer range <>) of Boolean;
+   --  The base type for the boolean array operations
 
    package Boolean_Operations renames System.Vectors.Boolean_Operations;
 
@@ -52,14 +53,27 @@ package System.Boolean_Array_Operations is
 
    procedure Vector_Not is
       new Unary_Operation ("not", Boolean_Operations."not");
+   --  Instantiation of Unary_Operation with function *not*
+
    procedure Vector_And is new Binary_Operation ("and", System.Vectors."and");
+   --  Instantiation of Binary_Operation with function *and*
+
    procedure Vector_Or is new Binary_Operation ("or", System.Vectors."or");
+   --  Instantiation of Binary_Operation with function *or*
+
    procedure Vector_Xor is new Binary_Operation ("xor", System.Vectors."xor");
+   --  Instantiation of Binary_Operation with function *xor*
 
    procedure Vector_Nand is
       new Binary_Operation (Boolean_Operations.Nand, Boolean_Operations.Nand);
+   --  Instantiation of Binary_Operation with function *nand*
+
    procedure Vector_Nor is
       new Binary_Operation (Boolean_Operations.Nor, Boolean_Operations.Nor);
+   --  Instantiation of Binary_Operation with function *nor*
+
    procedure Vector_Nxor is
       new Binary_Operation (Boolean_Operations.Nxor, Boolean_Operations.Nxor);
+   --  Instantiation of Binary_Operation with function *nxor*
+
 end System.Boolean_Array_Operations;
index 9e557ef5809aacbb672483ed2bc1ea399253c649..9baad54ea017ee375f035844ba96e08fa10436d1 100644 (file)
@@ -30,8 +30,8 @@
 ------------------------------------------------------------------------------
 
 --  Intrinsic routines for byte swapping. These are used by the expanded code
---  (supporting alternative byte ordering), and by the GNAT.Byte_Swapping run
---  time package which provides user level routines for byte swapping.
+--  (supporting alternative byte ordering), and by the ``GNAT.Byte_Swapping``
+--  run-time package which provides user level routines for byte swapping.
 
 with Interfaces;
 
index 206ec2f9c304e02e36e80bb84c33acf4073a0a8e..8901e884f239b9b8bbcf500dec5a6e9f6b9c99ad 100644 (file)
@@ -43,12 +43,23 @@ package System.Compare_Array_Signed_8 is
       Right     : System.Address;
       Left_Len  : Natural;
       Right_Len : Natural) return Integer;
-   --  Compare the array starting at address Left of length Left_Len
-   --  with the array starting at address Right of length Right_Len.
+   --  Compare the array starting at address ``Left`` of length ``Left_Len``
+   --  with the array starting at address ``Right`` of length ``Right_Len``.
    --  The comparison is in the normal Ada semantic sense of array
-   --  comparison. The result is -1,0,+1 for Left<Right, Left=Right,
-   --  Left>Right respectively. This function works with 4 byte words
-   --  if the operands are aligned on 4-byte boundaries and long enough.
+   --  comparison.
+   --
+   --  The result is -1, 0, +1 for ``Left`` < ``Right``, ``Left`` = ``Right``,
+   --  ``Left`` > ``Right`` respectively.
+   --
+   --  If addresses are not word aligned or if the length is less than a word,
+   --  then the result of *Compare_Array_S8_Unaligned* is returned.
+   --
+   --  This function iterates on the common number of words, comparing words.
+   --  If two words are not equal, the result of *Compare_Array_S8_Unaligned*
+   --  on these words is returned.
+   --
+   --  Finally, the result of *Compare_Array_S8_Unaligned* on the remaining
+   --  bytes is returned.
 
    function Compare_Array_S8_Unaligned
      (Left      : System.Address;
@@ -58,5 +69,8 @@ package System.Compare_Array_Signed_8 is
    --  Same functionality as Compare_Array_S8 but always proceeds by
    --  bytes. Used when the caller knows that the operands are unaligned,
    --  or short enough that it makes no sense to go by words.
+   --
+   --  This subprogram compares ``Left`` and ``Right`` byte per byte and
+   --  returns immediately when two bytes differ.
 
 end System.Compare_Array_Signed_8;
index 2684fd60fa8a74e25ca361b0ffdfc12381b821dc..4dfa963c9668ccda3b1475bd2c2a0bd256d2a904 100644 (file)
@@ -43,12 +43,16 @@ package System.Compare_Array_Unsigned_8 is
       Right     : System.Address;
       Left_Len  : Natural;
       Right_Len : Natural) return Integer;
-   --  Compare the array starting at address Left of length Left_Len with the
-   --  array starting at address Right of length Right_Len. The comparison is
-   --  in the normal Ada semantic sense of array comparison. The result is -1,
-   --  0, +1 for Left < Right, Left = Right, Left > Right respectively. This
-   --  function works with 4 byte words if the operands are aligned on 4-byte
-   --  boundaries and long enough.
+   --  Compare the array starting at address ``Left`` of length ``Left_Len``
+   --  with the array starting at address ``Right`` of length ``Right_Len``.
+   --  The comparison is in the normal Ada semantic sense of array
+   --  comparison.
+   --
+   --  The result is -1, 0, +1 for ``Left`` < ``Right``, ``Left`` = ``Right``,
+   --  ``Left`` > ``Right`` respectively.
+   --
+   --  The same algorithm is used as in package
+   --  ``System.Compare_Array_Signed_8``.
 
    function Compare_Array_U8_Unaligned
      (Left      : System.Address;
@@ -58,5 +62,8 @@ package System.Compare_Array_Unsigned_8 is
    --  Same functionality as Compare_Array_U8 but always proceeds by bytes.
    --  Used when the caller knows that the operands are unaligned, or short
    --  enough that it makes no sense to go by words.
+   --
+   --  The same algorithm is used as in package
+   --  ``System.Compare_Array_Signed_8``.
 
 end System.Compare_Array_Unsigned_8;
index 843d0881c428ab6b77c9ec0a830770d02c402cd5..2b2853061ee8b832bb09902edf98c95cd47e044d 100644 (file)
@@ -43,11 +43,26 @@ package System.Compare_Array_Signed_16 is
       Right     : System.Address;
       Left_Len  : Natural;
       Right_Len : Natural) return Integer;
-   --  Compare the array starting at address Left of length Left_Len
-   --  with the array starting at address Right of length Right_Len.
+   --  Compare the array starting at address ``Left`` of length ``Left_Len``
+   --  with the array starting at address ``Right`` of length ``Right_Len``.
    --  The comparison is in the normal Ada semantic sense of array
-   --  comparison. The result is -1,0,+1 for Left<Right, Left=Right,
-   --  Left>Right respectively. This function works with 4 byte words
-   --  if the operands are aligned on 4-byte boundaries and long enough.
+   --  comparison.
+   --
+   --  The result is -1, 0, +1 for ``Left`` < ``Right``, ``Left`` = ``Right``,
+   --  ``Left`` > ``Right`` respectively.
+   --
+   --  If both addresses are word aligned, the function iterates through all
+   --  of the equal words.
+   --
+   --  Then, if the addresses are half word aligned, the function iterates on
+   --  the remaining half words, and returns as soon as two half words are not
+   --  equal.
+   --
+   --  Otherwise, the function iterates on the remaining unaligned half words,
+   --  compares them using unaligned accesses, and returns as soon as two half
+   --  words are not equal.
+   --
+   --  Finally, at this point, all the words are equal. The result is decided
+   --  by comparing their lengths.
 
 end System.Compare_Array_Signed_16;
index c6d77892d2b4591dad8d469afef47a0a123540fe..29457331df9903e9524fd7de2178d80d7da089d9 100644 (file)
@@ -43,11 +43,23 @@ package System.Compare_Array_Signed_32 is
       Right     : System.Address;
       Left_Len  : Natural;
       Right_Len : Natural)
-      return      Integer;
-   --  Compare the array starting at address Left of length Left_Len
-   --  with the array starting at address Right of length Right_Len.
+     return      Integer;
+   --  Compare the array starting at address ``Left`` of length ``Left_Len``
+   --  with the array starting at address ``Right`` of length ``Right_Len``.
    --  The comparison is in the normal Ada semantic sense of array
-   --  comparison. The result is -1,0,+1 for Left<Right, Left=Right,
-   --  Left>Right respectively.
+   --  comparison.
+   --
+   --  The result is -1, 0, +1 for ``Left`` < ``Right``, ``Left`` = ``Right``,
+   --  ``Left`` > ``Right`` respectively.
+   --
+   --  If the addresses are word aligned, the function iterates on the words,
+   --  and returns as soon as two words are not equal.
+   --
+   --  Otherwise, the function iterates on the unaligned words, compares them
+   --  using unaligned accesses, and returns as soon as two words are not
+   --  equal.
+   --
+   --  Finally, at this point all the words are equal. The result is decided
+   --  by comparing their lengths.
 
 end System.Compare_Array_Signed_32;
index ea4fd05d355558161bcb8bfe02f87474d393ee9d..7c38e50027ae1e9420b404268343938b4cf314b1 100644 (file)
@@ -43,10 +43,22 @@ package System.Compare_Array_Signed_64 is
       Right     : System.Address;
       Left_Len  : Natural;
       Right_Len : Natural) return Integer;
-   --  Compare the array starting at address Left of length Left_Len
-   --  with the array starting at address Right of length Right_Len.
+   --  Compare the array starting at address ``Left`` of length ``Left_Len``
+   --  with the array starting at address ``Right`` of length ``Right_Len``.
    --  The comparison is in the normal Ada semantic sense of array
-   --  comparison. The result is -1,0,+1 for Left<Right, Left=Right,
-   --  Left>Right respectively.
+   --  comparison.
+   --
+   --  The result is -1, 0, +1 for ``Left`` < ``Right``, ``Left`` = ``Right``,
+   --  ``Left`` > ``Right`` respectively.
+   --
+   --  If the addresses are double word aligned, the function iterates on the
+   --  double words, and returns as soon as two double words are not equal.
+   --
+   --  Otherwise, the function iterates on the unaligned double words, compares
+   --  them using unaligned accesses, and returns as soon as two double words
+   --  are not equal.
+   --
+   --  Finally, at this point all the double words are equal. The result is
+   --  decided by comparing their lengths.
 
 end System.Compare_Array_Signed_64;
index ac07d2e63281a3ba0c0bfbad4c3089c061ba629d..6b1325dfdfbe8c3740c95b2d94006ff7c388269e 100644 (file)
@@ -43,11 +43,15 @@ package System.Compare_Array_Unsigned_16 is
       Right     : System.Address;
       Left_Len  : Natural;
       Right_Len : Natural) return Integer;
-   --  Compare the array starting at address Left of length Left_Len
-   --  with the array starting at address Right of length Right_Len.
+   --  Compare the array starting at address ``Left`` of length ``Left_Len``
+   --  with the array starting at address ``Right`` of length ``Right_Len``.
    --  The comparison is in the normal Ada semantic sense of array
-   --  comparison. The result is -1,0,+1 for Left<Right, Left=Right,
-   --  Left>Right respectively. This function works with 4 byte words
-   --  if the operands are aligned on 4-byte boundaries and long enough.
+   --  comparison.
+   --
+   --  The result is -1, 0, +1 for ``Left`` < ``Right``, ``Left`` = ``Right``,
+   --  ``Left`` > ``Right`` respectively.
+   --
+   --  The same algorithm is used as in package
+   --  ``System.Compare_Array_Signed_16``.
 
 end System.Compare_Array_Unsigned_16;
index 881ae954cda3bfa722602bfa8e3a8cd23c64bca1..ed4210f5902d7af0a66d8349b1cf2311c3b85758 100644 (file)
@@ -43,10 +43,15 @@ package System.Compare_Array_Unsigned_32 is
       Right     : System.Address;
       Left_Len  : Natural;
       Right_Len : Natural) return Integer;
-   --  Compare the array starting at address Left of length Left_Len
-   --  with the array starting at address Right of length Right_Len.
+   --  Compare the array starting at address ``Left`` of length ``Left_Len``
+   --  with the array starting at address ``Right`` of length ``Right_Len``.
    --  The comparison is in the normal Ada semantic sense of array
-   --  comparison. The result is -1,0,+1 for Left<Right, Left=Right,
-   --  Left>Right respectively.
+   --  comparison.
+   --
+   --  The result is -1, 0, +1 for ``Left`` < ``Right``, ``Left`` = ``Right``,
+   --  ``Left`` > ``Right`` respectively.
+   --
+   --  The same algorithm is used as in package
+   --  ``System.Compare_Array_Signed_32``.
 
 end System.Compare_Array_Unsigned_32;
index f51a368b81db5123f79a5123ea856d816379e948..656b922046a4ffc77f1381512e95b7bf1b809fb2 100644 (file)
@@ -43,10 +43,15 @@ package System.Compare_Array_Unsigned_64 is
       Right     : System.Address;
       Left_Len  : Natural;
       Right_Len : Natural) return Integer;
-   --  Compare the array starting at address Left of length Left_Len
-   --  with the array starting at address Right of length Right_Len.
+   --  Compare the array starting at address ``Left`` of length ``Left_Len``
+   --  with the array starting at address ``Right`` of length ``Right_Len``.
    --  The comparison is in the normal Ada semantic sense of array
-   --  comparison. The result is -1,0,+1 for Left<Right, Left=Right,
-   --  Left>Right respectively.
+   --  comparison.
+   --
+   --  The result is -1, 0, +1 for ``Left`` < ``Right``, ``Left`` = ``Right``,
+   --  ``Left`` > ``Right`` respectively.
+   --
+   --  The same algorithm is used as in package
+   --  ``System.Compare_Array_Signed_64``.
 
 end System.Compare_Array_Unsigned_64;
index efee21bea62d38315c451bf81a35fcca48b29ff8..c02488a30cc7dc4726723a1b45cb530fd839d19f 100644 (file)
@@ -29,7 +29,7 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Integer exponentiation (checks off)
+--  This package implements Integer exponentiation (checks off)
 
 --  Preconditions, postconditions, ghost code, loop invariants and assertions
 --  in this unit are meant for analysis only, not for run-time checking, as it
@@ -52,5 +52,14 @@ is
 
    function Exn_Integer (Left : Integer; Right : Natural) return Integer
      renames Exponn_Integer.Expon;
+   --  Return the power of ``Left`` by ``Right`` where ``Left`` is an Integer.
+   --  No check is made on the validity of the result.
+   --
+   --  This function is implemented using the standard logarithmic approach:
+   --  ``Right`` gets shifted right testing successive low order bits, and
+   --  ``Left`` is raised to the next power of 2.
+   --
+   --  As checks aren't enabled for this service, the result is not defined
+   --  in case of overflow.
 
 end System.Exn_Int;
index d1489407cf26c884476691a5ed541d4839a23019..a14265fb5187cb16f3db6ce91c43775104db0ba6 100644 (file)
@@ -29,7 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Long_Long_Float exponentiation (checks off)
+--  This package implements ``[Long_[Long_]]Float`` exponentiation
+--  (checks off).
 
 with System.Exponr;
 
index 27f37c27e28df7b7c841ac580771e1353f32c17d..c07998cba1bba69b0c24d9e3186ccb2fcc80d92f 100644 (file)
@@ -29,7 +29,7 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Long_Long_Integer exponentiation (checks off)
+--  This package implements Long_Long_Integer exponentiation (checks off)
 
 --  Preconditions, postconditions, ghost code, loop invariants and assertions
 --  in this unit are meant for analysis only, not for run-time checking, as it
@@ -53,5 +53,14 @@ is
    function Exn_Long_Long_Integer
      (Left : Long_Long_Integer; Right : Natural) return Long_Long_Integer
      renames Exponn_Integer.Expon;
+   --  Return the power of ``Left`` by ``Right`` where ``Left`` is a
+   --  Long_Long_Integer. No check is made on the validity of the result.
+   --
+   --  This function is implemented using the standard logarithmic approach:
+   --  ``Right`` gets shifted right testing successive low order bits, and
+   --  ``Left`` is raised to the next power of 2.
+   --
+   --  As checks aren't enabled for this service, the result is not defined
+   --  in case of overflow.
 
 end System.Exn_LLI;
index ad883aed19297214305e7934fe168ae5c9e217cc..621af574bc49388da0f90a1d46eec5f1459b0ff1 100644 (file)
@@ -29,7 +29,7 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Integer exponentiation (checks on)
+--  This package implements Integer exponentiation (checks on)
 
 --  Preconditions, postconditions, ghost code, loop invariants and assertions
 --  in this unit are meant for analysis only, not for run-time checking, as it
@@ -52,5 +52,13 @@ is
 
    function Exp_Integer (Left : Integer; Right : Natural) return Integer
      renames Expont_Integer.Expon;
+   --  Return the power of ``Left`` by ``Right`` where ``Left`` is an
+   --  Integer.
+   --
+   --  This function is implemented using the standard logarithmic approach:
+   --  ``Right`` gets shifted right testing successive low order bits, and
+   --  ``Left`` is raised to the next power of 2.
+   --
+   --  In case of overflow, Constraint_Error is raised.
 
 end System.Exp_Int;
index 58571ccafe8f4d24967c993d7ba84aaa45604a24..7fda87efa64c952737b6b73ba5bbda1bdad593f8 100644 (file)
@@ -29,7 +29,7 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Long_Long_Integer exponentiation (checks on)
+--  This package implements Long_Long_Integer exponentiation
 
 --  Preconditions, postconditions, ghost code, loop invariants and assertions
 --  in this unit are meant for analysis only, not for run-time checking, as it
@@ -53,5 +53,13 @@ is
    function Exp_Long_Long_Integer
      (Left : Long_Long_Integer; Right : Natural) return Long_Long_Integer
      renames Expont_Integer.Expon;
+   --  Return the power of ``Left`` by ``Right`` where ``Left`` is a
+   --  Long_Long_Integer.
+   --
+   --  This function is implemented using the standard logarithmic approach:
+   --  ``Right`` gets shifted right testing successive low order bits, and
+   --  ``Left`` is raised to the next power of 2.
+   --
+   --  In case of overflow, Constraint_Error is raised.
 
 end System.Exp_LLI;
index e892b475f0220df35e9f7214e944b799645148d9..f3a0964bfcfa591b026fa2ba14865ee1a45ae497 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This function performs exponentiation of unsigned types with binary modulus
---  values exceeding that of System.Unsigned_Types.Unsigned.
---  The result is always full width, the caller must do a masking operation if
---  the modulus is less than 2 ** Long_Long_Unsigned'Size.
+--  This function performs exponentiation of unsigned types (with binary
+--  modulus values exceeding that of Unsigned_Types.Unsigned). The result
+--  is always full width, the caller must do a masking operation if the
+--  modulus is less than 2 ** (Long_Long_Unsigned'Size).
 
---  Preconditions in this unit are meant for analysis only, not for run-time
---  checking, so that the expected exceptions are raised. This is enforced
---  by setting the corresponding assertion policy to Ignore. Postconditions
---  and contract cases should not be executed at runtime as well, in order
---  not to slow down the execution of these functions.
+--  Note: preconditions in this unit are meant for analysis only, not for
+--  run-time checking, so that the expected exceptions are raised. This is
+--  enforced by setting the corresponding assertion policy to Ignore.
+--  Postconditions and contract cases should not be executed at run-time as
+--  well, in order not to slow down the execution of these functions.
 
 pragma Assertion_Policy (Pre            => Ignore,
                          Post           => Ignore,
@@ -56,5 +56,13 @@ is
 
    function Exp_Long_Long_Unsigned is new Exponu (Long_Long_Unsigned);
    pragma Pure_Function (Exp_Long_Long_Unsigned);
+   --  Return the power of ``Left`` by ``Right`` where ``Left`` is a
+   --  Long_Long_Unsigned.
+   --
+   --  This function is implemented using the standard logarithmic approach:
+   --  ``Right`` gets shifted right testing successive low order bits, and
+   --  ``Left`` is raised to the next power of 2.
+   --
+   --  In case of overflow, Constraint_Error is raised.
 
 end System.Exp_LLU;
index 2cf5694fe0fe19b3e473cc677c2e03fbe3c001c4..f1e4698072ad9fca3b1c8d7eadcb156989fdb14c 100644 (file)
@@ -32,6 +32,7 @@
 --  This function performs exponentiation of a modular type with nonbinary
 --  modulus values. Arithmetic is done in Long_Long_Unsigned, with explicit
 --  accounting for the modulus value which is passed as the second argument.
+--
 --  Note that 1 is a binary modulus (2**0), so the compiler should not (and
 --  will not) call this function with Modulus equal to 1.
 
@@ -80,5 +81,11 @@ is
    with
      Pre  => Modulus /= 0 and then Modulus not in Power_Of_2,
      Post => Big (Exp_Modular'Result) = Big (Left) ** Right mod Big (Modulus);
+   --  Return the power of ``Left`` by ``Right` modulo ``Modulus``.
+   --
+   --  This function is implemented using the standard logarithmic approach:
+   --  ``Right`` gets shifted right testing successive low order bits, and
+   --  ``Left`` is raised to the next power of 2. The multiplications are
+   --  performed using modular multiplications.
 
 end System.Exp_Mod;
index 81445be6314405984b89bf39cca10e2a10238afd..bab8dc4a001df1d55bcff3a3211a0b5b933bb9ac 100644 (file)
@@ -29,7 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Signed integer exponentiation (checks off)
+--  This package provides functions for signed integer exponentiation. This
+--  is the version of the package with checks disabled.
 
 with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
 
@@ -69,5 +70,12 @@ is
    with
      Pre  => In_Int_Range (Big (Left) ** Right),
      Post => Expon'Result = Left ** Right;
+   --  Calculate ``Left`` ** ``Right``. If ``Left`` is 0 then 0 is returned
+   --  and if ``Right`` is 0 then 1 is returned. In all other cases the result
+   --  is set to 1 and then computed in a loop as follows:
+   --  If ``Right`` is a multiple of 2 then multiply the result with ``Left``.
+   --  Divide ``Right`` by 2.
+   --  If ``Right is 0, return.
+   --  Multiply ``Left`` with itself.
 
 end System.Exponn;
index 0947b67cea07797314f4bdd3bf380dc38a564bc5..38edeb73bf9703453aa91706451f52caf7e17002 100644 (file)
@@ -29,7 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Signed integer exponentiation (checks on)
+--  This package provides functions for signed integer exponentiation. This
+--  is the version of the package with checks enabled.
 
 with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
 
@@ -69,5 +70,12 @@ is
    with
      Pre  => In_Int_Range (Big (Left) ** Right),
      Post => Expon'Result = Left ** Right;
+   --  Calculate ``Left`` ** ``Right``. If ``Left`` is 0 then 0 is returned
+   --  and if ``Right`` is 0 then 1 is returned. In all other cases the result
+   --  is set to 1 and then computed in a loop as follows:
+   --  If ``Right`` is a multiple of 2 then multiply the result with ``Left``.
+   --  Divide ``Right`` by 2.
+   --  If ``Right is 0, return.
+   --  Multiply ``Left`` with itself.
 
 end System.Expont;
index 7e8babf6911d29fbb4aeff2263914b0af399ca6d..c152fba0cc939fd81b116c2320f213db5ae9c45c 100644 (file)
@@ -29,7 +29,7 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Modular integer exponentiation
+--  This function implements unsigned integer exponentiation
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced
@@ -50,3 +50,10 @@ function System.Exponu (Left : Int; Right : Natural) return Int
 with
   SPARK_Mode,
   Post => System.Exponu'Result = Left ** Right;
+--  Calculate ``Left`` ** ``Right``. If ``Left`` is 0 then 0 is returned
+--  and if ``Right`` is 0 then 1 is returned. In all other cases the result
+--  is set to 1 and then computed in a loop as follows:
+--  If ``Right`` is a multiple of 2 then multiply the result with ``Left``.
+--  Divide ``Right`` by 2.
+--  If ``Right is 0, return.
+--  Multiply ``Left`` with itself.
index b36fffc0bccd1d94f250510c67fe4c5595e921da..1a7ef6419c404b305e8fb72cb99877ad51f35de3 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This function performs exponentiation of unsigned types with binary modulus
---  values up to and including that of System.Unsigned_Types.Unsigned.
---  The result is always full width, the caller must do a masking operation if
---  the modulus is less than 2 ** Unsigned'Size.
+--  This function performs exponentiation of unsigned types (with binary
+--  modulus values up to and including that of Unsigned_Types.Unsigned).
+--
+--  The result is always full width, the caller must do a masking operation
+--  the modulus is less than 2 ** (Unsigned'Size).
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced
@@ -56,5 +57,13 @@ is
 
    function Exp_Unsigned is new Exponu (Unsigned);
    pragma Pure_Function (Exp_Unsigned);
+   --  Return the power of ``Left`` by ``Right`` where ``Left`` is an
+   --  Unsigned.
+   --
+   --  This function is implemented using the standard logarithmic approach:
+   --  ``Right`` gets shifted right testing successive low order bits, and
+   --  ``Left`` is raised to the next power of 2.
+   --
+   --  In case of overflow, Constraint_Error is raised.
 
 end System.Exp_Uns;
index b4868303e37bc47ca215add0b4bc38ea772574e2..20c99d770180e1436afa58e2e097adeaeabac60c 100644 (file)
@@ -30,7 +30,8 @@
 ------------------------------------------------------------------------------
 
 --  This package contains an instantiation of the floating-point attribute
---  runtime routines for the type Float.
+--  runtime routines for the type Float. It is an instantiation of
+--  ``System.Fat_Gen`` for Float.
 
 with System.Fat_Gen;
 
index b4b990b8fc5e873f432e9a227d12307031c70b20..fa86c458ff6f8d7491e106b82129d3c467f4c574 100644 (file)
@@ -31,8 +31,9 @@
 
 --  This generic package provides a target independent implementation of the
 --  floating-point attributes that denote functions. The implementations here
---  should be portable and reasonably efficient. The runtime contains a set of
---  instantiations of this package for all predefined floating-point types.
+--  are portable, but very slow. The runtime contains a set of instantiations
+--  of this package for all predefined floating-point types, and these should
+--  be replaced by efficient assembly language code where possible.
 
 generic
     type T is digits <>;
@@ -51,48 +52,146 @@ package System.Fat_Gen is
    --  problem, but the resulting inefficiency would be annoying.
 
    function Adjacent          (X, Towards : T)              return T;
+   --  If ``Towards`` = ``X``, the function returns ``X``; oterwise, it yields
+   --  the machien number of the type *T* adjacent to ``X`` in the direction
+   --  ``Towards``, if that machine number exists.
 
    function Ceiling           (X : T)                       return T;
+   --  Truncate ``X``. If the truncation is equal to ``X`` return ``X``. If
+   --  ``X`` is less than zero, return the truncation, otherwise add one
+   --  to the truncation.
 
    function Compose           (Fraction : T; Exponent : UI) return T;
+   --  Decompose the ``Fraction`` into its fraction and exponent parts. Call
+   --  *Scaling* with the returned fraction part and ``Exponent``.
 
    function Copy_Sign         (Value, Sign : T)             return T;
+   --  Take the absolute value of ``Value``. Negate the result if ``Sign`` is
+   --  less than zero.
 
    function Exponent          (X : T)                       return UI;
+   --  Decompose `X`` and return the exponent part.
 
    function Floor             (X : T)                       return T;
+   --  Truncate ``X``. If the truncation is equal to ``X`` return ``X``. If
+   --  ``X`` is greater than zero, return the truncation, otherwise subtract
+   --  one from the truncation.
 
    function Fraction          (X : T)                       return T;
+   --  Decompose `X`` and return the fraction part
 
    function Leading_Part      (X : T; Radix_Digits : UI)    return T;
+   --  Return ``X`` if the ``Radix_Digits`` is larger than the type's machine
+   --  mantissa. Otherwise scale down and truncate ``X`` by the difference
+   --  between the exponent of ``X`` and ``Radix_Digits``, then scale the
+   --  result back up.
 
    function Machine           (X : T)                       return T;
+   --  Force ``X`` to be stored in memory and retrieve the result
 
    function Machine_Rounding  (X : T)                       return T;
+   --  Truncate the absolute value of ``X`` + 0.5. If ``X`` is negative, negate
+   --  the result.
 
    function Model             (X : T)                       return T;
+   --  If ``X`` is a model number of *T*, the function returns ``X``;
+   --  otherwise it yields the value obtained by rounding or truncating ``X``
+   --  to either one of the adjacent model numbers of *T*.
+   --
+   --  We treat *Model* as identical to *Machine*. This is true of IEEE and
+   --  other nice floating-point systems, but not necessarily true of all
+   --  systems.
 
    function Pred              (X : T)                       return T;
+   --  Return the machine number immediately below the value of ``X``.
+   --
+   --  If zero, return the negative of *Succ* (``X``).
+   --
+   --  If ``X`` = *T*'First, return negative infinity.
+   --
+   --  If ``X`` is already infinity, return ``X``.
+   --
+   --  Otherwise, subtract from ``X`` a number equivalent to the value of its
+   --  least significant bit.
 
    function Remainder         (X, Y : T)                    return T;
+   --  Return the remainder (n) of ``X`` divided by ``Y``.
+   --  If abs(n - ``X`` / ``Y``) = 1/2 then n is chosen to be even.
+   --
+   --  Calculate the modulus remainder: if abs(``X``) < abs(``Y``) then the
+   --  remainder is abs(``X``). Otherwise, decompose abs(``X``) and abs(``Y``).
+   --  Then:
+   --
+   --  .. code-block:: ada
+   --
+   --    P := Compose (Y_Frac, X_Exp);
+   --    K := X_Exp - Y_Exp;
+   --    Rem := |X|;
+   --    for J in reverse 0 .. K loop
+   --       if Rem >= P then
+   --          Rem := Rem - P;
+   --       end if;
+   --       P := P * 0.5;
+   --    end loop;
+   --
+   --  Return the IEEE remainder by adjusting result such that if
+   --  abs(n - X/Y) = 1/2 then n is even.
 
    function Rounding          (X : T)                       return T;
+   --  The function yields the integral value nearest to ``X``, rounding away
+   --  from zero if ``X`` lies exactly halfway between two integers.
+   --
+   --  The function truncates the absolute value of ``X`` + 0.5. If ``X`` is
+   --  negative, negate the result.
 
    function Scaling           (X : T; Adjustment : UI)      return T;
+   --  Let v be the value ``X`` * *T*'Machine_RadixAdjustment. If v is a
+   --  machine number of the type *T*, or if abs(v) >= *T*'Model_Small, the
+   --  function yields v; otherwise, it yields either one of the machine
+   --  numbers of the type *T* adjacent to v.
+   --
+   --  If ``X`` or ``Adjustment`` equal zero, return ``X``. Otherwise, return
+   --  ``X`` * Machine_Radix ** ``Adjustment``.
 
    function Succ              (X : T)                       return T;
+   --  Returns the machine number immediately above the value of X.
+   --
+   --  If zero, return the smallest denormal.
+   --
+   --  If ``X`` = *T*'Last, return infinity.
+   --
+   --  If ``X`` is already infinity, return ``X``.
+   --
+   --  Otherwise, add to X a number equivalent to the value of its least
+   --  significant bit.
 
    function Truncation        (X : T)                       return T;
+   --  The function yields the value *Ceiling* (``X``) when ``X`` is negative,
+   --  and *Floor* (``X``) otherwise.
+   --
+   --  Return *T*'Machine (RM1 + N) - RM1 where N is abs(``X``) and
+   --  RM1 = radix ** (mantissa - 1). Negate the result where ``X`` is
+   --  negative.
 
    function Unbiased_Rounding (X : T)                       return T;
+   --  The integral value nearest to ``X``, rounding toward the even integer
+   --  if ``X`` lies exactly halfway between two integers.
+   --
+   --  This function truncates abs(``X``). If the tail of the result is greater
+   --  than 0.5 add one to the result. If the tail equals 0.5, round to the
+   --  nearest even integer. Negate the result if ``X`` is negative.
 
    function Valid (X : not null access T) return Boolean;
-   --  This function checks if the object of type T referenced by X is valid,
-   --  and returns True/False accordingly. The parameter is passed by reference
-   --  (access) here, as the object of type T may be an abnormal value that
-   --  cannot be passed in a floating-point register, and the whole point of
-   --  'Valid is to prevent exceptions. Note that the object of type T must
-   --  have the natural alignment for type T.
+   --  This function checks if the object of type *T* referenced by ``X`` is
+   --  valid, and returns True/False accordingly. The parameter is passed by
+   --  reference (access) here, as the object of type T may be an abnormal
+   --  value that cannot be passed in a floating-point register, and the whole
+   --  point of 'Valid is to prevent exceptions. Note that the object of
+   --  type *T* must have the natural alignment for type *T*.
+   --
+   --  If denormalized numbers are valid: return True unless ``X`` is infinity
+   --  or NaN. If denormalized numbers are not valid, return False if ``X`` is
+   --  a denormal number.
 
    type S is new String (1 .. T'Size / Character'Size);
    type P is access all S with Storage_Size => 0;
index 2d5f4338e98f95a8a507f4d91c6fcafda3bf5b6f..31c7cd3376557e010a93fb88b22a619e3efc7eea 100644 (file)
@@ -30,7 +30,8 @@
 ------------------------------------------------------------------------------
 
 --  This package contains an instantiation of the floating-point attribute
---  runtime routines for the type Long_Float.
+--  runtime routines for the type Long_Float. It is an instantiation of
+--  ``System.Fat_Gen`` for Long_Float.
 
 with System.Fat_Gen;
 
index 159d8a90c0e9b403ef9e376095cfce4712dcffab..5eaa27735d596efca5c0f12f21c0dc97244de57c 100644 (file)
@@ -30,7 +30,8 @@
 ------------------------------------------------------------------------------
 
 --  This package contains an instantiation of the floating-point attribute
---  runtime routines for the type Long_Long_Float.
+--  runtime routines for the type Long_Long_Float. It is an instantiation of
+--  ``System.Fat_Gen`` for Long_Long_Float.
 
 with System.Fat_Gen;
 
index d22aab20f94453d9f34694d66b7a7244f14ddbfa..de26bf1d971f466859474f85c31d460df334d4e3 100644 (file)
@@ -56,4 +56,8 @@ package System.Float_Control is
    --
    --  The call to Reset simply has no effect if the target environment
    --  does not give rise to such concerns.
+
+   --  The *Reset* procedure is a no-op on all Bareboard targets, the FPU
+   --  configuration being under full control there.
+
 end System.Float_Control;
index 5b99c31d54bdcc18821b9a324be09652847d19a0..6395046bfac456b9994fa733aa50618e5a2745c2 100644 (file)
@@ -33,7 +33,7 @@
 --  If the arguments are aligned on word boundaries and the word size is a
 --  multiple M of the element size, the operations will be done M elements
 --  at a time using vector operations on a word.
-
+--
 --  All routines assume argument arrays have the same length, and arguments
 --  with mode "in" do not alias arguments with mode "out" or "in out".
 --  If the number N of elements to be processed is not a multiple of M
@@ -56,6 +56,8 @@ package System.Generic_Vector_Operations is
    procedure Binary_Operation
      (R, X, Y : System.Address;
       Length  : System.Storage_Elements.Storage_Count);
+   --  *Binary_Operation* iterates on the elements pointed to by `X` and `Y`
+   --  and places the result in `R`.
 
    generic
       with function Element_Op (X : Element) return Element;
@@ -63,4 +65,7 @@ package System.Generic_Vector_Operations is
    procedure Unary_Operation
      (R, X    : System.Address;
       Length  : System.Storage_Elements.Storage_Count);
+   --  *Unary_Operation* iterates on the elements pointed to by `X`
+   --  and places the result in `R`.
+
 end System.Generic_Vector_Operations;
index 296df8fa8f1def3e4d7b6f973f79c911316ead3d..5d04e40cbe0e470f1d0b09c565ca994cc201efba 100644 (file)
@@ -30,7 +30,8 @@
 ------------------------------------------------------------------------------
 
 --  Contains the routine for computing the image in based format of signed and
---  unsigned integers for use by Text_IO.Integer_IO and Text_IO.Modular_IO.
+--  unsigned integers for use by ``Text_IO.Integer_IO`` and
+--  ``Text_IO.Modular_IO``.
 
 generic
 
index 927ea50e769faac67660de620ad4303532d06009..c9017d11e3130c1194bc853e541b48327b475dda 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  decimal fixed point types, and also for conversion operations required in
---  Text_IO.Decimal_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Decimal_IO`` conversions routines for decimal fixed point
+--  types.
 
 generic
 
index 1a33767bd22981761457df186012e975a6a0870c..40844fa7c7bbbfc2a8d857df5c16c6248170f994 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  ordinary fixed point types whose Small is the ratio of two Int values, and
---  also for conversion operations required in Text_IO.Fixed_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Fixed_IO`` conversions routines for for ordinary fixed
+--  point types whose Small is the ratio of two Int values.
 
 generic
 
index aa70622d664462f1bc55305cab650c777e79d299..2916c2a14c16fa91627b773a8e691deacf1e7aea 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  signed integer types, and also for conversion operations required in
---  Text_IO.Integer_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Integer_IO`` conversions routines for signed integer
+--  types.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
index ce96c7ecabdf40424e51ce2fa3157a8c725abfcd..2fb3d6bd952c270588e1e4077a2ccbef325ec423 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Enumeration_Type'Image for all enumeration types except those in package
---  Standard (where we have no opportunity to build image tables), and in
---  package System (where it is too early to start building image tables).
+--  ``Image`` attribute support for all enumeration types except those in
+--  package Standard (where we have no opportunity to build image tables), and
+--  in package System (where it is too early to start building image tables).
 --  Special routines exist for the enumeration types in these packages.
 
 generic
index 4c746da232a86e410cc4accc928673e3bea2911c..bb27718a43f6d17f73073f307a5263ed22b8051f 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  modular integer types, and also for conversion operations required in
---  Text_IO.Modular_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Modular_IO`` conversions routines for modular integer
+--  types.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
index eb84eba844e153f411948e09ccbb64c5929fd2c8..b98604cbd7550c1d0c1dbdaa98dc6cd4278b9de6 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Contains the routine for computing the image  of signed and unsigned
---  integers up to Integer for use by Text_IO.Integer_IO and
---  Text_IO.Modular_IO.
+--  Contains the routines for computing the image of signed and unsigned
+--  integers up to ``Integer`` for use by ``Ada.Text_IO.Integer_IO`` and
+--  ``Ada.Text_IO.Modular_IO``.
 
 generic
 
index 5c6e2396fd6398d1cab194e75e4c17dcbd133deb..96dcf386099caa927bff749574bc94361e4a5d3a 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  decimal fixed point types up to 128-bit mantissa, and also for conversion
---  operations required in Text_IO.Decimal_IO for them.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Decimal_IO`` conversions routines for decimal fixed point
+--  types up to 128-bit mantissa.
 
 with Interfaces;
 with System.Image_D;
index 9a5b582ebc3c5388ab38b9193ea25d8046fbfc8d..b048c4870141a2b49a80be8f4289e3cc222fbcec 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  decimal fixed point types up to 32-bit mantissa, and also for conversion
---  operations required in Text_IO.Decimal_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Decimal_IO`` conversions routines for decimal fixed point
+--  types up to 32-bit mantissa.
 
 with Interfaces;
 with System.Image_D;
@@ -49,6 +49,12 @@ package System.Img_Decimal_32 is
       P     : out Natural;
       Scale : Integer)
      renames Impl.Image_Decimal;
+   --  Computes fixed_type'Image (V), where V is the integer value (in units of
+   --  delta) of a decimal type whose Scale is as given and stores the result
+   --  S (1 .. P), updating P on return. The result is computed according to
+   --  the rules for image for fixed-point types (RM 3.5(34)). The caller
+   --  guarantees that S is long enough to hold the result and has a lower
+   --  bound of 1.
 
    procedure Set_Image_Decimal32
      (V     : Int32;
@@ -59,5 +65,13 @@ package System.Img_Decimal_32 is
       Aft   : Natural;
       Exp   : Natural)
      renames Impl.Set_Image_Decimal;
+   --  Sets the image of V, where V is the integer value (in units of delta)
+   --  of a decimal type with the specified Scale, starting at S (P + 1) and
+   --  updating P to point to the last character stored, the caller promises
+   --  that the buffer is large enough and no check is made. Constraint_Error
+   --  will not necessarily be raised if this requirement is violated, since
+   --  it is perfectly valid to compile this unit with checks off. The Fore,
+   --  Aft and Exp values can be set to any valid values for the case of use
+   --  by Text_IO.Decimal_IO.
 
 end System.Img_Decimal_32;
index f5aec4e2c877b4e8dc68568cd62b56adcc523ba5..695f8fb840abc6c9810360baafa12d2e810f9b82 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  decimal fixed point types up to 64-bit mantissa, and also for conversion
---  operations required in Text_IO.Decimal_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Decimal_IO`` conversions routines for decimal fixed point
+--  types up to 64-bit mantissa.
 
 with Interfaces;
 with System.Image_D;
@@ -49,6 +49,12 @@ package System.Img_Decimal_64 is
       P     : out Natural;
       Scale : Integer)
      renames Impl.Image_Decimal;
+   --  Computes fixed_type'Image (V), where V is the integer value (in units of
+   --  delta) of a decimal type whose Scale is as given and stores the result
+   --  S (1 .. P), updating P on return. The result is computed according to
+   --  the rules for image for fixed-point types (RM 3.5(34)). The caller
+   --  guarantees that S is long enough to hold the result and has a lower
+   --  bound of 1.
 
    procedure Set_Image_Decimal64
      (V     : Int64;
@@ -59,5 +65,13 @@ package System.Img_Decimal_64 is
       Aft   : Natural;
       Exp   : Natural)
      renames Impl.Set_Image_Decimal;
+   --  Sets the image of V, where V is the integer value (in units of delta)
+   --  of a decimal type with the specified Scale, starting at S (P + 1) and
+   --  updating P to point to the last character stored, the caller promises
+   --  that the buffer is large enough and no check is made. Constraint_Error
+   --  will not necessarily be raised if this requirement is violated, since
+   --  it is perfectly valid to compile this unit with checks off. The Fore,
+   --  Aft and Exp values can be set to any valid values for the case of use
+   --  by Text_IO.Decimal_IO.
 
 end System.Img_Decimal_64;
index cebd8b8966275b6d934f8030284f394dc7934ab0..5a90fdccd4115a9d75fab9a95e65fcdabf1ccf23 100644 (file)
@@ -29,7 +29,7 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Instantiation of System.Image_N for enumeration types whose names table
+--  Instantiation of ``System.Image_N`` for enumeration types whose names table
 --  has a length that fits in a 16-bit but not a 8-bit integer.
 
 with Interfaces;
@@ -47,5 +47,17 @@ package System.Img_Enum_16 is
       Names   : String;
       Indexes : System.Address)
      renames Impl.Image_Enumeration;
+   --  Used to compute Enum'Image (Str) where Enum is some enumeration type
+   --  other than those defined in package Standard. Names is a string with
+   --  a lower bound of 1 containing the characters of all the enumeration
+   --  literals concatenated together in sequence. Indexes is the address of
+   --  an array of type array (0 .. N) of Interfaces.Integer_16, where N is the
+   --  number of enumeration literals in the type. The Indexes values are the
+   --  starting subscript of each enumeration literal, indexed by Pos values,
+   --  with an extra entry at the end containing Names'Length + 1. The reason
+   --  that Indexes is passed by address is that the actual type is created on
+   --  the fly by the expander. The desired 'Image value is stored in S
+   --  (1 .. P) and P is set on return. The caller guarantees that S is long
+   --  enough to hold the result and that the lower bound is 1.
 
 end System.Img_Enum_16;
index 11d02e82eeec4a109cf18ba58e076d2f0af0d098..a5e7ab15f5e7ca5c5dd9ca567d328af043e40666 100644 (file)
@@ -29,7 +29,7 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Instantiation of System.Image_N for enumeration types whose names table
+--  Instantiation of ``System.Image_N`` for enumeration types whose names table
 --  has a length that fits in a 32-bit but not a 16-bit integer.
 
 with Interfaces;
@@ -47,5 +47,17 @@ package System.Img_Enum_32 is
       Names   : String;
       Indexes : System.Address)
      renames Impl.Image_Enumeration;
+   --  Used to compute Enum'Image (Str) where Enum is some enumeration type
+   --  other than those defined in package Standard. Names is a string with
+   --  a lower bound of 1 containing the characters of all the enumeration
+   --  literals concatenated together in sequence. Indexes is the address of
+   --  an array of type array (0 .. N) of Interfaces.Integer_32, where N is the
+   --  number of enumeration literals in the type. The Indexes values are the
+   --  starting subscript of each enumeration literal, indexed by Pos values,
+   --  with an extra entry at the end containing Names'Length + 1. The reason
+   --  that Indexes is passed by address is that the actual type is created on
+   --  the fly by the expander. The desired 'Image value is stored in S
+   --  (1 .. P) and P is set on return. The caller guarantees that S is long
+   --  enough to hold the result and that the lower bound is 1.
 
 end System.Img_Enum_32;
index 65f8161ddf0c7c4f544b0370149f688defc92a01..5420e78595fcc89763d81b56bf8f4ba5496e6eec 100644 (file)
@@ -29,7 +29,7 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Instantiation of System.Image_N for enumeration types whose names table
+--  Instantiation of ``System.Image_N`` for enumeration types whose names table
 --  has a length that fits in a 8-bit integer.
 
 with Interfaces;
@@ -47,5 +47,17 @@ package System.Img_Enum_8 is
       Names   : String;
       Indexes : System.Address)
      renames Impl.Image_Enumeration;
+   --  Used to compute Enum'Image (Str) where Enum is some enumeration type
+   --  other than those defined in package Standard. Names is a string with
+   --  a lower bound of 1 containing the characters of all the enumeration
+   --  literals concatenated together in sequence. Indexes is the address of
+   --  an array of type array (0 .. N) of Interfaces.Integer_8, where N is the
+   --  number of enumeration literals in the type. The Indexes values are the
+   --  starting subscript of each enumeration literal, indexed by Pos values,
+   --  with an extra entry at the end containing Names'Length + 1. The reason
+   --  that Indexes is passed by address is that the actual type is created on
+   --  the fly by the expander. The desired 'Image value is stored in S
+   --  (1 .. P) and P is set on return. The caller guarantees that S is long
+   --  enough to hold the result and that the lower bound is 1.
 
 end System.Img_Enum_8;
index e56b07af72d1082bb7b0bcd3011936e6186fbd85..ad8c250cdf09b89fa069a6761db9b1dc3c659b83 100644 (file)
@@ -29,8 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  ordinary fixed point types up to 32-bit small and mantissa.
+--  This package contains the routines for supporting the ``Image`` attribute
+--  for ordinary fixed point types up to 32-bit small and mantissa.
 
 with Interfaces;
 with System.Arith_32;
@@ -52,6 +52,16 @@ package System.Img_Fixed_32 is
       For0 : Natural;
       Aft0 : Natural)
      renames Impl.Image_Fixed;
+   --  Computes fixed_type'Image (V), where V is the integer value (in units of
+   --  small) of an ordinary fixed point type with small Num/Den, and stores
+   --  the result in S (1 .. P), updating P on return. The result is computed
+   --  according to the rules for image for fixed-point types (RM 3.5(34)).
+   --  For0 and Aft0 are the values of the Fore and Aft attributes for the
+   --  fixed point type whose mantissa type is Int32 and whose small is
+   --  Num/Den. This function is used only for fixed point whose Small is an
+   --  integer or its reciprocal (see package System.Image_R for the handling
+   --  of other ordinary fixed-point types). The caller guarantees that S is
+   --  long enough to hold the result and has a lower bound of 1.
 
    procedure Set_Image_Fixed32
      (V    : Int32;
@@ -65,5 +75,14 @@ package System.Img_Fixed_32 is
       Aft  : Natural;
       Exp  : Natural)
      renames Impl.Set_Image_Fixed;
+   --  Sets the image of V, where V is the integer value (in units of small)
+   --  of a fixed point type with small Num/Den, starting at S (P + 1) and
+   --  updating P to point to the last character stored, the caller promises
+   --  that the buffer is large enough and no check is made. Constraint_Error
+   --  will not necessarily be raised if this requirement is violated, since
+   --  it is perfectly valid to compile this unit with checks off. For0 and
+   --  Aft0 are the values of the Fore and Aft attributes for the fixed point
+   --  type whose mantissa type is Int32 and whose small is Num/Den. The Fore,
+   --  Aft and Exp can be set to any valid values for use by Text_IO.Fixed_IO.
 
 end System.Img_Fixed_32;
index a5d0464d21dcff7ec9c2c923fd0b121bee53ec31..4e10e031ba199263ed98b4a154098721e99a121e 100644 (file)
@@ -29,8 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  ordinary fixed point types up to 64-bit small and mantissa.
+--  This package contains the routines for supporting the ``Image`` attribute
+--  for ordinary fixed point types up to 64-bit small and mantissa.
 
 with Interfaces;
 with System.Arith_64;
@@ -52,6 +52,16 @@ package System.Img_Fixed_64 is
       For0 : Natural;
       Aft0 : Natural)
      renames Impl.Image_Fixed;
+   --  Computes fixed_type'Image (V), where V is the integer value (in units of
+   --  small) of an ordinary fixed point type with small Num/Den, and stores
+   --  the result in S (1 .. P), updating P on return. The result is computed
+   --  according to the rules for image for fixed-point types (RM 3.5(34)).
+   --  For0 and Aft0 are the values of the Fore and Aft attributes for the
+   --  fixed point type whose mantissa type is Int64 and whose small is
+   --  Num/Den. This function is used only for fixed point whose Small is an
+   --  integer or its reciprocal (see package System.Image_R for the handling
+   --  of other ordinary fixed-point types). The caller guarantees that S is
+   --  long enough to hold the result and has a lower bound of 1.
 
    procedure Set_Image_Fixed64
      (V    : Int64;
@@ -65,5 +75,14 @@ package System.Img_Fixed_64 is
       Aft  : Natural;
       Exp  : Natural)
      renames Impl.Set_Image_Fixed;
+   --  Sets the image of V, where V is the integer value (in units of small)
+   --  of a fixed point type with small Num/Den, starting at S (P + 1) and
+   --  updating P to point to the last character stored, the caller promises
+   --  that the buffer is large enough and no check is made. Constraint_Error
+   --  will not necessarily be raised if this requirement is violated, since
+   --  it is perfectly valid to compile this unit with checks off. For0 and
+   --  Aft0 are the values of the Fore and Aft attributes for the fixed point
+   --  type whose mantissa type is Int64 and whose small is Num/Den. The Fore,
+   --  Aft and Exp can be set to any valid values for use by Text_IO.Fixed_IO.
 
 end System.Img_Fixed_64;
index 078a0ceaab6f6d662818b7870b4bb2a269af0bbe..22527868f822f8cfcfb495fabd42c447058d97db 100644 (file)
@@ -30,8 +30,8 @@
 ------------------------------------------------------------------------------
 
 --  Contains the routine for computing the image in based format of signed and
---  unsigned integers up to Integer for use by Text_IO.Integer_IO and
---  Text_IO.Modular_IO.
+--  unsigned integers up to ``Integer`` for use by ``Ada.Text_IO.Integer_IO``
+--  and ``Ada.Text_IO.Modular_IO``.
 
 with System.Image_B;
 with System.Unsigned_Types;
@@ -50,6 +50,15 @@ package System.Img_BIU is
       S : out String;
       P : in out Natural)
      renames Impl.Set_Image_Based_Integer;
+   --  Sets the signed image of V in based format, using base value B (2..16)
+   --  starting at S (P + 1), updating P to point to the last character stored.
+   --  The image includes a leading minus sign if necessary, but no leading
+   --  spaces unless W is positive, in which case leading spaces are output if
+   --  necessary to ensure that the output string is no less than W characters
+   --  long. The caller promises that the buffer is large enough and no check
+   --  is made for this. Constraint_Error will not necessarily be raised if
+   --  this is violated, since it is perfectly valid to compile this unit with
+   --  checks off.
 
    procedure Set_Image_Based_Unsigned
      (V : Unsigned;
@@ -58,5 +67,13 @@ package System.Img_BIU is
       S : out String;
       P : in out Natural)
      renames Impl.Set_Image_Based_Unsigned;
+   --  Sets the unsigned image of V in based format, using base value B (2..16)
+   --  starting at S (P + 1), updating P to point to the last character stored.
+   --  The image includes no leading spaces unless W is positive, in which case
+   --  leading spaces are output if necessary to ensure that the output string
+   --  is no less than W characters long. The caller promises that the buffer
+   --  is large enough and no check is made for this. Constraint_Error will not
+   --  necessarily be raised if this is violated, since it is perfectly valid
+   --  to compile this unit with checks off).
 
 end System.Img_BIU;
index c3beaf3fd8e12b987529869488c4104017e5e7d0..bb5bab6746ce2063bef4e65dd39f5373b61dd5c7 100644 (file)
@@ -31,6 +31,9 @@
 
 --  Boolean'Image
 
+--  This package provides support for ``Image`` attribute on ``Boolean``. The
+--  compiler performs direct calls to this unit to implement the attribute.
+
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
 --  setting the corresponding assertion policy to Ignore. Postconditions and
@@ -57,8 +60,9 @@ is
        and then (if V then S'Length >= 4 else S'Length >= 5),
      Post => (if V then P = 4 else P = 5)
        and then System.Val_Spec.Is_Boolean_Image_Ghost (S (1 .. P), V);
-   --  Computes Boolean'Image (V) and stores the result in S (1 .. P)
-   --  setting the resulting value of P. The caller guarantees that S
-   --  is long enough to hold the result, and that S'First is 1.
+   --  Computes Boolean'Image (``V``) and stores the result in
+   --  ``S`` (1 .. ``P``) setting the resulting value of ``P``. The caller
+   --  guarantees that ``S`` is long enough to hold the result, and that
+   --  ``S``'First is 1.
 
 end System.Img_Bool;
index 650c745c14720a892a666646a284caf1456e2d07..5fd1f2fa468bff42e17689c4b8d3a8dd6327a4a6 100644 (file)
@@ -31,6 +31,9 @@
 
 --  Character'Image
 
+--  This package provides support for ``Image`` attribute on ``Character``. The
+--  compiler performs direct calls to this unit to implement the attribute.
+
 package System.Img_Char is
    pragma Pure;
 
@@ -38,18 +41,21 @@ package System.Img_Char is
      (V : Character;
       S : in out String;
       P : out Natural);
-   --  Computes Character'Image (V) and stores the result in S (1 .. P)
-   --  setting the resulting value of P. The caller guarantees that S is
-   --  long enough to hold the result, and that S'First is 1.
+   --  Computes Character'Image (``V``) and stores the result in
+   --  ``S`` (1 .. ``P``) setting the resulting value of ``P``. The caller
+   --  guarantees that ``S`` is long enough to hold the result, and that
+   --  ``S``'First is 1.
 
    procedure Image_Character_05
      (V : Character;
       S : in out String;
       P : out Natural);
-   --  Computes Character'Image (V) and stores the result in S (1 .. P)
-   --  setting the resulting value of P. The caller guarantees that S is
-   --  long enough to hold the result, and that S'First is 1. This version
-   --  is for use in Ada 2005 and beyond, where soft hyphen is a non-graphic
-   --  and results in "SOFT_HYPHEN" as the output.
+   --  Computes Character'Image (``V``) and stores the result in
+   --  ``S`` (1 .. ``P``) setting the resulting value of ``P``. The caller
+   --  guarantees that ``S`` is long enough to hold the result, and that
+   --  ``S``'First is 1.
+   --
+   --  This version is for use in Ada 2005 and beyond, where soft hyphen is
+   --  a non-graphic and results in "SOFT_HYPHEN" as the output.
 
 end System.Img_Char;
index f20f27fdd7bd5170c63a2a6f165a7e2e6dc6074f..d4ac45824ab77ffbeb5718c9a1af1793f1df7afd 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  signed integer types up to Integer, and also for conversion operations
---  required in Text_IO.Integer_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Integer_IO`` conversions routines for signed integer
+--  types up to Size ``Integer'Size``.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
@@ -66,11 +66,32 @@ is
       S : in out String;
       P : out Natural)
      renames Impl.Image_Integer;
+   --  Computes Integer'Image (``V``) and stores the result in
+   --  ``S`` (1 .. ``P``) setting the resulting value of ``P``.
+   --  The caller guarantees that ``S`` is long enough to hold the result,
+   --  and that ``S``'First is 1.
+   --
+   --  If ``V`` is not negative, the subprogram writes the leading blank in
+   --  ``S``. It then calls *Set_Image_Integer* unconditionally.
 
    procedure Set_Image_Integer
      (V : Integer;
       S : in out String;
       P : in out Natural)
      renames Impl.Set_Image_Integer;
+   --  Stores the image of ``V`` in ``S`` starting at ``S`` (``P`` + 1), ``P``
+   --  is updated to point to the last character stored. The value stored is
+   --  identical to the value of Integer'Image (``V``) except that no leading
+   --  space is stored when ``V`` is non-negative. The caller guarantees that
+   --  ``S`` is long enough to hold the result. ``S`` need not have a lower
+   --  bound of 1.
+   --
+   --  If ``V`` is negative, the subprogram writes the leading '-' character,
+   --  otherwise work with -``V`` (always work with negative value to avoid
+   --  overflow: the largest negative number is not a special case).
+   --
+   --  This subprogram then uses recursion: if the value is equal or less than
+   --  -10, recurse with the value divided by 10. Then add the digit for the
+   --  remainder.
 
 end System.Img_Int;
index 799b93a46674da4c51de55876bd2ce65544d2b0b..30bfeceb9c4f606afc4fd8d18b5812741190c5d8 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  Contains the routine for computing the image in based format of signed and
---  unsigned integers larger than Integer for use by Text_IO.Integer_IO and
---  Text_IO.Modular_IO.
+--  Contains the routine for computing the image in based format
+--  of signed and unsigned integers larger than `Integer` for use
+--  by ``Ada.Text_IO.Integer_IO`` and ``Text_IO.Modular_IO``.
 
 with System.Image_B;
 with System.Unsigned_Types;
@@ -50,6 +50,15 @@ package System.Img_LLB is
       S : out String;
       P : in out Natural)
      renames Impl.Set_Image_Based_Integer;
+   --  Sets the signed image of V in based format, using base value B (2..16)
+   --  starting at S (P + 1), updating P to point to the last character stored.
+   --  The image includes a leading minus sign if necessary, but no leading
+   --  spaces unless W is positive, in which case leading spaces are output if
+   --  necessary to ensure that the output string is no less than W characters
+   --  long. The caller promises that the buffer is large enough and no check
+   --  is made for this. Constraint_Error will not necessarily be raised if
+   --  this is violated, since it is perfectly valid to compile this unit with
+   --  checks off.
 
    procedure Set_Image_Based_Long_Long_Unsigned
      (V : Long_Long_Unsigned;
@@ -58,5 +67,13 @@ package System.Img_LLB is
       S : out String;
       P : in out Natural)
      renames Impl.Set_Image_Based_Unsigned;
+   --  Sets the unsigned image of V in based format, using base value B (2..16)
+   --  starting at S (P + 1), updating P to point to the last character stored.
+   --  The image includes no leading spaces unless W is positive, in which case
+   --  leading spaces are output if necessary to ensure that the output string
+   --  is no less than W characters long. The caller promises that the buffer
+   --  is large enough and no check is made for this. Constraint_Error will not
+   --  necessarily be raised if this is violated, since it is perfectly valid
+   --  to compile this unit with checks off).
 
 end System.Img_LLB;
index 084a4d009544edb2272e40670b34179d30beeb15..dd1ae79cb6f317f71ae180558917f91aefa845ea 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  signed integer types larger than Integer, and also for conversion
---  operations required in Text_IO.Integer_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Integer_IO`` conversions routines for signed integer
+--  types larger than Size ``Integer'Size``.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
@@ -66,11 +66,32 @@ is
       S : in out String;
       P : out Natural)
      renames Impl.Image_Integer;
+   --  Computes Long_Long_Integer'Image (``V``) and stores the result in
+   --  ``S`` (1 .. ``P``) setting the resulting value of ``P``. The caller
+   --  guarantees that ``S`` is long enough to hold the result, and that
+   --  ``S``'First is 1.
+   --
+   --  If ``V`` is not negative, the subprogram writes the leading blank in
+   --  ``S``. It then calls *Set_Image_Long_Long_Integer*.
 
    procedure Set_Image_Long_Long_Integer
      (V : Long_Long_Integer;
       S : in out String;
       P : in out Natural)
      renames Impl.Set_Image_Integer;
+   --  Stores the image of ``V`` in ``S`` starting at ``S`` (``P`` + 1),
+   --  ``P`` is updated to point to the last character stored. The value
+   --  stored is identical to the value of Long_Long_Integer'Image (``V``)
+   --  except that no leading space is stored when ``V`` is non-negative. The
+   --  caller guarantees that ``S`` is long enough to hold the result. ``S``
+   --  need not have a lower bound of 1.
+   --
+   --  If ``V`` is negative, the subprogram writes the leading '-' character,
+   --  otherwise work with -``V`` (always work with negative value to avoid
+   --  overflow: the largest negative number is not a special case).
+   --
+   --  This subprogram then uses recursion: if the value is equal or less than
+   --  -10, recurse with the value divided by 10. Then add the digit for the
+   --  remainder.
 
 end System.Img_LLI;
index 9757e2391870b892fb98c38ed216eb4a13786287..24b43250b91482565b629b3a3c4632f7579c2242 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  modular integer types larger than Unsigned, and also for conversion
---  operations required in Text_IO.Modular_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Modular_IO`` conversions routines for unsigned (modular)
+--  integer types larger than Size ``Unsigned'Size``.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
@@ -63,11 +63,28 @@ is
       S : in out String;
       P : out Natural)
      renames Impl.Image_Unsigned;
+   --  Computes Long_Long_Unsigned'Image (``V``) and stores the result in
+   --  ``S`` (1 .. ``P``) setting the resulting value of ``P``. The caller
+   --  guarantees that ``S`` is long enough to hold the result, and that
+   --  ``S``'First is 1.
+   --
+   --  The subprogram writes the leading blank in ``S`` and calls
+   --  *Set_Image_Long_Long_Unsigned*.
 
    procedure Set_Image_Long_Long_Unsigned
      (V : Long_Long_Unsigned;
       S : in out String;
       P : in out Natural)
      renames Impl.Set_Image_Unsigned;
+   --  Stores the image of ``V`` in ``S`` starting at ``S`` (``P`` + 1),
+   --  ``P`` is updated to point to the last character stored. The value
+   --  stored is identical to the value of Long_Long_Unsigned'Image (``V``)
+   --  except that no leading space is stored.
+   --  The caller guarantees that ``S`` is long enough to hold the result.
+   --  ``S`` need not have a lower bound of 1.
+   --
+   --  This subprogram uses recursion: if the value is equal or greater than
+   --  10, recurse with the value divided by 10. Then add the digit for the
+   --  remainder.
 
 end System.Img_LLU;
index 9b29b8066915808d5154c0ee8a8156254997175e..14b9e424fe1c4ef34fecdd378ca97484b04c668b 100644 (file)
@@ -49,6 +49,15 @@ package System.Img_LLW is
       S : out String;
       P : in out Natural)
      renames Impl.Set_Image_Width_Integer;
+   --  Sets the signed image of V in based format, using base value B (2..16)
+   --  starting at S (P + 1), updating P to point to the last character stored.
+   --  The image includes a leading minus sign if necessary, but no leading
+   --  spaces unless W is positive, in which case leading spaces are output if
+   --  necessary to ensure that the output string is no less than W characters
+   --  long. The caller promises that the buffer is large enough and no check
+   --  is made for this. Constraint_Error will not necessarily be raised if
+   --  this is violated, since it is perfectly valid to compile this unit with
+   --  checks off.
 
    procedure Set_Image_Width_Long_Long_Unsigned
      (V : Long_Long_Unsigned;
@@ -56,5 +65,13 @@ package System.Img_LLW is
       S : out String;
       P : in out Natural)
      renames Impl.Set_Image_Width_Unsigned;
+   --  Sets the unsigned image of V in based format, using base value B (2..16)
+   --  starting at S (P + 1), updating P to point to the last character stored.
+   --  The image includes no leading spaces unless W is positive, in which case
+   --  leading spaces are output if necessary to ensure that the output string
+   --  is no less than W characters long. The caller promises that the buffer
+   --  is large enough and no check is made for this. Constraint_Error will not
+   --  necessarily be raised if this is violated, since it is perfectly valid
+   --  to compile this unit with checks off).
 
 end System.Img_LLW;
index 7b67ac2dab59b8f07a7bcdf5281bbdadb157dca9..36024c8dfcc3695368d2780185875c58415d2a76 100644 (file)
@@ -29,6 +29,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  Image for fixed and float types (also used for Float_IO/Fixed_IO output)
+
 --  This obsolete package is preserved for the sake of backward compatibility
 
 with System.Img_LLF;
@@ -43,5 +45,13 @@ package System.Img_Real is
       Aft  : Natural;
       Exp  : Natural)
      renames System.Img_LLF.Set_Image_Long_Long_Float;
+   --  Sets the image of ``V`` starting at ``S`` (``P`` + 1), updating ``P``
+   --  to point to the last character stored, the caller promises that the
+   --  buffer is large enough and no check is made for this. Constraint_Error
+   --  will not necessarily be raised if this is violated, since it is
+   --  perfectly valid to compile this unit with checks off). The ``Fore``,
+   --  ``Aft`` and ``Exp`` values can be set to any valid values for the case
+   --  of use from Text_IO. Note that no space is stored at the start for
+   --  non-negative values.
 
 end System.Img_Real;
index 5e1bcb731c4a12c72c1cf8158d1e5ac46d2eba09..e9baf19bb2ef0f3c8fba01639a63fbfef9eeff44 100644 (file)
@@ -29,9 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the routines for supporting the Image attribute for
---  modular integer types up to Unsigned, and also for conversion operations
---  required in Text_IO.Modular_IO for such types.
+--  This package provides the subprograms supporting the ``Image`` attribute
+--  and ``Ada.Text_IO.Modular_IO`` conversions routines for modular integer
+--  types up to size ``Unsigned'Size``.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
@@ -63,11 +63,27 @@ is
       S : in out String;
       P : out Natural)
      renames Impl.Image_Unsigned;
+   --  Computes Unsigned'Image (``V``) and stores the result in
+   --  ``S`` (1 .. ``P``) setting the resulting value of ``P``. The caller
+   --  guarantees that ``S`` is long enough to hold the result, and that
+   --  ``S``'First is 1.
+   --
+   --  The subprogram writes the leading blank in ``S`` and calls
+   --  *Set_Image_Unsigned*.
 
    procedure Set_Image_Unsigned
      (V : Unsigned;
       S : in out String;
       P : in out Natural)
      renames Impl.Set_Image_Unsigned;
+   --  Stores the image of ``V`` in ``S`` starting at ``S`` (``P`` + 1), ``P``
+   --  is updated to point to the last character stored. The value stored is
+   --  identical to the value of Unsigned'Image (``V``) except that no leading
+   --  space is stored. The caller guarantees that ``S`` is long enough to hold
+   --  the result. ``S`` need not have a lower bound of 1.
+   --
+   --  This subprogram uses recursion: if the value is equal or greater than
+   --  10, recurse with the value divided by 10. Then add the digit for the
+   --  remainder.
 
 end System.Img_Uns;
index 8a18105e048f06e67ee767968f4724574c647cf7..bd07ab6cf739ad02b3f33d604ddf1b92c6438363 100644 (file)
@@ -29,7 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package provides some common utilities used by the s-imgxxx files
+--  This package provides some common utilities used by the `System.Img_*`
+--  packages. It contains subprograms to set the decimal digits for a string
+--  and set the string for a floating-point invalid value.
 
 package System.Img_Util is
 
index d6ec188e5e6706124c5f777ca1beaa1701cd048f..f5a089e3e6b56bbee0da08459e499beb75bb3838 100644 (file)
@@ -30,8 +30,8 @@
 ------------------------------------------------------------------------------
 
 --  Contains the routine for computing the image  of signed and unsigned
---  integers up to Integer for use by Text_IO.Integer_IO and
---  Text_IO.Modular_IO.
+--  integers up to Integer for use by ``Ada.Text_IO.Integer_IO`` and
+--  ``Ada.Text_IO.Modular_IO``.
 
 with System.Image_W;
 with System.Unsigned_Types;
index 5a11d56d3b4418fe95de0796fa1e7c482744d4e9..d6af057bf4466746aeb49a0b6a509ff51e8cf883 100644 (file)
 ------------------------------------------------------------------------------
 
 --  This package provides machine code support, both for intrinsic machine
---  operations, and also for machine code statements. See GNAT documentation
---  for full details.
+--  operations, and also for machine code statements. It implements the
+--  *System.Machine_code* package defined in ARM 13.8 and GNAT Reference Manual
+--  (chapter 'Implementation of Specific Ada Features', 'Machine Code
+--  Insertions').
 
 package System.Machine_Code
   with SPARK_Mode => Off
@@ -39,9 +41,8 @@ is
    pragma No_Elaboration_Code_All;
    pragma Pure;
 
-   --  All identifiers in this unit are implementation defined
-
    pragma Implementation_Defined;
+   --  All identifiers in this unit are implementation defined
 
    type Asm_Input_Operand  is private;
    type Asm_Output_Operand is private;
@@ -50,12 +51,17 @@ is
 
    No_Input_Operands  : constant Asm_Input_Operand;
    No_Output_Operands : constant Asm_Output_Operand;
+   --  These constants are used as default value to denote respectively no
+   --  input operands and no output operands.
 
    type Asm_Input_Operand_List  is
      array (Integer range <>) of Asm_Input_Operand;
 
    type Asm_Output_Operand_List is
      array (Integer range <>) of Asm_Output_Operand;
+   --  The types *Asm_Input_Operand_List* and *Asm_Output_Operand_List* are
+   --  arrays of respectively *Asm_Input_Operand* and *Asm_Output_Operand*.
+   --  They are used to describe lists of operands for the Asm subprograms.
 
    type Asm_Insn is private;
    --  This type is not used directly. It is declared only so that the
@@ -116,6 +122,9 @@ is
      Inputs   : Asm_Input_Operand  := No_Input_Operands;
      Clobber  : String  := "";
      Volatile : Boolean := False) return Asm_Insn;
+   --  The parameters are described in the GNAT Reference Manual [GRM].
+   --
+   --  These are intrinsic subprograms, fully implemented by the compiler.
 
    pragma Import (Intrinsic, Asm);
 
index 7eb8dd6a3b10fd09117b239edbb879575296bbd5..c4d4b7adea4528e815a6459dba3cab8870d9f0cf 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This is the top level unit for multiprocessor task support as defined by
+--  ARM D.16. It provides the base types to enumerate CPUs and the
+--  functionality to get the number of CPUs on the current system.
+
 package System.Multiprocessors is
    pragma Preelaborate (Multiprocessors);
 
index a3c97aea454b28096f24e736c84530f476ed9492..fb373e0d0da6da9d4aece59be8c8506d7746c3a6 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_03 is
    pragma Preelaborate;
 
+   --  3-bit element type definition
+
    Bits : constant := 3;
 
    type Bits_03 is mod 2 ** Bits;
index 19dd7cc533c371ca3a459b0cedbe9d2134866ea8..707ff50668e1598db698d70f58fed5e90fca0412 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_05 is
    pragma Preelaborate;
 
+   --  5-bit element type definition
+
    Bits : constant := 5;
 
    type Bits_05 is mod 2 ** Bits;
index 0ff9cc393bec09e00561a40cc68d0ff61363ce3f..cac546ad514ca6d6c408a4e50c1aa3af2a0f4dbc 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_06 is
    pragma Preelaborate;
 
+   --  6-bit element type definition
+
    Bits : constant := 6;
 
    type Bits_06 is mod 2 ** Bits;
index 439d468b8f6937ccfb94d66b26d99a575aef708f..0090c33425aa9816b3fd825d0b7c43dede520e6a 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_07 is
    pragma Preelaborate;
 
+   --  7-bit element type definition
+
    Bits : constant := 7;
 
    type Bits_07 is mod 2 ** Bits;
index f8b8f44a7a92723c609025a6121c45a8cd1fe3d8..3dac13f1cc541d83f9843d67c973345644c33f67 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_09 is
    pragma Preelaborate;
 
+   --  9-bit element type definition
+
    Bits : constant := 9;
 
    type Bits_09 is mod 2 ** Bits;
index e0e6b25b1de736027800d9716041627fc4a16d84..6d194517fd8c4bf464f5ac90793ebceb53e02282 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_10 is
    pragma Preelaborate;
 
+   --  10-bit element type definition
+
    Bits : constant := 10;
 
    type Bits_10 is mod 2 ** Bits;
index 25d56bd5ee4218d19693cc5ec8e3f25810d7754a..f5b9aefe5b5bd9f407138104328b830415cb9d56 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_100 is
    pragma Preelaborate;
 
+   --  100-bit element type definition
+
    Bits : constant := 100;
 
    type Bits_100 is mod 2 ** Bits;
index dc770dc0de1b951b5708bb25db5a1462edfe7316..9f785efa96a41799928eeee0017bf70925621a78 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_101 is
    pragma Preelaborate;
 
+   --  101-bit element type definition
+
    Bits : constant := 101;
 
    type Bits_101 is mod 2 ** Bits;
index 07f99cdbcbcd4cb241c6642fcd7b1de38056adee..ce3df8de7f10e739b4239ce793c24c577fc1384c 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_102 is
    pragma Preelaborate;
 
+   --  102-bit element type definition
+
    Bits : constant := 102;
 
    type Bits_102 is mod 2 ** Bits;
index 13724b5b4a45e9c235fa2bc045a8a6e5b4e51922..d684b2b748ebdfd4d63cf4d6fed15498988f8b59 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_103 is
    pragma Preelaborate;
 
+   --  103-bit element type definition
+
    Bits : constant := 103;
 
    type Bits_103 is mod 2 ** Bits;
index a4ba3ae392ff41326f23450011345d5776de0a7f..f4d24d11caf0281198612e0dc6fa1e6c20d86907 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_104 is
    pragma Preelaborate;
 
+   --  104-bit element type definition
+
    Bits : constant := 104;
 
    type Bits_104 is mod 2 ** Bits;
index 7de6f848c04d515e6a595fe060b339f896f99bdb..9353867d57511fd1a6c74b04e8564d239e054483 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_105 is
    pragma Preelaborate;
 
+   --  105-bit element type definition
+
    Bits : constant := 105;
 
    type Bits_105 is mod 2 ** Bits;
index d82f2679edafcfe2b75088790f001472c595da3e..55f993cada85e66037c66e6fa98c1ec5a8e565f5 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_106 is
    pragma Preelaborate;
 
+   --  106-bit element type definition
+
    Bits : constant := 106;
 
    type Bits_106 is mod 2 ** Bits;
index 97db1d96ffc6f918bf6f93e0cf7676fc939faf44..da064cee5e53d6bc298af6f8aa186dc0ee2f4941 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_107 is
    pragma Preelaborate;
 
+   --  107-bit element type definition
+
    Bits : constant := 107;
 
    type Bits_107 is mod 2 ** Bits;
index ea2bf3a4f598be75f39baf1ebaf7c2bb549da7e6..8c45c94f860ad373b07f50b4b2edd3c7f8fa3811 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_108 is
    pragma Preelaborate;
 
+   --  108-bit element type definition
+
    Bits : constant := 108;
 
    type Bits_108 is mod 2 ** Bits;
index 33490ce55b351c666dcf6ae3d6ac46177e6c0f2a..f90c963c7410367c0f4ebfe165ce4a862407724d 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_109 is
    pragma Preelaborate;
 
+   --  109-bit element type definition
+
    Bits : constant := 109;
 
    type Bits_109 is mod 2 ** Bits;
index c2b4d5c3b987f0ad0e8dc79402d45589df4e921b..b99b642596bafbf4429e4c7636f77f3bd3856342 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_11 is
    pragma Preelaborate;
 
+   --  11-bit element type definition
+
    Bits : constant := 11;
 
    type Bits_11 is mod 2 ** Bits;
index cb89aebe8f291e206cdaad2820181737150008a1..aab993dc4c4d146a435e038aac4ee6042250a279 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_110 is
    pragma Preelaborate;
 
+   --  110-bit element type definition
+
    Bits : constant := 110;
 
    type Bits_110 is mod 2 ** Bits;
index eb9480bb0177ecb71bf564ad58f4bf6aecef7d64..d5cbb57e2fa983209c16f50fa6336d9f313c11ee 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_111 is
    pragma Preelaborate;
 
+   --  111-bit element type definition
+
    Bits : constant := 111;
 
    type Bits_111 is mod 2 ** Bits;
index 127f415b7fb802e488e3a2965fa30a78189bbad1..a7e53e15eeb12c04c136b339f3e18228b2321026 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_112 is
    pragma Preelaborate;
 
+   --  112-bit element type definition
+
    Bits : constant := 112;
 
    type Bits_112 is mod 2 ** Bits;
index e62533ed207c2cd0085f2047c3215c35d201f1b4..2b7b4ce0e2b549d12e853565f99ce87c641881e7 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_113 is
    pragma Preelaborate;
 
+   --  113-bit element type definition
+
    Bits : constant := 113;
 
    type Bits_113 is mod 2 ** Bits;
index a1a8f433377918354afb96042dbf9fc9763a9886..95c3fd2bdda8d37d95a0238cb911f23df6d3e0df 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_114 is
    pragma Preelaborate;
 
+   --  114-bit element type definition
+
    Bits : constant := 114;
 
    type Bits_114 is mod 2 ** Bits;
index 388b60009de1fe94b56638801a3653601b0bb99c..7df3fee41064a3eebc53a3889ec954d4dd5a55a2 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_115 is
    pragma Preelaborate;
 
+   --  115-bit element type definition
+
    Bits : constant := 115;
 
    type Bits_115 is mod 2 ** Bits;
index b7af39e83be66aa7ae7e7395436b9e8f60210358..5736e5aa3144919bdb48ee2b8bc6801506536f23 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_116 is
    pragma Preelaborate;
 
+   --  116-bit element type definition
+
    Bits : constant := 116;
 
    type Bits_116 is mod 2 ** Bits;
index a61655b02ad18cdb400f9db1c3d10d0d81209d82..41865d4604c1c0825f8d07903c3f120c98784160 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_117 is
    pragma Preelaborate;
 
+   --  117-bit element type definition
+
    Bits : constant := 117;
 
    type Bits_117 is mod 2 ** Bits;
index 25473617229bca6fb9edda373d6d9186b0c42642..762f1c4645910f24278b90a6380203acb5ca7be9 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_118 is
    pragma Preelaborate;
 
+   --  118-bit element type definition
+
    Bits : constant := 118;
 
    type Bits_118 is mod 2 ** Bits;
index 701809603026c484152bd9956522ffd35ca719e6..2a3d12353ac186f6d6fadbdfd9b8add2d060b1d2 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_119 is
    pragma Preelaborate;
 
+   --  119-bit element type definition
+
    Bits : constant := 119;
 
    type Bits_119 is mod 2 ** Bits;
index da0a553deaf020247d45270b327e03fa89353108..bc0a66cc5cc3c5a984c675149107bb6d7d66761f 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_12 is
    pragma Preelaborate;
 
+   --  12-bit element type definition
+
    Bits : constant := 12;
 
    type Bits_12 is mod 2 ** Bits;
index 193ea854ad1d3d8d78aad01fff1f212f38a72433..481fe12311937a5de8d6b1a03650b9d9acbe9774 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_120 is
    pragma Preelaborate;
 
+   --  120-bit element type definition
+
    Bits : constant := 120;
 
    type Bits_120 is mod 2 ** Bits;
index 29f3e047d8c1c8d56787ae16c8618c036779c126..249d9733daed8ceffa22191066e01c6a08309f9f 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_121 is
    pragma Preelaborate;
 
+   --  121-bit element type definition
+
    Bits : constant := 121;
 
    type Bits_121 is mod 2 ** Bits;
index bcdf23ecb2090d63f02331d734314e969dd85c12..9fd61b5f1d58cf524bccee1c41597bc18090d38c 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_122 is
    pragma Preelaborate;
 
+   --  122-bit element type definition
+
    Bits : constant := 122;
 
    type Bits_122 is mod 2 ** Bits;
index 498e38844a6a1042a246f5569b3fd906b54f7266..e88693993bba9595111c45832c19cbf64de95601 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_123 is
    pragma Preelaborate;
 
+   --  123-bit element type definition
+
    Bits : constant := 123;
 
    type Bits_123 is mod 2 ** Bits;
index 59a47e39f877aa838c39c959aa20ae5cb7a92c17..698c28fdc981d86f3df73fd6c0536438a09d8701 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_124 is
    pragma Preelaborate;
 
+   --  124-bit element type definition
+
    Bits : constant := 124;
 
    type Bits_124 is mod 2 ** Bits;
index c38722c57144711303ef4f45bf9785d3d382a1c4..3f2fb33e76e25fe243c526ed1b57d3081a19c4c4 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_125 is
    pragma Preelaborate;
 
+   --  125-bit element type definition
+
    Bits : constant := 125;
 
    type Bits_125 is mod 2 ** Bits;
index 72ae14ae8f3cf5a8771c0387b612a5ea898f8ba1..64c1b30018eef8a6d554cf8ce5bc9abf40fdc6be 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_126 is
    pragma Preelaborate;
 
+   --  126-bit element type definition
+
    Bits : constant := 126;
 
    type Bits_126 is mod 2 ** Bits;
index 3ba368deee8a32da64d647c7abc4b6002240853b..38807ee44e99283784ee3a1bd0d0018c5bc56467 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_127 is
    pragma Preelaborate;
 
+   --  127-bit element type definition
+
    Bits : constant := 127;
 
    type Bits_127 is mod 2 ** Bits;
index 3bae073deeddf98c814156b4ff62c0e1393d7dd8..be3521ba6212bd3ffd973bd019c4ba1d63b8e087 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_13 is
    pragma Preelaborate;
 
+   --  13-bit element type definition
+
    Bits : constant := 13;
 
    type Bits_13 is mod 2 ** Bits;
index 51996291e4006d3e584e4fbb7d7d4dbe14289e56..0ecb568c391e961ce0ed864f7b233d1e59efab9b 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_14 is
    pragma Preelaborate;
 
+   --  14-bit element type definition
+
    Bits : constant := 14;
 
    type Bits_14 is mod 2 ** Bits;
index 76ab39b077d20fa9644f602e0e9b9da486c71ca5..b96458e46c179cc3f78879826894c53fd1c10923 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_15 is
    pragma Preelaborate;
 
+   --  15-bit element type definition
+
    Bits : constant := 15;
 
    type Bits_15 is mod 2 ** Bits;
index a888f139acfa5750452720ccda04c02300000c4e..2479f8f25c9132337dc35e0b54f2b04fcd910bc2 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_17 is
    pragma Preelaborate;
 
+   --  17-bit element type definition
+
    Bits : constant := 17;
 
    type Bits_17 is mod 2 ** Bits;
index ef95214264bd4b472119bb8849dc8d17f2197623..48d99c5c63a25c94110ad11c83df463ffa96768f 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_18 is
    pragma Preelaborate;
 
+   --  18-bit element type definition
+
    Bits : constant := 18;
 
    type Bits_18 is mod 2 ** Bits;
index 75a7aeb79f32d54661ee439a6accf6bf5df58f4a..38b42204deeacf0c1a87d96c29508927c54ed504 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_19 is
    pragma Preelaborate;
 
+   --  19-bit element type definition
+
    Bits : constant := 19;
 
    type Bits_19 is mod 2 ** Bits;
index e4d6570d5b85668f4b4e3c9ffc7a18ba821e4695..85d973af0f775e9a82bd158ce29bea06cac4ceb2 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_20 is
    pragma Preelaborate;
 
+   --  20-bit element type definition
+
    Bits : constant := 20;
 
    type Bits_20 is mod 2 ** Bits;
index c67bf22aa7f95ca54806c71d04ce8c9ab8275c91..1a9773df5b7ad073b961be45582b29873c21bed5 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_21 is
    pragma Preelaborate;
 
+   --  21-bit element type definition
+
    Bits : constant := 21;
 
    type Bits_21 is mod 2 ** Bits;
index 6241bb254f907fc7eabf40a78cb2cc55db5d1e5a..2eaad228d0759934dc7d1b0503c1138647867a5f 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_22 is
    pragma Preelaborate;
 
+   --  22-bit element type definition
+
    Bits : constant := 22;
 
    type Bits_22 is mod 2 ** Bits;
index 48aaeb52a0ca3311d06c224b5c5b587607997863..58b8892a778d731a7754210ac61b1aa807de07c6 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_23 is
    pragma Preelaborate;
 
+   --  23-bit element type definition
+
    Bits : constant := 23;
 
    type Bits_23 is mod 2 ** Bits;
index 417713110d7d3278e5435869637946cd5fea0bcf..2ffaa2df3831cdda3b06eb428bab852854503dfb 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_24 is
    pragma Preelaborate;
 
+   --  24-bit element type definition
+
    Bits : constant := 24;
 
    type Bits_24 is mod 2 ** Bits;
index 68d4d656b015cb066ae431e6114f172b56c24af7..a824eabb1c78fcbfa419c924b7bf21a1efd4521d 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_25 is
    pragma Preelaborate;
 
+   --  25-bit element type definition
+
    Bits : constant := 25;
 
    type Bits_25 is mod 2 ** Bits;
index d32aabb521cc1f1aab95d85990701a4942732675..032f1bf8e1219a378b2dfea95b77bb2abfb4ff5d 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_26 is
    pragma Preelaborate;
 
+   --  26-bit element type definition
+
    Bits : constant := 26;
 
    type Bits_26 is mod 2 ** Bits;
index 49557574185bafde070e0704a45ea6be4e898da1..5d9b1ddd967a02c70f6b5575df306cbfbacdf7b7 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_27 is
    pragma Preelaborate;
 
+   --  27-bit element type definition
+
    Bits : constant := 27;
 
    type Bits_27 is mod 2 ** Bits;
index 75f7de4352f4b0bf0d31efac7ecd984f772cc412..cfefcfc71685b9081bd713f306fbf1c86b5d1c25 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_28 is
    pragma Preelaborate;
 
+   --  28-bit element type definition
+
    Bits : constant := 28;
 
    type Bits_28 is mod 2 ** Bits;
index 2404df2f0efd48690c3fbfe6e10d35bea956996c..d22220fbcf29cd7117459a94b53392ffc960e526 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_29 is
    pragma Preelaborate;
 
+   --  29-bit element type definition
+
    Bits : constant := 29;
 
    type Bits_29 is mod 2 ** Bits;
index 3bde862b68eb808cba46caf11c764d779e80cd97..a6e18f142588027e05cee493a14d153a9113a303 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_30 is
    pragma Preelaborate;
 
+   --  30-bit element type definition
+
    Bits : constant := 30;
 
    type Bits_30 is mod 2 ** Bits;
index 5fedc778404943034e537b44f411cdabdfb68f2f..28c15aec5ea3a5edb888b677c815594e969663d0 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_31 is
    pragma Preelaborate;
 
+   --  31-bit element type definition
+
    Bits : constant := 31;
 
    type Bits_31 is mod 2 ** Bits;
index dfdc372ffece4287d3f81fb7ff35912a48c6cc3a..09aeb8fa81aab347c9aa7c20789a49475ad29dc7 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_33 is
    pragma Preelaborate;
 
+   --  33-bit element type definition
+
    Bits : constant := 33;
 
    type Bits_33 is mod 2 ** Bits;
index 39799ac31fffbeb43646f54945b8b979fc79350d..45dcbccd25df7caedba52699d419d95e44caa99e 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_34 is
    pragma Preelaborate;
 
+   --  34-bit element type definition
+
    Bits : constant := 34;
 
    type Bits_34 is mod 2 ** Bits;
index 83c97ae6d2e83e3d1a221373a09219766fb3bf11..452683b9f0fe442d4a59bc89969507a292fc89c4 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_35 is
    pragma Preelaborate;
 
+   --  35-bit element type definition
+
    Bits : constant := 35;
 
    type Bits_35 is mod 2 ** Bits;
index ed7f6d701889964489c61f30416aa445a62974ff..9a99a4c15e745e2a17d0a5d5408a44a906f967b0 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_36 is
    pragma Preelaborate;
 
+   --  36-bit element type definition
+
    Bits : constant := 36;
 
    type Bits_36 is mod 2 ** Bits;
index 17ce508cfa2c5db79635a382ae79b7fe3cd6cd94..4ed9f393e1445f6548677ec10a3bb264b0bb4fb4 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_37 is
    pragma Preelaborate;
 
+   --  37-bit element type definition
+
    Bits : constant := 37;
 
    type Bits_37 is mod 2 ** Bits;
index 515f35cf3ac6f3be146869ef6871e03b9a3c1101..d2b3a65d224665ba89e0b91c89470843eab90a31 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_38 is
    pragma Preelaborate;
 
+   --  38-bit element type definition
+
    Bits : constant := 38;
 
    type Bits_38 is mod 2 ** Bits;
index 7835a2268467bf6d93f0d3df2cf7cb19dcf6b598..d5195e87ad645858f4386170b0a0405e040f0fbf 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_39 is
    pragma Preelaborate;
 
+   --  39-bit element type definition
+
    Bits : constant := 39;
 
    type Bits_39 is mod 2 ** Bits;
index d4f9942be43f5bf27cc47cc26919e5e47ab16d2b..35e24b3596c71a4369b80f60be2db443d27656d8 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_40 is
    pragma Preelaborate;
 
+   --  40-bit element type definition
+
    Bits : constant := 40;
 
    type Bits_40 is mod 2 ** Bits;
index 62cfbfae63ee21fc4e00d4152d14cc2a7d3b407a..ee9b5b742d81fb6eca7c4c6a8ddb8c60ecd2fdc4 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_41 is
    pragma Preelaborate;
 
+   --  41-bit element type definition
+
    Bits : constant := 41;
 
    type Bits_41 is mod 2 ** Bits;
index dccb448e4176d5868df477148c6fe854937cbd8d..158b741c7ccb2eb141cfb7572f06d059d3eaaaaa 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_42 is
    pragma Preelaborate;
 
+   --  42-bit element type definition
+
    Bits : constant := 42;
 
    type Bits_42 is mod 2 ** Bits;
index 33e7cbd1310071b9f1c5a5bf77c0bb6849713899..7286357dcc4cadca2e402840324350a5f8bc6501 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_43 is
    pragma Preelaborate;
 
+   --  43-bit element type definition
+
    Bits : constant := 43;
 
    type Bits_43 is mod 2 ** Bits;
index 375e21b88fe59e9947d36d4337835a347715ac6c..95553586b4a3e586bdde2217dd4df24a21769f85 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_44 is
    pragma Preelaborate;
 
+   --  44-bit element type definition
+
    Bits : constant := 44;
 
    type Bits_44 is mod 2 ** Bits;
index e006560a9c3ad09f4d6ff88635220f26c46d7328..f3a0ff8aa2f2e2be07aa4b9174dfb8a7b0b550a9 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_45 is
    pragma Preelaborate;
 
+   --  45-bit element type definition
+
    Bits : constant := 45;
 
    type Bits_45 is mod 2 ** Bits;
index c86e30191932f29d3483bcfce075db4f2163cbdd..b84f963db06fd53eb2cfefccd6ba38cf73b7aa7d 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_46 is
    pragma Preelaborate;
 
+   --  46-bit element type definition
+
    Bits : constant := 46;
 
    type Bits_46 is mod 2 ** Bits;
index 863fa8aee1569f8b4bd2883c9956bb7a32955ea4..f4094f985827fbce82ec28924fa55497cebde2ac 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_47 is
    pragma Preelaborate;
 
+   --  47-bit element type definition
+
    Bits : constant := 47;
 
    type Bits_47 is mod 2 ** Bits;
index 1026d0e68d2f4dc1b19ab1531b32f86c8e732b0a..d7a4764b90467edc4d14716407ed27b8f9ed3ed0 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_48 is
    pragma Preelaborate;
 
+   --  48-bit element type definition
+
    Bits : constant := 48;
 
    type Bits_48 is mod 2 ** Bits;
index f59357fc50d4752250d48a87e11b7c1f76e27bc2..2f5b2d0dad7ca98597f5db8346d0c6c50787e236 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_49 is
    pragma Preelaborate;
 
+   --  49-bit element type definition
+
    Bits : constant := 49;
 
    type Bits_49 is mod 2 ** Bits;
index 48283e299346db242f20fb8c9f629124d3e66649..edb540dbf6cb2f16c60e39c8b3e6ee2d7b2dba9f 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_50 is
    pragma Preelaborate;
 
+   --  50-bit element type definition
+
    Bits : constant := 50;
 
    type Bits_50 is mod 2 ** Bits;
index ee62a74308d3fc192f9f7df0bb33772e8424b641..de07890af8621b80ed3f33cc530ead194fa2a679 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_51 is
    pragma Preelaborate;
 
+   --  51-bit element type definition
+
    Bits : constant := 51;
 
    type Bits_51 is mod 2 ** Bits;
index 6952ad490492c019645f32d115c0fe010c88679b..238f0cbc1eeef15a1f2187b1713f17b92fa3a305 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_52 is
    pragma Preelaborate;
 
+   --  52-bit element type definition
+
    Bits : constant := 52;
 
    type Bits_52 is mod 2 ** Bits;
index 5490316ab8ff9c41b147cf6d7632ef56ad213d29..34fad2950111807312ef0b430e6b0af5852f167a 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_53 is
    pragma Preelaborate;
 
+   --  53-bit element type definition
+
    Bits : constant := 53;
 
    type Bits_53 is mod 2 ** Bits;
index 0399557397d9d5523e8d0f27d5b4367d7aa1d84b..adf8809a925894c41934734ca6f940e7a2f91dc0 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_54 is
    pragma Preelaborate;
 
+   --  54-bit element type definition
+
    Bits : constant := 54;
 
    type Bits_54 is mod 2 ** Bits;
index a4799ca3a48aaad5a3f59f206224080a0a527501..23d48d628e02ca4a916d13608b1e0b4a4b48a12a 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_55 is
    pragma Preelaborate;
 
+   --  55-bit element type definition
+
    Bits : constant := 55;
 
    type Bits_55 is mod 2 ** Bits;
index 690752abdf19514b60660cf859ec0cf00b06948c..973ee307ef08b2d617535d8fb8a6b6835f658ad3 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_56 is
    pragma Preelaborate;
 
+   --  56-bit element type definition
+
    Bits : constant := 56;
 
    type Bits_56 is mod 2 ** Bits;
index 72afa082de13e7dc30536168d86066ba7de2612e..f532648cbb4cd0287fb88145166f0ded974cd4d9 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_57 is
    pragma Preelaborate;
 
+   --  57-bit element type definition
+
    Bits : constant := 57;
 
    type Bits_57 is mod 2 ** Bits;
index 72654ee94ad1c25f3a69c32b1a34ff5baba76a35..aef8f5df9d2e8204fbd253143ab912a053bc5d4a 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_58 is
    pragma Preelaborate;
 
+   --  58-bit element type definition
+
    Bits : constant := 58;
 
    type Bits_58 is mod 2 ** Bits;
index 8996db94bc83c920971d822ef595c648b2ba2c6d..d02f3c6a1b279539270d62a2f2ebbe77376b9d53 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_59 is
    pragma Preelaborate;
 
+   --  59-bit element type definition
+
    Bits : constant := 59;
 
    type Bits_59 is mod 2 ** Bits;
index fb811dbfd03110980ffc919a495ed7dde8771341..c6d18d9f54e2670fefb142c09b37828d3068bab4 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_60 is
    pragma Preelaborate;
 
+   --  60-bit element type definition
+
    Bits : constant := 60;
 
    type Bits_60 is mod 2 ** Bits;
index fc611ba67fe79f502d07757f5c82b1b75ae84d9a..5a13ef787583358512f7540ade7309ba8a3e12bb 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_61 is
    pragma Preelaborate;
 
+   --  61-bit element type definition
+
    Bits : constant := 61;
 
    type Bits_61 is mod 2 ** Bits;
index 4e9fe0c21f38e018a550c4eef1c9532c854c6d50..a72b13f035ebe7d14550795a4fdfd3bd45595110 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_62 is
    pragma Preelaborate;
 
+   --  62-bit element type definition
+
    Bits : constant := 62;
 
    type Bits_62 is mod 2 ** Bits;
index 1744724eeff61e0c4250222f8bead15cf9e1a2ba..a73bc15e651561c0e60011bdf978965a3a8f415e 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_63 is
    pragma Preelaborate;
 
+   --  63-bit element type definition
+
    Bits : constant := 63;
 
    type Bits_63 is mod 2 ** Bits;
index 748a73c154588a51c64620d08c3d62fc1dc15ef6..660d9ba0501e55307ad0f7520ca6b587e8b3029d 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_65 is
    pragma Preelaborate;
 
+   --  65-bit element type definition
+
    Bits : constant := 65;
 
    type Bits_65 is mod 2 ** Bits;
index 5fa825816b0a5c7947dcdefbecee41527c190166..4e9bf870ee10abe596450e1db469f1c1bc370379 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_66 is
    pragma Preelaborate;
 
+   --  66-bit element type definition
+
    Bits : constant := 66;
 
    type Bits_66 is mod 2 ** Bits;
index c0663fa7823bea6b6b924a06ee9284c1c12be500..98be6a28a882965b04979631a9e8220582d3e224 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_67 is
    pragma Preelaborate;
 
+   --  67-bit element type definition
+
    Bits : constant := 67;
 
    type Bits_67 is mod 2 ** Bits;
index 54221544c76100ae6be65fdf10aef8ba35ec62d9..464d8f19dfd52bc1338bab06419ca08ec2ccf56d 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_68 is
    pragma Preelaborate;
 
+   --  68-bit element type definition
+
    Bits : constant := 68;
 
    type Bits_68 is mod 2 ** Bits;
index 42e98824705e4028bddd18cc755d8b84ba4044e4..8bd4333ef345466c0b98390a86bffcec1d761377 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_69 is
    pragma Preelaborate;
 
+   --  69-bit element type definition
+
    Bits : constant := 69;
 
    type Bits_69 is mod 2 ** Bits;
index 4d2af2497cd6a1ad139725307d6b61989ec6c78a..b04ef3349cef1eddd056bded33640f940148e90d 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_70 is
    pragma Preelaborate;
 
+   --  70-bit element type definition
+
    Bits : constant := 70;
 
    type Bits_70 is mod 2 ** Bits;
index 303bc067db13f7682a85feddf5c76b8876dc3115..0276d2f0d2a00d75b8e748426a1871b4a9ad2e44 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_71 is
    pragma Preelaborate;
 
+   --  71-bit element type definition
+
    Bits : constant := 71;
 
    type Bits_71 is mod 2 ** Bits;
index c2afd042d8a0d160c7ba3acf6f9646a4c6912ac9..43def8deca40e7ab58a54695194cbff5fa8bd87a 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_72 is
    pragma Preelaborate;
 
+   --  72-bit element type definition
+
    Bits : constant := 72;
 
    type Bits_72 is mod 2 ** Bits;
index b4c00cae82fdd9caa999dc29575040dd6c2421f1..cd0326a10e261ab088206ece49fd9b4d30449bd6 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_73 is
    pragma Preelaborate;
 
+   --  73-bit element type definition
+
    Bits : constant := 73;
 
    type Bits_73 is mod 2 ** Bits;
index b8913926ae53af075ad1ba714253fcfe6a417ddc..2241ac967cfb53e346b93287c277e6d940a02b36 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_74 is
    pragma Preelaborate;
 
+   --  74-bit element type definition
+
    Bits : constant := 74;
 
    type Bits_74 is mod 2 ** Bits;
index a8dc38c5ea30a22919b5a313946a96153edd6fc3..c07395e7d1466b0fe27c1d924813c83d96c7142e 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_75 is
    pragma Preelaborate;
 
+   --  75-bit element type definition
+
    Bits : constant := 75;
 
    type Bits_75 is mod 2 ** Bits;
index e177237a8ee5e0143635f021533a1b1a07620a7b..cd382f7ed76b11fec4bd93fbb733e358ac6bc62c 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_76 is
    pragma Preelaborate;
 
+   --  76-bit element type definition
+
    Bits : constant := 76;
 
    type Bits_76 is mod 2 ** Bits;
index 369f73528ff0e8c149295003146eed5e1872bcb1..c1e2c81d365dae928bc83c933f57f58d800d6bc6 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_77 is
    pragma Preelaborate;
 
+   --  77-bit element type definition
+
    Bits : constant := 77;
 
    type Bits_77 is mod 2 ** Bits;
index 14c1ab48abd06a2dfcdb898fd1911e457d2d5e5f..70ef18e2afba73d4194e8d35f6dad9b2630b2a5e 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_78 is
    pragma Preelaborate;
 
+   --  78-bit element type definition
+
    Bits : constant := 78;
 
    type Bits_78 is mod 2 ** Bits;
index a7e4e2f0a29d0804b6924fb80f2bb4f847093bc0..667b8c54b89d6e49ad00d890ad3d2a0a70f8b9ee 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_79 is
    pragma Preelaborate;
 
+   --  79-bit element type definition
+
    Bits : constant := 79;
 
    type Bits_79 is mod 2 ** Bits;
index 1823ab0c13d0bffc3057c5a9e3bdfbb363c0c139..502991a71a0fab6dd1549a6d9daccd63a5b27155 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_80 is
    pragma Preelaborate;
 
+   --  80-bit element type definition
+
    Bits : constant := 80;
 
    type Bits_80 is mod 2 ** Bits;
index 355412a91f20ce82b24bcf2a8868f1571ce38d6a..86b3acc326fa206cb51599a268d2af02d825588b 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_81 is
    pragma Preelaborate;
 
+   --  81-bit element type definition
+
    Bits : constant := 81;
 
    type Bits_81 is mod 2 ** Bits;
index c60767b197c015450294df19070665c22d308b7a..33cbd4076438cd2c4edc0b5f43134244879deae1 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_82 is
    pragma Preelaborate;
 
+   --  82-bit element type definition
+
    Bits : constant := 82;
 
    type Bits_82 is mod 2 ** Bits;
index c86223a1930d3471bfe9962eadbb970c04512800..9c5485d7621772ece4a3b80e6a647f76a7c68edd 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_83 is
    pragma Preelaborate;
 
+   --  83-bit element type definition
+
    Bits : constant := 83;
 
    type Bits_83 is mod 2 ** Bits;
index 7c7e4e1d06a55b8ab38c904bb151054d0f48cdfd..56ab7ba1b4d901c9aa969c2993a2c8b77e66d35c 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_84 is
    pragma Preelaborate;
 
+   --  84-bit element type definition
+
    Bits : constant := 84;
 
    type Bits_84 is mod 2 ** Bits;
index 32d48ce778827ee8c260de9062d1f746445fcbb0..1eb05737b5044e60962165a6ed60badd69008671 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_85 is
    pragma Preelaborate;
 
+   --  85-bit element type definition
+
    Bits : constant := 85;
 
    type Bits_85 is mod 2 ** Bits;
index 7c687c15b97d2328de7dc5422b0e0e33919dc4ea..d7ac81103291838563be6f2302e04c726f982cc8 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_86 is
    pragma Preelaborate;
 
+   --  86-bit element type definition
+
    Bits : constant := 86;
 
    type Bits_86 is mod 2 ** Bits;
index 5e7463c88acebdb14089573c7b5c3b5fb1a0acfc..451f79061a3817a9e51f5dac21f5e8edd1255b70 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_87 is
    pragma Preelaborate;
 
+   --  87-bit element type definition
+
    Bits : constant := 87;
 
    type Bits_87 is mod 2 ** Bits;
index 3644139e9f549a2122e8b053aed5a65dc3a8549c..41c1b26c877915e51c4d6c0cc06c70adab59a9bc 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_88 is
    pragma Preelaborate;
 
+   --  88-bit element type definition
+
    Bits : constant := 88;
 
    type Bits_88 is mod 2 ** Bits;
index f6817f25196ced870fc573cd72cc5147868bd9fa..626b0258b4aa68ef2343a10cb89b95c593be2037 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_89 is
    pragma Preelaborate;
 
+   --  89-bit element type definition
+
    Bits : constant := 89;
 
    type Bits_89 is mod 2 ** Bits;
index e3cb3740e1a0e1c7e87c1909c504aa898dd67f50..52701cb493154b0a0cce641f07ffd18143b436ab 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_90 is
    pragma Preelaborate;
 
+   --  90-bit element type definition
+
    Bits : constant := 90;
 
    type Bits_90 is mod 2 ** Bits;
index ad4886a58e3d3f31e96072916e40e26ed9e5059e..81c164310d36d20185707c127d3996ab05f8daed 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_91 is
    pragma Preelaborate;
 
+   --  91-bit element type definition
+
    Bits : constant := 91;
 
    type Bits_91 is mod 2 ** Bits;
index 4d2f59553d7ef511dbb1e03a28a2f87c54180009..44fec8b475398f2c2ebbfe770552e64ae53aa83b 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_92 is
    pragma Preelaborate;
 
+   --  92-bit element type definition
+
    Bits : constant := 92;
 
    type Bits_92 is mod 2 ** Bits;
index b313da93538d717806bd02d6467b10adb5c6e34c..4a4ceccd6654af4bc9f00fb37041109f102b45e4 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_93 is
    pragma Preelaborate;
 
+   --  93-bit element type definition
+
    Bits : constant := 93;
 
    type Bits_93 is mod 2 ** Bits;
index 5d3dd6ccba576d72e635bd0509b3b8bc1b4ebb26..20066e18bdcbcbb6682e41de7e94769aa948812d 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_94 is
    pragma Preelaborate;
 
+   --  94-bit element type definition
+
    Bits : constant := 94;
 
    type Bits_94 is mod 2 ** Bits;
index 3d5c69416155f808c26fad66146e948539967e32..0d58b3e640a3515bcb4770e6c6b0ae8470cbd903 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_95 is
    pragma Preelaborate;
 
+   --  95-bit element type definition
+
    Bits : constant := 95;
 
    type Bits_95 is mod 2 ** Bits;
index 301e12f1417cd21758257ed0e63594e5036c157e..f6400183d09cfd664d1d0508ade1c26539d37538 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_96 is
    pragma Preelaborate;
 
+   --  96-bit element type definition
+
    Bits : constant := 96;
 
    type Bits_96 is mod 2 ** Bits;
index 9e0aca5ab1164fffcb3e40e7cbc86ec32e76a100..b52a82f6795780bb953a07ed94021cee29bff618 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_97 is
    pragma Preelaborate;
 
+   --  97-bit element type definition
+
    Bits : constant := 97;
 
    type Bits_97 is mod 2 ** Bits;
index 3425e1b1b17286023c9782846335777c6bf88098..d64cc644150757f385b5de5e7956cb89c38c0579 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_98 is
    pragma Preelaborate;
 
+   --  98-bit element type definition
+
    Bits : constant := 98;
 
    type Bits_98 is mod 2 ** Bits;
index 2fbc3e2f9638e86fc4560f16d5f2d34fed1552ec..a9de50c4ae63eed34bfab07106db93544d4cfbfd 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_99 is
    pragma Preelaborate;
 
+   --  99-bit element type definition
+
    Bits : constant := 99;
 
    type Bits_99 is mod 2 ** Bits;
index e5ed7bfc04e84896c298ee84d07022200a957b9c..5e99c90d0d73bfd584ee134dc2db1102417a48c0 100644 (file)
 
 --  Default version used when no target-specific version is provided
 
---  This package defines some system dependent parameters for GNAT. These
---  are values that are referenced by the runtime library and are therefore
---  relevant to the target machine.
+--  This package defines a number of system-dependent parameters for GNAT.
+--  These are values that are referenced by the runtime library and are
+--  therefore relevant to the target machine. This includes the default and
+--  minimum size and the length of a task name.
 
 --  The parameters whose value is defined in the spec are not generally
 --  expected to be changed. If they are changed, it will be necessary to
index a9e7edc17778dc683eb0b3d730d3201fc6909f98..03ec8e50c3f0b4189243e5aba1cfe1ad12e5f4b1 100644 (file)
@@ -30,8 +30,9 @@
 ------------------------------------------------------------------------------
 
 --  This package defines the set of restriction identifiers. It is a generic
---  package that is instantiated by the compiler/binder in package Rident, and
---  is instantiated in package System.Restrictions for use at run-time.
+--  package that is instantiated by the compiler/binder in package ``Rident``,
+--  and is instantiated in package ``System.Restrictions`` for use at
+--  run-time.
 
 --  The reason that we make this a generic package is so that in the case of
 --  the instantiation in Rident for use at compile time and bind time, we can
index f38e99644893e89443a498ac396b7434aa188e7a..19f5a391592c60cddf478a584e1217e026ae24f6 100644 (file)
@@ -29,6 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This is the top level unit of the SPARK package. Its children
+--  contain helper functions to aid proofs.
+
 package System.SPARK with
   SPARK_Mode,
   Pure
index ceaaa54058e8acfe72fa04355c88e9faec4004ab..9e8e683ec5651a57e1b47af6fe71d92fd23a5b52 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  By and So are connectors used to manually help the proof of assertions by
---  introducing intermediate steps. They can only be used inside pragmas
---  Assert or Assert_And_Cut. They are handled in the following way:
---
---  *  If A and B are two boolean expressions, proving By (A, B) requires
---     proving B, the premise, and then A assuming B, the side-condition. When
---     By (A, B) is assumed on the other hand, we only assume A. B is used
---     for the proof, but is not visible afterward.
---
---  *  If A and B are two boolean expressions, proving So (A, B) requires
---     proving A, the premise, and then B assuming A, the side-condition. When
---     So (A, B) is assumed both A and B are assumed to be true.
+--  This package provides connectors used to manually help the proof of
+--  assertions by introducing intermediate steps. They can only be used inside
+--  pragmas Assert or Assert_And_Cut.
 
 package System.SPARK.Cut_Operations with
   SPARK_Mode,
@@ -51,9 +42,16 @@ is
    function By (Consequence, Premise : Boolean) return Boolean with
      Ghost,
      Global => null;
+   --  If A and B are two boolean expressions, proving By (A, B) requires
+   --  proving B, the premise, and then A assuming B, the side-condition. When
+   --  By (A, B) is assumed on the other hand, we only assume A. B is used
+   --  for the proof, but is not visible afterward.
 
    function So (Premise, Consequence : Boolean) return Boolean with
      Ghost,
      Global => null;
+   --  If A and B are two boolean expressions, proving So (A, B) requires
+   --  proving A, the premise, and then B assuming A, the side-condition. When
+   --  So (A, B) is assumed both A and B are assumed to be true.
 
 end System.SPARK.Cut_Operations;
index f7e363060d124e45be4f11ecf732b38daf886b53..c39bad7327c967e4cfb29d881caf9696e7582cff 100644 (file)
@@ -33,6 +33,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package provides the ``Storage_Elements`` package as defined by the
+--  Ada ARM 13.7.1 to allow for arithmetic operations on memory addresses.
+
 --  Warning: declarations in this package are ambiguous with respect to the
 --  extra declarations that can be introduced into System using Extend_System.
 --  It is a good idea to avoid use clauses for this package.
@@ -51,9 +54,12 @@ is
    type Storage_Offset is range -Memory_Size / 2 .. Memory_Size / 2 - 1;
 
    subtype Storage_Count is Storage_Offset range 0 .. Storage_Offset'Last;
+   --  *Storage_Count* is a subtype of *Storage_Offset* with only the null or
+   --  positive values.
 
    type Storage_Element is mod 2 ** Storage_Unit;
    for Storage_Element'Size use Storage_Unit;
+   --  The type *Storage_Element* represents a byte
 
    pragma Universal_Aliasing (Storage_Element);
    --  This type is used by the expander to implement aggregate copy
@@ -61,30 +67,38 @@ is
    type Storage_Array is
      array (Storage_Offset range <>) of aliased Storage_Element;
    for Storage_Array'Component_Size use Storage_Unit;
+   --  The type *Storage_Array* represents a part of the memory
 
    --  Address arithmetic
 
    function "+" (Left : Address; Right : Storage_Offset) return Address;
    function "+" (Left : Storage_Offset; Right : Address) return Address;
    pragma Import (Intrinsic, "+");
+   --   Returns the sum of ``Left`` and ``Right``
 
    function "-" (Left : Address; Right : Storage_Offset) return Address;
    function "-" (Left, Right : Address) return Storage_Offset;
    pragma Import (Intrinsic, "-");
+   --  Returns the difference between ``Left`` and ``Right``
 
    function "mod"
      (Left  : Address;
       Right : Storage_Offset) return Storage_Offset;
    pragma Import (Intrinsic, "mod");
+   --  Returns the modulus between ``Left`` and ``Right``
 
    --  Conversion to/from integers
 
    type Integer_Address is mod Memory_Size;
+   --  Finally, *Integer_Address* is a non-private modular
+   --  type that represents an address.
 
    function To_Address (Value : Integer_Address) return Address;
    pragma Import (Intrinsic, To_Address);
+   --  Converts the *Integer_Address* ``Value`` to an *Address*
 
    function To_Integer (Value : Address) return Integer_Address;
    pragma Import (Intrinsic, To_Integer);
+   --  Converts the *Address* ``Value`` to an *Integer_Address*
 
 end System.Storage_Elements;
index bd1d93680f3b7efafe71f23b15a734c36c7e0a76..1453b17bc297366c537a2206165425937fe17017 100644 (file)
@@ -51,8 +51,8 @@ package System.Traceback_Entries is
 
    function PC_For (TB_Entry : Traceback_Entry) return System.Address;
    pragma Inline (PC_For);
-   --  Returns the address of the call instruction associated with the
-   --  provided entry.
+   --  Returns the address of the call instruction associated with
+   --  the provided entry.
 
    function TB_Entry_For (PC : System.Address) return Traceback_Entry;
    pragma Inline (TB_Entry_For);
index f60e97af6d4cf48fa5cb4103bb65785c6bd4783c..cc737aaa39f9ee8cf224e0c6c0d1674608ed7ebd 100644 (file)
@@ -45,6 +45,8 @@ package System.Unsigned_Types is
    type Long_Unsigned           is mod 2 ** Long_Integer'Size;
    type Long_Long_Unsigned      is mod 2 ** Long_Long_Integer'Size;
    type Long_Long_Long_Unsigned is mod Max_Binary_Modulus;
+   --  These are modular types that correspon in size to the standard signed
+   --  types declared in Standard.
 
    type Packed_Byte is mod 2 ** 8;
    for Packed_Byte'Size use 8;
@@ -103,6 +105,9 @@ package System.Unsigned_Types is
    --  scalar storage order. But the Scalar_Storage_Order attribute cannot be
    --  set directly here, see Exp_Pakd for more details.
 
+   --  Various aligned arrays of bytes. Those types may be unused on limited
+   --  run-times, but are still present for compatibility between run-times.
+
    type Bits_1 is mod 2**1;
    type Bits_2 is mod 2**2;
    type Bits_4 is mod 2**4;
@@ -230,6 +235,8 @@ package System.Unsigned_Types is
    function Rotate_Right
      (Value  : Long_Long_Long_Unsigned;
       Amount : Natural) return Long_Long_Long_Unsigned;
+   --  The shift and rotate primitives for the unsigned types are intrinsic,
+   --  fully implemented by the compiler.
 
    pragma Import (Intrinsic, Shift_Left);
    pragma Import (Intrinsic, Shift_Right);
index 6fcd485ae600484d3c0e7410e0d041805559831d..21ffc20b17666a588225b2a0d025afaada2acd60 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the specification entities using for the formal
---  verification of the routines for scanning signed integer values.
+--  This package is part of a set of Ghost code packages used to proof the
+--  implementations of the Image and Value attributes. It provides the
+--  specification entities using for the formal verification of the routines
+--  for scanning signed integer values.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
index d51f68096a206bb15bca8f9c5fdf8a268df638ef..cc5b2e624ae44072e96a48d370d55a66b0aaa0ad 100644 (file)
@@ -29,8 +29,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package provides some common specification functions used by the
---  s-valxxx files.
+--  This package is part of a set of Ghost code packages used to proof the
+--  implementations of the Image and Value attributes. It provides some common
+--  specification functions used by the s-valxxx files.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
index 47f7ba073bbc34e504b053941a70cb0aa1bc853c..efed4178b2addcfa6bf053ed677e81b1e6d00a23 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This package contains the specification entities using for the formal
---  verification of the routines for scanning modular Unsigned values.
+--  This package is part of a set of Ghost code packages used to proof the
+--  implementations of the Image and Value attributes. It provides the
+--  specification entities using for the formal verification of the routines
+--  for scanning modular unsigned integer values.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
index 9d757dc3721bfe96d3541a2fcbca75f611eff376..9464d034191f9a92ff7328d39357f09e28283e10 100644 (file)
@@ -103,16 +103,6 @@ is
        and then (for all J in 1 .. Vector_Boolean_Size =>
                    Model ("not"'Result) (J) = not Model (Item) (J));
 
-   --  The three boolean operations "nand", "nor" and "nxor" are needed
-   --  for cases where the compiler moves boolean array operations into
-   --  the body of the loop that iterates over the array elements.
-
-   --  Note the following equivalences:
-   --    (not X) or  (not Y)  =  not (X and Y)  =  Nand (X, Y)
-   --    (not X) and (not Y)  =  not (X or Y)   =  Nor  (X, Y)
-   --    (not X) xor (not Y)  =  X xor Y
-   --    X       xor (not Y)  =  not (X xor Y)  =  Nxor (X, Y)
-
    function Nand (Left, Right : Boolean) return Boolean
    with
      Post => Nand'Result = not (Left and Right);
@@ -151,6 +141,15 @@ is
        and then (for all J in 1 .. Vector_Boolean_Size =>
                    Model (Nxor'Result) (J) =
                      Nxor (Model (Left) (J), Model (Right) (J)));
+   --  The three boolean operations "nand", "nor" and "nxor" are needed
+   --  for cases where the compiler moves boolean array operations into
+   --  the body of the loop that iterates over the array elements.
+   --
+   --  Note the following equivalences:
+   --    (not X) or  (not Y)  =  not (X and Y)  =  Nand (X, Y)
+   --    (not X) and (not Y)  =  not (X or Y)   =  Nor  (X, Y)
+   --    (not X) xor (not Y)  =  X xor Y
+   --    X       xor (not Y)  =  not (X xor Y)  =  Nxor (X, Y)
 
    pragma Inline_Always ("not");
    pragma Inline_Always (Nand);
index 707a90bb2bd021acfc81948ea9550122f4fbcb71..9642d91d168b2c11831e32adc1acf25c08cd7014 100644 (file)
@@ -30,7 +30,8 @@
 ------------------------------------------------------------------------------
 
 --  This package defines a datatype which is most efficient for performing
---  logical operations on large arrays. See System.Generic_Vector_Operations.
+--  logical operations on large arrays. See
+--  :ref:`System.Generic_Vector_Operations`.
 
 --  In the future this package may also define operations such as element-wise
 --  addition, subtraction, multiplication, minimum and maximum of vector-sized
@@ -45,5 +46,7 @@ package System.Vectors is
    for Vector'Alignment use Integer'Min
      (Standard'Maximum_Alignment, System.Word_Size / System.Storage_Unit);
    for Vector'Size use System.Word_Size;
+   --  The *Vector* type uses an alignment that allows translating it into
+   --  words.
 
 end System.Vectors;
index 4ffce1677013868558cac35f8c955646b490eac6..208c99751dc7d3bff7041cfc0a7f8d2ef8e97f4f 100644 (file)
@@ -30,7 +30,7 @@
 ------------------------------------------------------------------------------
 
 --  This package contains specification functions for scanning signed Integer
---  values for use in Text_IO.Integer_IO, and the Value attribute.
+--  values for use in ``Text_IO.Integer_IO``, and the Value attribute.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
index 79a2fe19d2391828b6dc1ded094bb94d7151b9bc..45df37741d295300b5d1daa50bab3b4e153b19e8 100644 (file)
@@ -30,7 +30,7 @@
 ------------------------------------------------------------------------------
 
 --  This package contains specification functions for scanning
---  Long_Long_Integer values for use in Text_IO.Integer_IO, and the Value
+--  Long_Long_Integer values for use in ``Text_IO.Integer_IO``, and the Value
 --  attribute.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
index 9cfd93528db49d4fe9360f0026e6abb3c08abac5..c9bf1d0bb14120e63f77337ce0baa2de81d537e0 100644 (file)
@@ -30,7 +30,7 @@
 ------------------------------------------------------------------------------
 
 --  This package contains specification functions for scanning
---  Long_Long_Unsigned values for use in Text_IO.Modular_IO, and the Value
+--  Long_Long_Unsigned values for use in ``Text_IO.Modular_IO``, and the Value
 --  attribute.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
index 8bdf95ab6cb0d8b0278ee127fe32df25a33bedfc..b9a030f2eecd7600824b94dbd0d15f23d8e03585 100644 (file)
@@ -30,7 +30,7 @@
 ------------------------------------------------------------------------------
 
 --  This package contains specification functions for scanning modular Unsigned
---  values for use in Text_IO.Modular_IO, and the Value attribute.
+--  values for use in ``Text_IO.Modular_IO``, and the Value attribute.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
index 858686101f8327fb44cb15bc682f716d1b3d8e03..2dcb95fb0287cbb31d703f61297f3da23569b560 100644 (file)
@@ -30,8 +30,8 @@
 ------------------------------------------------------------------------------
 
 --  This package contains specification functions for scanning
---  Long_Long_Long_Integer values for use in Text_IO.Integer_IO, and the Value
---  attribute.
+--  ``Long_Long_Long_Integer`` values for use in ``Text_IO.Integer_IO``, and
+--  the Value attribute.
 
 --  Preconditions in this unit are meant for analysis only, not for run-time
 --  checking, so that the expected exceptions are raised. This is enforced by
index 4c67d8dd36f23022afebba29f95cd5da8fbaa090..4c8440e45f3bda78587595fcd792f7cca0c6a8e5 100644 (file)
@@ -13,6 +13,9 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  This package is provided for compatibility with Ada 83. It renames
+--  :ref:`Ada.Text_IO` and provides the same functionality.
+
 pragma Ada_2012;
 --  Explicit setting of Ada 2012 mode is required here, since we want to with a
 --  child unit (not possible in Ada 83 mode), and Text_IO is not considered to
index 7937020874ab4144f2cf61be907b08c2d9096826..58ef99439d9d28236b6e7f8f2047a952ec482c37 100644 (file)
@@ -13,6 +13,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  Renaming of :ref:`Ada.Unchecked_Conversion`
+
 generic
    type Source (<>) is limited private;
    type Target (<>) is limited private;
@@ -20,3 +22,4 @@ generic
 function Unchecked_Conversion (S : Source) return Target;
 pragma Import (Intrinsic, Unchecked_Conversion);
 pragma Pure (Unchecked_Conversion);
+--  See ``Ada.Unchecked_Conversion``
index 4735a5207914507c89d073db40963bae2a685ec8..870c4eca2ce730f1abfb6357728058527b332876 100644 (file)
@@ -13,6 +13,8 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
+--  Renaming of :ref:`Ada.Unchecked_Deallocation`
+
 generic
    type Object (<>) is limited private;
    type Name is access Object;
index f5f1784e47805c792628508caf990fbdd44a57f6..910b5aaa3d5c5f7fd54474d6f0a96586b0abceec 100644 (file)
@@ -34,6 +34,8 @@
 package System.Pack_@@ is
    pragma Preelaborate;
 
+   --  @-bit element type definition
+
    Bits : constant := @;
 
    type Bits_@@ is mod 2 ** Bits;