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
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;
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
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;
Ada Reference Manual
- 8.3 Visibility (Annotated)
- 8.4 Use Clauses (Annotated)
- 13.3 Operational and Representation Attributes (Annotated)
- 13.4 Enumeration Representation Clauses (Annotated)
- 13.5.1 Record Representation Clauses (Annotated)
Ada Quality and Style Guide