1------------------------------------------------------------------------------ 2-- -- 3-- GNAT COMPILER COMPONENTS -- 4-- -- 5-- S Y S T E M . E X C E P T I O N _ T A B L E -- 6-- -- 7-- S p e c -- 8-- -- 9-- Copyright (C) 1996-2018, Free Software Foundation, Inc. -- 10-- -- 11-- GNAT is free software; you can redistribute it and/or modify it under -- 12-- terms of the GNU General Public License as published by the Free Soft- -- 13-- ware Foundation; either version 3, or (at your option) any later ver- -- 14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 16-- or FITNESS FOR A PARTICULAR PURPOSE. -- 17-- -- 18-- As a special exception under Section 7 of GPL version 3, you are granted -- 19-- additional permissions described in the GCC Runtime Library Exception, -- 20-- version 3.1, as published by the Free Software Foundation. -- 21-- -- 22-- You should have received a copy of the GNU General Public License and -- 23-- a copy of the GCC Runtime Library Exception along with this program; -- 24-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- 25-- <http://www.gnu.org/licenses/>. -- 26-- -- 27-- GNAT was originally developed by the GNAT team at New York University. -- 28-- Extensive contributions were provided by Ada Core Technologies Inc. -- 29-- -- 30------------------------------------------------------------------------------ 31 32-- This package implements the interface used to maintain a table of 33-- registered exception names, for the implementation of the mapping 34-- of names to exceptions (used for exception streams and attributes) 35 36pragma Compiler_Unit_Warning; 37 38with System.Standard_Library; 39 40package System.Exception_Table is 41 pragma Elaborate_Body; 42 43 package SSL renames System.Standard_Library; 44 45 procedure Register_Exception (X : SSL.Exception_Data_Ptr); 46 pragma Inline (Register_Exception); 47 -- Register an exception in the hash table mapping. This function is 48 -- called during elaboration of library packages. For exceptions that 49 -- are declared within subprograms, the registration occurs the first 50 -- time that an exception is elaborated during a call of the subprogram. 51 -- 52 -- Note: all calls to Register_Exception other than those to register the 53 -- predefined exceptions are suppressed if the application is compiled 54 -- with pragma Restrictions (No_Exception_Registration). 55 56 function Internal_Exception 57 (X : String; 58 Create_If_Not_Exist : Boolean := True) return SSL.Exception_Data_Ptr; 59 -- Given an exception_name X, returns a pointer to the actual internal 60 -- exception data. A new entry is created in the table if X does not 61 -- exist yet and Create_If_Not_Exist is True. If it is false and X 62 -- does not exist yet, null is returned. 63 64 function Registered_Exceptions_Count return Natural; 65 -- Return the number of currently registered exceptions 66 67 type Exception_Data_Array is array (Natural range <>) 68 of SSL.Exception_Data_Ptr; 69 70 procedure Get_Registered_Exceptions 71 (List : out Exception_Data_Array; 72 Last : out Integer); 73 -- Return the list of registered exceptions 74 75end System.Exception_Table; 76