------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- 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 -- ------------------------------------------------------------------------------ -- Last update : -- $Rev: 1249 $ -- $Date: 2014-08-28 07:02:15 +0200 (Fri, 28 Aug 2014) $ -- $Author: singhoff $ ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ with Gtk; use Gtk; with Gtk.Menu_Item; use Gtk.Menu_Item; with Gtk.Main; use Gtk.Main; with Glib.Error; use Glib.Error; with Gtk.Widget; use Gtk.Widget; with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with GNAT.Command_Line; use GNAT.Command_Line; with GNAT.OS_Lib; use GNAT.OS_Lib; with unbounded_strings; use unbounded_strings; use unbounded_strings.unbounded_string_list_package; with editor_Config; use editor_Config; with Framework_Config; use Framework_Config; with Framework_Config.extended; use Framework_Config.extended; with framework; use framework; with Call_Framework; use Call_Framework; with Version; use Version; with Ada.Text_IO; use Ada.Text_IO; with Ada.IO_Exceptions; use Ada.IO_Exceptions; with GNAT.Current_Exception; use GNAT.Current_Exception; with Xml_generic_Parsers; use Xml_generic_Parsers; with Xml_generic_Parsers.architecture; use Xml_generic_Parsers.architecture; with AADL_Parsers; use AADL_Parsers; with Systems; use Systems; with Debug; use Debug; with Processors; use Processors; with cache_set; use cache_set; with cache_block_set; use cache_block_set; with cache_access_profile_set; use cache_access_profile_set; with task_group_set; use task_group_set; with message_set; use message_set; with network_set; use network_set; with event_analyzer_set; use event_analyzer_set; with systems; use systems; with deployment_set; use deployment_set; with CFG_Set; use CFG_Set; with CFG_Node_Set; use CFG_Node_Set; with CFG_Edge_Set; use CFG_Edge_Set; with Processor_Set; use Processor_Set; with Buffer_Set; use Buffer_Set; with Resource_Set; use Resource_Set; with Address_Space_Set; use Address_Space_Set; with Scheduler_Interface; use Scheduler_Interface; with Task_Set; use Task_Set; with Gtk.Text_Buffer; use Gtk.Text_Buffer; with Gtk.Text_Tag_Table; use Gtk.Text_Tag_Table; with graphical_editor.message_text; use graphical_editor.message_text; with Gtkada.Builder; use Gtkada.Builder; with graphical_editor.cheddar_callbacks; use graphical_editor.cheddar_callbacks; with graphical_editor; use graphical_editor; with graphical_editor.scheduling_simulation_callbacks; use graphical_editor.scheduling_simulation_callbacks; with graphical_editor.scheduling_simulation_draw_callbacks; use graphical_editor.scheduling_simulation_draw_callbacks; with graphical_editor.Draw_Scheduling; use graphical_editor.Draw_Scheduling; with graphical_editor.colors; use graphical_editor.colors; with initialize_framework; use initialize_framework; procedure cheddar is procedure Usage is begin Put_Line ("Cheddar is a free real-time scheduling analysis tool."); Put_Line( "This program provides services to automatically check temporal constraints of an architecture models composed of tasks/processors/cores/buffers/..." ); New_Line; Put_Line( "Check Cheddar home page for details : http://beru.univ-brest.fr/~singhoff/cheddar " ); New_Line; New_Line; Put_Line ("Usage : cheddar [switches] foo"); Put_Line (" where foo can be : "); Put_Line (" - an unique XML file "); Put_Line (" - one or several AADL files"); New_Line; Put_Line (" Switches can be :"); Put_Line (" -u get this help"); Put_Line( " -l select a language : ""fr"" for français; ""en"" for english ; default is english") ; Put (" Default language is "); if (Current_Language = English) then Put ("English."); else Put ("Français."); end if; New_Line; Put( " -a the file names given to cheddar contain AADL descriptions instead of an XML file" ); Put_Line( " Only one XML file can be provided to Cheddar but several AADL files can be sent to Cheddar." ); Put_Line( " -I directory-name : gives an extra directory name where to look for XML or AADL files. By default, Cheddar only looks for project files into the Cheddar's current directory." ); Put_Line (" -d activate Cheddar's debug mode "); Put_Line (" -i directory of glades files "); Put_Line (" -f font-name to select a new font to be used in the MMI"); Put_Line (" -c put the current Cheddar's configuration at the screen" ); end Usage; Builder : Gtkada_Builder; Error : Glib.Error.GError; Aadl_File : Boolean; A_Dir_Name : unbounded_string_ptr; Project_File_Name : unbounded_string_ptr; Project_File_List : unbounded_string_list; begin -------------------------------------------------------- -- Initialize Cheddar -- Manage command lines -- Load files AADL/XML files -- Manage exception raised during AADL/XML files loading -------------------------------------------------------- Copyright ("cheddar"); Aadl_File := False; initialize (Project_File_List); initialize_framework.Set_Initialize; Do_New; begin loop case Getopt ("c d u l: a i I: f:") is when ASCII.NUL => exit; when 'c' => Framework_Config.extended.Put; when 'a' => Aadl_File := True; when 'd' => Cheddar_Debug := Very_Verbose; when 'f' => Put_Debug ("Selected font : " & Parameter); selected_font := To_Unbounded_String (Parameter); when 'i' => Put_Debug ("Install path : " & Parameter); install_path := To_Unbounded_String (Parameter); when 'I' => A_Dir_Name := new Unbounded_String; A_Dir_Name.all := To_Unbounded_String (Parameter); Put_Debug ("Project file directory : " & To_String (A_Dir_Name.all)); add (Project_File_Dir_List, A_Dir_Name); when 'u' => Usage; OS_Exit (0); when 'l' => if (Parameter /= "fr") and (Parameter /= "en") then Put_Line ("cheddar.adb : invalid language parameter"); New_Line; Usage; OS_Exit (0); else if Parameter = "fr" then Current_Language := Francais; else Current_Language := English; end if; end if; when others => Usage; OS_Exit (0); end case; end loop; loop Project_File_Name := new Unbounded_String; Project_File_Name.all := To_Unbounded_String (Get_Argument (Do_Expansion => True)); exit when Project_File_Name.all = empty_string; Put_Debug ("Project file to load : " & To_String (Project_File_Name.all)); add (Project_File_List, Project_File_Name); end loop; if (get_number_of_elements (Project_File_List) > 1) and (not Aadl_File) then Put_Line ("cheddar.adb : can not load more than one XML file at the same time ") ; OS_Exit (0); end if; Call_Framework.initialize (Aadl_File); Glade_path := install_path & "glade_files/"; if (get_number_of_elements (Project_File_List) > 0) then Is_New := False; Is_Saved := True; if (Aadl_File) then duplicate (Project_File_List, Aadl_Project_File_Name); Systems.Read_From_Aadl_File (Sys, Project_File_Dir_List, Aadl_Project_File_Name); else Project_File_Name := get_head (Project_File_List); Xml_Project_File_Name := Project_File_Name.all; Systems.Read_From_Xml_File (Sys, Project_File_Dir_List, Xml_Project_File_Name); end if; end if; exception when cache_not_found => Put_Line ("cheddar.adb : cache not found ; " & Exception_Message); Os_Exit(0); when address_space_not_found => Put_Line ("cheddar.adb : address space not found ; " & Exception_Message); Os_Exit(0); when buffer_not_found => Put_Line ("cheddar.adb : buffer not found ; " & Exception_Message); Os_Exit(0); when deployment_not_found => Put_Line ("cheddar.adb : deployment not found ; " & Exception_Message); Os_Exit(0); when processor_not_found => Put_Line ("cheddar.adb : processor not found ; " & Exception_Message); Os_Exit(0); when network_not_found => Put_Line ("cheddar.adb : network not found ; " & Exception_Message); Os_Exit(0); when event_analyzer_not_found => Put_Line ("cheddar.adb : event analyzer not found ; " & Exception_Message); Os_Exit(0); when message_not_found => Put_Line ("cheddar.adb : message not found ; " & Exception_Message); Os_Exit(0); when core_unit_not_found => Put_Line ("cheddar.adb : core unit not found ; " & Exception_Message); Os_Exit(0); when task_not_found => Put_Line ("cheddar.adb : task not found ; " & Exception_Message); Os_Exit(0); when resource_not_found => Put_Line ("cheddar.adb : resource not found ; " & Exception_Message); Os_Exit(0); when task_group_not_found => Put_Line ("cheddar.adb : task group not found ; " & Exception_Message); Os_Exit(0); when CFG_Node_Not_Found => Put_Line ("cheddar.adb : cfg node not found ; " & Exception_Message); Os_Exit(0); when CFG_Edge_Not_Found => Put_Line ("cheddar.adb : cfg edge not found ; " & Exception_Message); Os_Exit(0); when CFG_Not_Found => Put_Line ("cheddar.adb : cfg not found ; " & Exception_Message); Os_Exit(0); when Cache_Access_Profile_Not_Found => Put_Line ("cheddar.adb : cache access profile not found ; " & Exception_Message); Os_Exit(0); when systemS.Invalid_Parameter => Put_Line ("cheddar.adb : invalid system attribute ; " & Exception_Message); Os_Exit(0); when cache_Set.Invalid_Parameter => Put_Line ("cheddar.adb : invalid cache attribute ; " & Exception_Message); Os_Exit(0); when task_group_Set.Invalid_Parameter => Put_Line ("cheddar.adb : invalid task_group attribute ; " & Exception_Message); Os_Exit(0); when network_Set.Invalid_Parameter => Put_Line ("cheddar.adb : invalid network attribute ; " & Exception_Message); Os_Exit(0); when message_Set.Invalid_Parameter => Put_Line ("cheddar.adb : invalid message attribute ; " & Exception_Message); Os_Exit(0); when deployment_Set.Invalid_Parameter => Put_Line ("cheddar.adb : invalid deployment attribute ; " & Exception_Message); Os_Exit(0); when event_analyzer_Set.Invalid_Parameter => Put_Line ("cheddar.adb : invalid event_analyzer attribute ; " & Exception_Message); Os_Exit(0); when CFG_Set.Invalid_Parameter => Put_Line ("cheddar.adb : invalid cfg attribute ; " & Exception_Message); Os_Exit(0); when CFG_Node_Set.Invalid_Parameter => Put_Line ("cheddar.adb : invalid cfg node attribute ; " & Exception_Message); Os_Exit(0); when CFG_Edge_Set.Invalid_Parameter => Put_Line ("cheddar.adb : invalid cfg edge attribute ; " & Exception_Message); Os_Exit(0); when Task_Set.Invalid_Parameter => if (Aadl_File = True) then Put_Line ("Invalid thread component attribute ; " & Exception_Message); else Put_Line ("cheddar.adb : invalid task attribute ; " & Exception_Message); end if; Os_Exit(0); when Address_Space_Set.Invalid_Parameter => if (Aadl_File = True) then Put_Line ("Invalid process component attribute ; " & Exception_Message); else Put_Line ("cheddar.adb : invalid address space attribute ; " & Exception_Message); end if; Os_Exit(0); when Processor_Set.Invalid_Parameter => if (Aadl_File = True) then Put_Line ("Invalid processor component attribute ; " & Exception_Message); else Put_Line ("cheddar.adb : invalid processor attribute ; " & Exception_Message); end if; Os_Exit(0); when Buffer_Set.Invalid_Parameter => if (Aadl_File = True) then Put_Line ("Invalid event data port attribute ; " & Exception_Message); else Put_Line ("cheddar.adb : invalid buffer attribute ; " & Exception_Message); end if; Os_Exit(0); when Resource_Set.Invalid_Parameter => if (Aadl_File = True) then Put_Line ("Invalid data component attribute ; " & Exception_Message); else Put_Line ("cheddar.adb : invalid resource attribute ; " & Exception_Message); end if; Os_Exit(0); when GNAT.Command_Line.Invalid_Switch => Put_Line ("cheddar.adb : invalid Switch ; " & Full_Switch); Usage; Os_Exit(0); when GNAT.Command_Line.Invalid_Parameter => Put_Line ("cheddar.adb : missing parameter for switch ; " & Full_Switch); Usage; Os_Exit(0); when Xml_Read_Error => Put_Line ("cheddar.adb : Can not read project file ; Xml Fatal Error ; " & Exception_Message); Os_Exit(0); when AADL_Read_Error => Put_Line ("cheddar.adb : Can not read project files ; AADL parsing Error ; " & Exception_Message); Os_Exit(0); when Ada.IO_Exceptions.Name_Error => Put_Line ("cheddar.adb : Can not open project files, Name_Error"); Os_Exit(0); when Ada.IO_Exceptions.Status_Error => Put_Line ("cheddar.adb : Can not open project files, Status_Error"); Os_Exit(0); when Ada.IO_Exceptions.Mode_Error => Put_Line ("cheddar.adb : Can not open project files, Mode_Error"); Os_Exit(0); when Ada.IO_Exceptions.Use_Error => Put_Line ("cheddar.adb : Can not open project files, Use_Error"); Os_Exit(0); when Ada.IO_Exceptions.Device_Error => Put_Line ("cheddar.adb : Can not open project files, Device_Error"); Os_Exit(0); when Ada.IO_Exceptions.End_Error => Put_Line ("cheddar.adb : Can not open project files, End_Error"); Os_Exit(0); when Ada.IO_Exceptions.Data_Error => Put_Line ("cheddar.adb : Can not open project files, Data_Error"); Os_Exit(0); when Ada.IO_Exceptions.Layout_Error => Put_Line ("cheddar.adb : Can not open project files, Layout_Error"); Os_Exit(0); when others => Put_Line ("cheddar.adb : Can not load XML/AADL/SC file "); Put_Line ("Exception name : " & Exception_Name); Put_Line ("Exception message : " & Exception_Message); Os_Exit(0); end; -------------------------------------------------------- -- Initialize Machine man interface -- Manage exception raises during machine man interface use -------------------------------------------------------- Gtk.Main.Init; Gtk_New (Builder); Error := Add_From_File (Builder, To_String (Glade_path) & "cheddar.glade"); if Error /= null then Ada.Text_IO.Put_Line ("Error : " & Get_Message (Error)); Error_Free (Error); return; end if; build_color_array; buffer_editor_cheddar := Gtk_Text_Buffer (Get_Object (Builder, "textbuffer2")); my_area := Get_Widget (Builder, "drawingarea1"); initialize_message_text_properties; Register_Handler (Builder => Builder, Handler_Name => "on_menuitem14_activate", Handler => graphical_editor.cheddar_callbacks.cache'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem48_activate", Handler => graphical_editor.cheddar_callbacks.run_analysis_on_event_table'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem68_activate", Handler => graphical_editor.cheddar_callbacks.end_to_end_display_one_step'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem63_activate", Handler => graphical_editor.cheddar_callbacks.check_address_space'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem64_activate", Handler => graphical_editor.cheddar_callbacks.check_address_space_update'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem69_activate", Handler => graphical_editor.cheddar_callbacks.end_to_end_update_one_step'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem70_activate", Handler => graphical_editor.cheddar_callbacks.end_to_end_display_all_steps'Access) ; Register_Handler (Builder => Builder, Handler_Name => "on_menuitem71_activate", Handler => graphical_editor.cheddar_callbacks.end_to_end_update_all_steps'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem72_activate", Handler => graphical_editor.cheddar_callbacks.deadline_display_chetto'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem73_activate", Handler => graphical_editor.cheddar_callbacks.deadline_update_chetto'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem74_activate", Handler => graphical_editor.cheddar_callbacks.priorities_display_chetto'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem75_activate", Handler => graphical_editor.cheddar_callbacks.priorities_update_chetto'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem11_activate", Handler => graphical_editor.cheddar_callbacks.deployment'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem79_activate", Handler => graphical_editor.cheddar_callbacks.resource_priority_inversion'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem80_activate", Handler => graphical_editor.cheddar_callbacks.resource_deadlock'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem93_activate", Handler => graphical_editor.cheddar_callbacks.ceiling_priority_display'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem94_activate", Handler => graphical_editor.cheddar_callbacks.ceiling_priority_update'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem81_activate", Handler => graphical_editor.cheddar_callbacks.bound_blocking_display'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem82_activate", Handler => graphical_editor.cheddar_callbacks.bound_blocking_update'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem24_activate", Handler => graphical_editor.cheddar_callbacks.event_analyzer'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem40_activate", Handler => graphical_editor.cheddar_callbacks.scheduling_simulation'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem41_activate", Handler => graphical_editor.cheddar_callbacks.scheduling_feasibility_widget' Access); Register_Handler (Builder => Builder, Handler_Name => "on_toolbutton11_clicked", Handler => graphical_editor.scheduling_simulation_callbacks. Show_Scheduling_Simulation_duration_widget'Access); Register_Handler (Builder => Builder, Handler_Name => "on_toolbutton10_clicked", Handler => graphical_editor.cheddar_callbacks.scheduling_feasibility'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem15_activate", Handler => graphical_editor.cheddar_callbacks.core'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem21_activate", Handler => graphical_editor.cheddar_callbacks.buffer'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem16_activate", Handler => graphical_editor.cheddar_callbacks.processor'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem17_activate", Handler => graphical_editor.cheddar_callbacks.network'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem18_activate", Handler => graphical_editor.cheddar_callbacks.address_space'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem19_activate", Handler => graphical_editor.cheddar_callbacks.taskc'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem10_activate", Handler => graphical_editor.cheddar_callbacks.task_group'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem23_activate", Handler => graphical_editor.cheddar_callbacks.message'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem91_activate", Handler => graphical_editor.cheddar_callbacks.precedence_dependency'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem92_activate", Handler => graphical_editor.cheddar_callbacks.time_triggered_dependency'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem95_activate", Handler => graphical_editor.cheddar_callbacks.queueing_buffer_dependency'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem96_activate", Handler => graphical_editor.cheddar_callbacks.black_board_buffer_dependency'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem97_activate", Handler => graphical_editor.cheddar_callbacks.asynchronous_communication_dependency'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem98_activate", Handler => graphical_editor.cheddar_callbacks.resource_dependency'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem27_activate", Handler => graphical_editor.cheddar_callbacks.clear_workspace'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem20_activate", Handler => graphical_editor.cheddar_callbacks.resource'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem30_activate", Handler => graphical_editor.cheddar_callbacks.open_xml'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem50_activate", Handler => graphical_editor.cheddar_callbacks.import_event_table'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem34_activate", Handler => graphical_editor.cheddar_callbacks.import_aadl'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem35_activate", Handler => graphical_editor.cheddar_callbacks.export_aadl'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem38_activate", Handler => graphical_editor.cheddar_callbacks.aadl_option'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem6_activate", Handler => graphical_editor.cheddar_callbacks.set_priorities_audsley_opa'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem7_activate", Handler => graphical_editor.cheddar_callbacks.set_priorities_opa_crpd_pt'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem88_activate", Handler => graphical_editor.cheddar_callbacks.set_priorities_opa_crpd_pt_simplified'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem87_activate", Handler => graphical_editor.cheddar_callbacks.set_priorities_opa_crpd_tree'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem42_activate", Handler => graphical_editor.cheddar_callbacks.set_priorities_rm'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem43_activate", Handler => graphical_editor.cheddar_callbacks.set_priorities_dm'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem56_activate", Handler => graphical_editor.cheddar_callbacks.scheduling_option'Access); Register_Handler (Builder => Builder, Handler_Name => "on_toolbutton2_clicked", Handler => graphical_editor.cheddar_callbacks.open_xml'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem31_activate", Handler => graphical_editor.cheddar_callbacks.save_xml'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem25_activate", Handler => graphical_editor.cheddar_callbacks.export_arinc653_tsp'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem49_activate", Handler => graphical_editor.cheddar_callbacks.export_event_table'Access); Register_Handler (Builder => Builder, Handler_Name => "on_toolbutton5_clicked", Handler => graphical_editor.cheddar_callbacks.save_xml'Access); Register_Handler (Builder => Builder, Handler_Name => "on_toolbutton8_clicked", Handler => graphical_editor.cheddar_callbacks.clear_workspace'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem36_activate", Handler => graphical_editor.cheddar_callbacks.export_cheddar_properties_set' Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem37_activate", Handler => graphical_editor.cheddar_callbacks.export_aadl_standard_properties_set' Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem32_activate", Handler => graphical_editor.cheddar_callbacks.save_as_xml'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem62_activate", Handler => graphical_editor.cheddar_callbacks.compute_response_time_density' Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem51_activate", Handler => graphical_editor.cheddar_callbacks.scheduling_partition_best_fit' Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem53_activate", Handler => graphical_editor.cheddar_callbacks.scheduling_partition_next_fit' Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem54_activate", Handler => graphical_editor.cheddar_callbacks.scheduling_partition_first_fit' Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem55_activate", Handler => graphical_editor.cheddar_callbacks.scheduling_partition_small_task' Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem52_activate", Handler => graphical_editor.cheddar_callbacks.scheduling_partition_general'Access) ; Register_Handler (Builder => Builder, Handler_Name => "on_toolbutton6_clicked", Handler => graphical_editor.cheddar_callbacks.save_as_xml'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem29_activate", Handler => graphical_editor.cheddar_callbacks.initialyse_system'Access); Register_Handler (Builder => Builder, Handler_Name => "on_toolbutton4_clicked", Handler => graphical_editor.cheddar_callbacks.initialyse_system'Access); Register_Handler (Builder => Builder, Handler_Name => "on_window1_destroy", Handler => graphical_editor.cheddar_callbacks.Quit'Access); Register_Handler (Builder => Builder, Handler_Name => "on_imagemenuitem11_activate", Handler => graphical_editor.cheddar_callbacks.about'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem76_activate", Handler => graphical_editor.cheddar_callbacks.analysis_buffer_feasibility'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem77_activate", Handler => graphical_editor.cheddar_callbacks.analysis_buffer_simulation'Access); Register_Handler (Builder => Builder, Handler_Name => "on_Manual_activate", Handler => graphical_editor.cheddar_callbacks.manual'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem9_activate", Handler => graphical_editor.cheddar_callbacks.scheduling_ref'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem39_activate", Handler => graphical_editor.cheddar_callbacks.new_Quit_proc'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem47_activate", Handler => graphical_editor.cheddar_callbacks.draw_time_line_from_event_table' Access); Register_Handler (Builder => Builder, Handler_Name => "on_toolbutton3_clicked", Handler => graphical_editor.cheddar_callbacks.new_Quit_proc'Access); Register_Handler (Builder => Builder, Handler_Name => "gtk_main_quit", Handler => graphical_editor.cheddar_callbacks.new_quit'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem46_activate", Handler => graphical_editor.cheddar_callbacks.tindell_transaction_wcrt'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem84_activate", Handler => graphical_editor.cheddar_callbacks.audsley_transaction_wcrt'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem85_activate", Handler => graphical_editor.cheddar_callbacks.palencia_transaction_wcrt'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem86_activate", Handler => graphical_editor.cheddar_callbacks.wcdops_plus_transaction_wcrt'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem83_activate", Handler => graphical_editor.cheddar_callbacks.wcdops_plus_nim_transaction_wcrt'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem90_activate", Handler => graphical_editor.cheddar_callbacks.compute_task_cache_access_profile'Access); Register_Handler (Builder => Builder, Handler_Name => "on_menuitem99_activate", Handler => graphical_editor.cheddar_callbacks.design_pattern_analysis'Access); Do_Connect (Builder); Gtk.Widget.Show_All (Get_Widget (Builder, "window1")); Gtk.Main.Main; exception when others => Put_Line ("This is an internal Cheddar bug ... sorry"); Put_Line( "WARNING : your project was saved in the file cheddar_bug.xml"); Put_Line ("Exception name : " & Exception_Name); Put_Line ("Exception message : " & Exception_Message); Systems.Write_To_Xml_File (Sys, To_Unbounded_String ("cheddar_bug.xml")); Put_Line ("Please, send a bug report to cheddar@listes.univ-brest.fr"); Put_Line( "Do not forget to join your AADL/XML/SC Cheddar project files with your bug report" ); end cheddar;