with Ada.IO_Exceptions; use Ada.IO_Exceptions; with GNAT.Current_Exception; use GNAT.Current_Exception; with Unbounded_Strings; use Unbounded_Strings; with GNAT.Command_Line; use GNAT.Command_Line; with GNAT.OS_Lib; use GNAT.OS_Lib; with Text_IO; use Text_IO; with Version; use Version; with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with Systems; use Systems; with Task_Set; use Task_Set; with Processor_Set; use Processor_Set; with Address_Space_Set; use Address_Space_Set; with Resource_Set; use Resource_Set; with Buffer_Set; use Buffer_Set; with Call_Framework; use Call_Framework; with Tasks; use Tasks; with Debug; use Debug; use Task_Set.Generic_Task_Set; package body applicability_constraint.Period_Smaller_Than_Deadline_Constraint is function APPLY_QUERY1_Condition (t1 : Generic_Task_Ptr) return Boolean is begin return (t1.task_type = Periodic_Type); end APPLY_QUERY1_Condition; function APPLY_QUERY3_Condition (t3 : Generic_Task_Ptr) return Boolean is begin return (t3.task_type = Periodic_Type); end APPLY_QUERY3_Condition; function APPLY_QUERY2_Condition (t2 : Generic_Task_Ptr) return Boolean is ptr : Periodic_Task_Ptr; begin ptr := Periodic_Task_Ptr (t2); return (t2.task_type = Periodic_Type) and (ptr.period < ptr.deadline); end APPLY_QUERY2_Condition; function apply (Sys : System) return Boolean is begin Context := Sys; return (Task_Set.Get_Number_Of_Elements (Select_And_Copy (Context.Tasks, APPLY_QUERY1_Condition'Access)) < Tasks_Range (2)) or (Get_Number_Of_Elements (Select_And_Copy ((Select_And_Copy (Context.Tasks, APPLY_QUERY3_Condition'Access)), APPLY_QUERY2_Condition'Access)) > Tasks_Range (0)); end apply; end applicability_constraint.Period_Smaller_Than_Deadline_Constraint;