aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8.3/gcc/ada/g-excact.ads
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8.3/gcc/ada/g-excact.ads')
-rw-r--r--gcc-4.8.3/gcc/ada/g-excact.ads118
1 files changed, 118 insertions, 0 deletions
diff --git a/gcc-4.8.3/gcc/ada/g-excact.ads b/gcc-4.8.3/gcc/ada/g-excact.ads
new file mode 100644
index 000000000..6111bc7fd
--- /dev/null
+++ b/gcc-4.8.3/gcc/ada/g-excact.ads
@@ -0,0 +1,118 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT COMPILER COMPONENTS --
+-- --
+-- G N A T . E X C E P T I O N _ A C T I O N S --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2002-2012, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package provides support for callbacks on exceptions
+
+-- These callbacks are called immediately when either a specific exception,
+-- or any exception, is raised, before any other actions taken by raise, in
+-- particular before any unwinding of the stack occurs.
+
+-- Callbacks for specific exceptions are registered through calls to
+-- Register_Id_Action. Here is an example of code that uses this package to
+-- automatically core dump when the exception Constraint_Error is raised.
+
+-- Register_Id_Action (Constraint_Error'Identity, Core_Dump'Access);
+
+-- Subprograms are also provided to list the currently registered exceptions,
+-- or to convert from a string to an exception id.
+
+-- This package can easily be extended, for instance to provide a callback
+-- whenever an exception matching a regular expression is raised. The idea
+-- is to register a global action, called whenever any exception is raised.
+-- Dispatching can then be done directly in this global action callback.
+
+with Ada.Exceptions; use Ada.Exceptions;
+
+package GNAT.Exception_Actions is
+
+ type Exception_Action is access
+ procedure (Occurrence : Exception_Occurrence);
+ -- General callback type whenever an exception is raised. The callback
+ -- procedure must not propagate an exception (execution of the program
+ -- is erroneous if such an exception is propagated).
+
+ procedure Register_Global_Action (Action : Exception_Action);
+ -- Action will be called whenever an exception is raised. Only one such
+ -- action can be registered at any given time, and registering a new action
+ -- will override any previous action that might have been registered.
+ --
+ -- Action is called before the exception is propagated to user's code.
+ -- If Action is null, this will in effect cancel all exception actions.
+
+ procedure Register_Id_Action
+ (Id : Exception_Id;
+ Action : Exception_Action);
+ -- Action will be called whenever an exception of type Id is raised. Only
+ -- one such action can be registered for each exception id, and registering
+ -- a new action will override any previous action registered for this
+ -- Exception_Id. Program_Error is raised if Id is Null_Id.
+
+ function Name_To_Id (Name : String) return Exception_Id;
+ -- Convert an exception name to an exception id. Null_Id is returned
+ -- if no such exception exists. Name must be an all upper-case string,
+ -- or the exception will not be found. The exception name must be fully
+ -- qualified (but not including Standard). It is not possible to convert
+ -- an exception that is declared within an unlabeled block.
+ --
+ -- Note: All non-predefined exceptions will return Null_Id for programs
+ -- compiled with pragma Restriction (No_Exception_Registration)
+
+ function Registered_Exceptions_Count return Natural;
+ -- Return the number of exceptions that have been registered so far.
+ -- Exceptions declared locally will not appear in this list until their
+ -- block has been executed at least once.
+ --
+ -- Note: The count includes only predefined exceptions for programs
+ -- compiled with pragma Restrictions (No_Exception_Registration).
+
+ type Exception_Id_Array is array (Natural range <>) of Exception_Id;
+
+ procedure Get_Registered_Exceptions
+ (List : out Exception_Id_Array;
+ Last : out Integer);
+ -- Return the list of registered exceptions.
+ -- Last is the index in List of the last exception returned.
+ --
+ -- An exception is registered the first time the block containing its
+ -- declaration is elaborated. Exceptions defined at library-level are
+ -- therefore immediately visible, whereas exceptions declared in local
+ -- blocks will not be visible until the block is executed at least once.
+ --
+ -- Note: The list contains only the predefined exceptions if the program
+ -- is compiled with pragma Restrictions (No_Exception_Registration);
+
+ procedure Core_Dump (Occurrence : Exception_Occurrence);
+ -- Dump memory (called a core dump in some systems) if supported by the
+ -- OS (most unix systems and VMS), and abort execution of the application.
+ -- Under Windows this procedure will not dump the memory, it will only
+ -- abort execution.
+
+end GNAT.Exception_Actions;