--  Copyright (2008-2013) Cédric Coussinet (cedric.coussinet@nomoseed.net)
--
--  This program is free software: you can redistribute it and/or modify
--  it under the terms of the GNU Affero General Public License as published
--  by the Free Software Foundation, either version 3 of the License, or
--  (at your option) any later version.
--
--  This program is distributed in the hope that it will be useful,
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--  GNU Affero General Public License for more details.

--  You should have received a copy of the GNU Affero General Public License
--  along with this program. If not, see <http://www.gnu.org/licenses/>

pragma Task_Dispatching_Policy (FIFO_Within_Priorities);

pragma Locking_Policy (Ceiling_Locking);

pragma Detect_Blocking;

pragma Restrictions (
                     No_Nested_Finalization,
                     No_Dispatch,
                     No_Unchecked_Conversion,
                     No_Allocators,
                     Immediate_Reclamation,
                     --  No_Streams,
                     --  No_Default_Stream_Attributes,
                     --  No_IO,
                     --  No_Implicit_Heap_Allocations,
                     No_Initialize_Scalars,
                     No_Unchecked_Deallocation,
                     --  No_Delay,
                     --  No_Access_Subprograms,
                     No_Recursion,
                     No_Abort_Statements,
                     No_Asynchronous_Control,
                     No_Dynamic_Attachment,
                     No_Dynamic_Priorities,
                     No_Local_Protected_Objects,
                     No_Protected_Type_Allocators,
                     No_Relative_Delay,
                     No_Requeue_Statements,
                     No_Select_Statements,
                     No_Tasking,
                     No_Task_Allocators,
                     No_Task_Attributes_Package,
                     No_Task_Hierarchy,
                     No_Task_Termination,
                     No_Terminate_Alternatives,
                     No_Entry_Calls_In_Elaboration_Code,
                     No_Entry_Queue,
                     No_Exception_Registration,
                     No_Local_Timing_Events,
                     No_Specific_Termination_Handlers,
                     No_Stream_Optimizations,
                     No_Tasking,
                     Static_Priorities,
                     Static_Storage_Size,
                     No_Wide_Characters,
                     Simple_Barriers,
                     Max_Entry_Queue_Length          => 1,
                     Max_Protected_Entries           => 0,
                     Max_Select_Alternatives         => 0,
                     Max_Task_Entries                => 0,
                     Max_Tasks                       => 0,
                     Max_Asynchronous_Select_Nesting => 0,
                     No_Dependence                   => Ada.Asynchronous_Task_Control,
                   --  No_Dependence                   => Ada.Calendar,
                     No_Dependence                   => Ada.Execution_Time.Group_Budget,
                     No_Dependence                   => Ada.Execution_Time.Timers,
                     No_Dependence                   => Ada.Task_Attributes);

private package Nomo.Embedded.Interpreter is

   pragma Pure;

end Nomo.Embedded.Interpreter;
