------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- Cheddar is a GNU GPL real-time scheduling analysis tool. -- This program provides services to automatically check schedulability and -- other performance criteria of real-time architecture models. -- -- Copyright (C) 2002-2020, Frank Singhoff, Alain Plantec, Jerome Legrand, -- Hai Nam Tran, Stephane Rubini -- -- The Cheddar project was started in 2002 by -- Frank Singhoff, Lab-STICC UMR 6285, Université de Bretagne Occidentale -- -- Cheddar has been published in the "Agence de Protection des Programmes/France" in 2008. -- Since 2008, Ellidiss technologies also contributes to the development of -- Cheddar and provides industrial support. -- -- The full list of contributors and sponsors can be found in AUTHORS.txt and SPONSORS.txt -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 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 General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -- -- -- Contact : cheddar@listes.univ-brest.fr -- ------------------------------------------------------------------------------ -- Last update : -- $Rev$ -- $Date$ -- $Author: singhoff $ ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with Generic_Graph; use Generic_Graph; with Generic_Graph.extended; use Generic_Graph.extended; with DP_Graph; use DP_Graph; with DP_Graph.extended; use DP_Graph.extended; with Tasks; use Tasks; with Buffers; use Buffers; with Messages; use Messages; with Dependencies; use Dependencies; with Resources; use Resources; with Systems; use Systems; with Processors; use Processors; with Convert_Strings; with Convert_Unbounded_Strings; with Lists; with Text_IO; use Text_IO; with Ada.Finalization; with Unbounded_Strings; use Unbounded_Strings; use Unbounded_Strings.Unbounded_String_List_Package; with Unchecked_Deallocation; package DP_Graph_view is Undetected_Graph_Construction_Error_Exception : exception; Unrecognized_design_pattern : exception; --Design patterns enumeration -- type design_pattern is (Time_Triggered_Communication, ravenscar, unplugged); --Graph list -- package Graph_List_Package is new Lists ( Graph_Ptr, Put, Free, XML_String); use Graph_List_Package; subtype Graph_List is Graph_List_Package.List; subtype Graph_List_Iterator is Graph_List_Package.Iterator; --Views based on Dependency types -- function Time_Triggered_Communication_View (obj : in Graph) return Graph; function Communication_View (obj : in Graph) return Graph; function Resource_View (obj : in Graph) return Graph; --View of Graph connex components -- function Connexity_View (obj : in Graph) return Graph_List; --View based on processors's names -- function Processor_View (obj : in Graph) return Graph_List; function Processor_View (obj : in Graph; processor_name : in Unbounded_String) return Graph; --Sub-System from Original system and a view -- function Get_Subsystem_From_Graph (obj : in Graph; original : in System) return System; --Annex functionnalities -- procedure get_task_node_by_task_name (obj : in Graph_Ptr; task_name : in Unbounded_String; succeed : out Boolean; res : out Task_Node_Ptr); procedure get_task_node_by_task_name (obj : in Graph; task_name : in Unbounded_String; succeed : out Boolean; res : out Task_Node_Ptr); function task_node_in_graph (obj : in Graph; task_name : in Unbounded_String) return Boolean; function dependency_edge_in_graph (obj : in Graph; edge_name : in Unbounded_String) return Boolean; --Binary Operators -- function graph_minus (graph_a : in Graph; graph_b : in Graph) return Graph; function graph_union (graph_a : in Graph; graph_b : in Graph) return Graph; function graph_union (graph_a : in Graph_Ptr; graph_b : in Graph_Ptr) return Graph_Ptr; --Composition Analysis -- function potential_design_pattern (g : in Graph) return design_pattern; function compose (g_list : in Graph_List) return design_pattern; function compose_aux (dp : in design_pattern; g : in Graph_Ptr) return design_pattern; end DP_Graph_view;