Ada Programming/Keywords/use

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Ada. Time-tested, safe and secure.
Ada. Time-tested, safe and secure.

Use clause

At library level

This use clause make the content of a package immediately visible.

with Ada.Text_IO;   use Ada.Text_IO;

procedure Hello is
begin
   Put_Line("Hello, world!");
   New_Line;
   Put_Line("I am an Ada program with package use.");
end Hello;

If readability is your main concern then you should avoid this type of use clause. However it is needed to resolve a name clash between the packages which are imported and the package currently compiled.

At declaration level

File: hello_world_3.adb (view, plain text, download page, browse all)
with Ada.Text_IO;

procedure Hello is
   use Ada.Text_IO;
begin
   Put_Line("Hello, world!");
   New_Line;
   Put_Line("I am an Ada program with package use.");
end Hello;

For types

with Ada.Text_IO;

procedure Hello is
   use type Ada.Text_IO.File_Type
begin
   Ada.Text_IO.Put_Line("Hello, world!");
   Ada.Text_IO.New_Line;
   Ada.Text_IO.Put_Line("I am an Ada program with package use.");
end Hello;

Representation clause

For attributes

type Day_Of_Month is range 1 .. 31;            
for  Day_Of_Month'Size      use 8;  -- 8 bits
for  Day_Of_Month'Alignment use 1;  -- 1 byte

For records

type Device_Register is
    record
       Ready : Status_Flag;
       Error : Error_Flag;
       Data  : Unsigned_16;
    end record;

for  Device_Register use
    record
       Ready at 0 range  0 .. 0;
       Error at 0 range  1 .. 1;
       -- Reserved bits
       Data  at 0 range 16 .. 31;
    end record;

For enumerations

type Status_Flag is  (Ready, Wait);
for  Status_Flag use (Ready => 0, Wait => 1);

See also

Wikibook

Ada Reference Manual

Ada Quality and Style Guide


Ada Keywords
abort else new return
abs elsif not reverse
abstract (Ada 95) end null
accept entry select
access exception of separate
aliased (Ada 95) exit or some (Ada 2012)
all others subtype
and for out synchronized (Ada 2005)
array function overriding (Ada 2005)
at tagged (Ada 95)
generic package task
begin goto parallel (Ada 2022) terminate
body pragma then
if private type
case in procedure
constant interface (Ada 2005) protected (Ada 95) until (Ada 95)
is use
declare raise
delay limited range when
delta loop record while
digits rem with
do mod renames
requeue (Ada 95) xor