------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- This source file was automatically generated by Platypus -- see http://dossen.univ-brest.fr/apl -- -- Any modification of this file will be lost. -- Please see the "platypus" directory instead : it contains the Cheddar's -- model and its meta-model. ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- 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-2016 Frank Singhoff, Alain Plantec, Jerome Legrand -- -- The Cheddar project was started in 2002 by -- Frank Singhoff, Lab-STICC UMR 6285 laboratory, 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 -- To post to this mailing list, you must be subscribed -- (see http//beru.univ-brest.fr/~singhoff/cheddar for details) -- ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with Framework_Config; use Framework_Config; with id_generators; use id_generators; with Objects; use Objects; with Statements; use Statements; with Expressions; use Expressions; with standards_io; use standards_io; use standards_io.natural_io; use standards_io.boolean_io; with Ada.Finalization; with unbounded_strings; use unbounded_strings; use unbounded_strings.Unbounded_String_List_Package; with Unchecked_Deallocation; with Primitive_XML_Strings; use Primitive_XML_Strings; with Lists; with ada.strings.unbounded.text_io; use ada.strings.unbounded.text_io; with Convert_Strings; with Convert_Unbounded_Strings; with text_io; use text_io; with Indexed_Tables; Package Automaton is type State; type State_Ptr is access all State'Class; type Synchronization; type Synchronization_Ptr is access all Synchronization'Class; type Transition; type Transition_Ptr is access all Transition'Class; type Automaton_Status; type Automaton_Status_Ptr is access all Automaton_Status; type Transition_Status; type Transition_Status_Ptr is access all Transition_Status; type Synchronizations_Type is ( Send, Receive); procedure To_Synchronizations_Type is new Convert_Strings(Synchronizations_Type, Send); procedure To_Synchronizations_Type is new Convert_Unbounded_Strings(Synchronizations_Type, Send); function XML_String (obj : in Synchronizations_Type) return Unbounded_String; function XML_Ref_String (obj : in Synchronizations_Type) return Unbounded_String; package Synchronizations_Type_io is new text_io.enumeration_io(Synchronizations_Type); use Synchronizations_Type_io; type Status_Type is ( Ready, Pended, Rendezvous, Guarded, Unreachable); procedure To_Status_Type is new Convert_Strings(Status_Type, Ready); procedure To_Status_Type is new Convert_Unbounded_Strings(Status_Type, Ready); function XML_String (obj : in Status_Type) return Unbounded_String; function XML_Ref_String (obj : in Status_Type) return Unbounded_String; package Status_Type_io is new text_io.enumeration_io(Status_Type); use Status_Type_io; -- --------= State =-------- type State is new Named_Object with record is_initial : Boolean; end record; procedure Initialize(obj : in out State); procedure Put(obj : in State); procedure Put(obj : in State_Ptr); procedure Put_Name(obj : in State_Ptr); procedure Build_Attributes_XML_String(obj : in State; result : in out Unbounded_String); function XML_String(obj : in State) return Unbounded_String; function XML_String(obj : in State_Ptr) return Unbounded_String; function XML_Ref_String(obj : in State) return Unbounded_String; function XML_Ref_String(obj : in State_Ptr) return Unbounded_String; function Get_Name (obj : in State) return Unbounded_String; function Get_Name (obj : in State_Ptr) return Unbounded_String; function Copy(obj : in State_Ptr) return State_Ptr; function Copy(obj : in State) return State_Ptr; function type_of(obj : in State) return unbounded_string_list; function type_of(obj : in State_Ptr) return unbounded_string_list; procedure Free is new Unchecked_Deallocation (State'Class, State_Ptr); package State_Lists_Package is new Lists(State_Ptr, Put, Free, XML_String); use State_Lists_Package; subtype State_Lists is State_Lists_Package.list; subtype State_Lists_Ptr is State_Lists_Package.list_Ptr; subtype State_Lists_Iterator is State_Lists_Package.iterator; subtype State_Lists_Iterator_Ptr is State_Lists_Package.iterator_Ptr; -- --------= Synchronization =-------- type Synchronization is new Named_Object with record synchronization_type : Synchronizations_Type; end record; procedure Initialize(obj : in out Synchronization); procedure Put(obj : in Synchronization); procedure Put(obj : in Synchronization_Ptr); procedure Put_Name(obj : in Synchronization_Ptr); procedure Build_Attributes_XML_String(obj : in Synchronization; result : in out Unbounded_String); function XML_String(obj : in Synchronization) return Unbounded_String; function XML_String(obj : in Synchronization_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Synchronization) return Unbounded_String; function XML_Ref_String(obj : in Synchronization_Ptr) return Unbounded_String; function Get_Name (obj : in Synchronization) return Unbounded_String; function Get_Name (obj : in Synchronization_Ptr) return Unbounded_String; function Copy(obj : in Synchronization_Ptr) return Synchronization_Ptr; function Copy(obj : in Synchronization) return Synchronization_Ptr; function type_of(obj : in Synchronization) return unbounded_string_list; function type_of(obj : in Synchronization_Ptr) return unbounded_string_list; procedure Free is new Unchecked_Deallocation (Synchronization'Class, Synchronization_Ptr); -- --------= Transition =-------- type Transition is new Named_Object with record from_state : State_Ptr; to_state : State_Ptr; guards : Generic_Expression_Ptr; clocks : Generic_Statement_Ptr; synchronization : Synchronization_Ptr; end record; procedure Initialize(obj : in out Transition); procedure Put(obj : in Transition); procedure Put(obj : in Transition_Ptr); procedure Put_Name(obj : in Transition_Ptr); procedure Build_Attributes_XML_String(obj : in Transition; result : in out Unbounded_String); function XML_String(obj : in Transition) return Unbounded_String; function XML_String(obj : in Transition_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Transition) return Unbounded_String; function XML_Ref_String(obj : in Transition_Ptr) return Unbounded_String; function Get_Name (obj : in Transition) return Unbounded_String; function Get_Name (obj : in Transition_Ptr) return Unbounded_String; function Copy(obj : in Transition_Ptr) return Transition_Ptr; function Copy(obj : in Transition) return Transition_Ptr; function type_of(obj : in Transition) return unbounded_string_list; function type_of(obj : in Transition_Ptr) return unbounded_string_list; procedure Free is new Unchecked_Deallocation (Transition'Class, Transition_Ptr); package Transition_Lists_Package is new Lists(Transition_Ptr, Put, Free, XML_String); use Transition_Lists_Package; subtype Transition_Lists is Transition_Lists_Package.list; subtype Transition_Lists_Ptr is Transition_Lists_Package.list_Ptr; subtype Transition_Lists_Iterator is Transition_Lists_Package.iterator; subtype Transition_Lists_Iterator_Ptr is Transition_Lists_Package.iterator_Ptr; -- --------= Automaton_Status =-------- type Automaton_Status is record current_state : State_Ptr; end record; procedure Initialize(obj : out Automaton_Status); procedure Put(obj : in Automaton_Status); procedure Put(obj : in Automaton_Status_Ptr); function Copy(obj : in Automaton_Status_Ptr) return Automaton_Status_Ptr; function Copy(obj : in Automaton_Status) return Automaton_Status_Ptr; procedure Build_Attributes_XML_String(obj : in Automaton_Status; result : in out Unbounded_String); function XML_String(obj : in Automaton_Status) return Unbounded_String; function XML_String(obj : in Automaton_Status_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Automaton_Status) return Unbounded_String; procedure Free is new Unchecked_Deallocation (Automaton_Status, Automaton_Status_Ptr); package Package_Automaton_Status is new Indexed_Tables(Automaton_Status, Unbounded_String, Framework_Config.Max_Sections, 0, Put, Initialize, Put, Convert, XML_String, XML_Ref_String); use Package_Automaton_Status; subtype Automaton_Status_Table is Package_Automaton_Status.indexed_table; subtype Automaton_Status_Table_Ptr is Package_Automaton_Status.indexed_table_Ptr; subtype Automaton_Status_Range is Package_Automaton_Status.indexed_table_range; subtype Automaton_Status_Range_Ptr is Package_Automaton_Status.indexed_table_range_Ptr; -- --------= Transition_Status =-------- type Transition_Status is record code : Transition_Ptr; status : Status_Type; wakeup_time : Natural; end record; procedure Initialize(obj : out Transition_Status); procedure Put(obj : in Transition_Status); procedure Put(obj : in Transition_Status_Ptr); function Copy(obj : in Transition_Status_Ptr) return Transition_Status_Ptr; function Copy(obj : in Transition_Status) return Transition_Status_Ptr; procedure Build_Attributes_XML_String(obj : in Transition_Status; result : in out Unbounded_String); function XML_String(obj : in Transition_Status) return Unbounded_String; function XML_String(obj : in Transition_Status_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Transition_Status) return Unbounded_String; procedure Free is new Unchecked_Deallocation (Transition_Status, Transition_Status_Ptr); package Package_Transition_Status is new Indexed_Tables(Transition_Status, Unbounded_String, Framework_Config.Max_Transitions, 0, Put, Initialize, Put, Convert, XML_String, XML_Ref_String); use Package_Transition_Status; subtype Transition_Status_Table is Package_Transition_Status.indexed_table; subtype Transition_Status_Table_Ptr is Package_Transition_Status.indexed_table_Ptr; subtype Transition_Status_Range is Package_Transition_Status.indexed_table_range; subtype Transition_Status_Range_Ptr is Package_Transition_Status.indexed_table_range_Ptr; End Automaton;