Restrictions

Ada Programming · Wikibooks

0%

Contents

    Text

    Size
    100%
    Theme
    Typeface
    Line length
    Spacing

    From Wikibooks, under CC BY-SA 4.0, as the source states it. This page at Wikibooks.

    Restrictions

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

    Summary

    The pragma Restrictions is used to forbid the utilization of some language features.

    List of language defined restrictions identifiers

    Some restrictions are specially marked:

    Ada 2005
    This is a new Ada 2005 restrictions identifier.
    Ada 2012
    This is a new Ada 2012 restrictions identifier.

    List of implementation defined restrictions identifiers

    The following restrictions are not available in all Ada compilers, only in those that had implemented them:

    GNAT
    This is an implementation defined restriction identifier of the GNAT compiler.

    "Hello, world!" with restrictions

    The following sample demonstrates the use of pragma Restrictions. Note that on Windows, Linux and macOS the given restrictions won't change the generated code.

    File: hello_world_restricted.adb, Crate: pragmas_restrictions (view, plain text, download with Alire, Alire crate info)

    Illustration Code:

    pragma Restrictions (
       Simple_Barriers,
       No_Abort_Statements,
       No_Asynchronous_Control,
       No_Calendar,
       No_Delay,
       No_Dynamic_Attachment,
       No_Dynamic_Priorities,
       No_Enumeration_Maps,
       No_Entry_Calls_In_Elaboration_Code,
       No_Entry_Queue,
       No_Exception_Registration,
       No_Initialize_Scalars,
       No_Local_Protected_Objects,
       No_Protected_Type_Allocators,
       No_Protected_Types,
       No_Relative_Delay,
       No_Requeue_Statements,
       No_Select_Statements,
       No_Streams,
       No_Task_Allocators,
       No_Task_Attributes_Package,
       No_Task_Hierarchy,
       No_Task_Termination,
       No_Tasking,
       No_Terminate_Alternatives,
       No_Wide_Characters,
       Static_Priorities,
       Static_Storage_Size,
       Immediate_Reclamation,
       No_Implementation_Restrictions,
       Max_Protected_Entries => 0,
       Max_Protected_Entries => 0,
       Max_Select_Alternatives => 0,
       Max_Task_Entries => 0,
       Max_Tasks => 0,
       Max_Asynchronous_Select_Nesting => 0);
    
    with Ada.Text_IO;
    
    procedure Hello_World_Restricted is
    begin
       Ada.Text_IO.Put_Line ("Hello World!");
       Ada.Text_IO.New_Line;
       Ada.Text_IO.Put_Line ("This is a program with restricted runtime.");
    end Hello_World_Restricted;
    

    Illustration Output:

    >alr run hello_world_restricted
    ⓘ Building pragmas_restrictions=1.0.1/pragmas_restrictions.gpr...          
    Compile
       [Ada]          hello_world_restricted.adb
    Bind
       [gprbind]      hello_world_restricted.bexch
       [Ada]          hello_world_restricted.ali
    Link
       [link]         hello_world_restricted.adb
    ✓ Build finished successfully in 0.83 seconds.
    Hello World!
    
    This is a program with restricted runtime.
    

    See also

    Wikibook

    Ada Reference Manual

    Ada Quality and Style Guide