Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Ada Programming/Pragmas/Restrictions

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Pragmas Restrictions __TOC__ 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. Immediate_Reclamation Max_Asynchronous_Select_Nesting Max_Entry_Queue_Length (Ada 2005) Max_Protected_Entries Max_Select_Alternatives Max_Storage_At_Blocking Max_Task_Entries Max_Tasks No_Abort_Statements No_Access_Parameter_Allocators (Ada 2012) No_Access_Subprograms No_Allocators No_Anonymous_Allocators (Ada 2012) No_Asynchronous_Control No_Coextensions (Ada 2012) No_Delay No_Dependence (Ada 2005) No_Dispatch No_Dynamic_Attachment (Ada 2005) No_Dynamic_Priorities No_Exceptions No_Fixed_Point No_Floating_Point No_Implementation_Aspect_Specifications (Ada 2012) No_Implementation_Attributes (Ada 2005) No_Implementation_Identifiers (Ada 2012) No_Implementation_Pragmas (Ada 2005) No_Implementation_Units (Ada 2012) No_Implicit_Heap_Allocations No_IO No_Local_Allocators No_Local_Protected_Objects (Ada 2005) No_Local_Timing_Events (Ada 2005) No_Nested_Finalization No_Obsolescent_Features (Ada 2005) No_Protected_Type_Allocators (Ada 2005) No_Protected_Types No_Recursion No_Reentrancy No_Relative_Delay (Ada 2005) No_Requeue_Statements (Ada 2005) No_Select_Statements (Ada 2005) No_Specific_Termination_Handlers (Ada 2005) No_Specification_of_Aspect (Ada 2012) No_Standard_Allocators_After_Elaboration (Ada 2012) No_Task_Allocators No_Task_Hierarchy No_Task_Termination (Ada 2005) No_Terminate_Alternatives No_Unchecked_Access No_Unchecked_Conversion No_Unchecked_Deallocation No_Use_of_Attribute (Ada 2012) No_Use_of_Pragma (Ada 2012) Simple_Barriers (Ada 2005) 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. No_Calendar (GNAT) No_Default_Initialization (GNAT) No_Direct_Boolean_Operators (GNAT) No_Dispatching_Calls (GNAT) No_Elaboration_Code (GNAT) No_Enumeration_Maps (GNAT) No_Entry_Calls_In_Elaboration_Code (GNAT) No_Entry_Queue (GNAT) No_Exception_Handlers (GNAT) No_Exception_Propagation (GNAT) No_Exception_Registration, previously named 'No_Exception_Streams' (GNAT) No_Implementation_Restrictions (GNAT) No_Implicit_Aliasing (GNAT) No_Implicit_Conditionals (GNAT) No_Implicit_Dynamic_Code (GNAT) No_Implicit_Loops (GNAT) No_Initialize_Scalars (GNAT) No_Secondary_Stack (GNAT) No_Select_Statements (GNAT) No_Standard_Storage_Pools (GNAT) No_Streams (GNAT) No_Task_Attributes_Package (GNAT) No_Tasking (GNAT) No_Wide_Characters (GNAT) SPARK (GNAT) Static_Priorities (GNAT) Static_Storage_Size (GNAT) "Hello, world!" with restrictions The following sample demonstrates the use of Restrictions. Note that on Windows, Linux and macOS the given restrictions won't change the generated code. hello_world_restricted.adb pragmas_restrictions 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; >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 Programming Ada Programming/Pragmas Ada Reference Manual 13 12 Pragma Restrictions D 7 Tasking Restrictions H 4 Safety and Security Restrictions Ada Quality and Style Guide 10 7 2 Pragma Restrictions Restrictions Pragmas:Restrictions Restrictions Restrictions