| /* |
| libparted - a library for manipulating disk partitions |
| Copyright (C) 1999, 2000 Free Software Foundation, Inc. |
| |
| 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| /** |
| * \addtogroup PedException |
| * @{ |
| */ |
| |
| /** \file exception.h */ |
| |
| #ifndef PED_EXCEPTION_H_INCLUDED |
| #define PED_EXCEPTION_H_INCLUDED |
| |
| typedef struct _PedException PedException; |
| |
| /** |
| * Exception type |
| */ |
| enum _PedExceptionType { |
| PED_EXCEPTION_INFORMATION=1, |
| PED_EXCEPTION_WARNING=2, |
| PED_EXCEPTION_ERROR=3, |
| PED_EXCEPTION_FATAL=4, |
| PED_EXCEPTION_BUG=5, |
| PED_EXCEPTION_NO_FEATURE=6, |
| }; |
| typedef enum _PedExceptionType PedExceptionType; |
| |
| /** |
| * Option for resolving the exception |
| */ |
| enum _PedExceptionOption { |
| PED_EXCEPTION_UNHANDLED=0, |
| PED_EXCEPTION_FIX=1, |
| PED_EXCEPTION_YES=2, |
| PED_EXCEPTION_NO=4, |
| PED_EXCEPTION_OK=8, |
| PED_EXCEPTION_RETRY=16, |
| PED_EXCEPTION_IGNORE=32, |
| PED_EXCEPTION_CANCEL=64, |
| }; |
| typedef enum _PedExceptionOption PedExceptionOption; |
| #define PED_EXCEPTION_OK_CANCEL (PED_EXCEPTION_OK + PED_EXCEPTION_CANCEL) |
| #define PED_EXCEPTION_YES_NO (PED_EXCEPTION_YES + PED_EXCEPTION_NO) |
| #define PED_EXCEPTION_YES_NO_CANCEL (PED_EXCEPTION_YES_NO \ |
| + PED_EXCEPTION_CANCEL) |
| #define PED_EXCEPTION_IGNORE_CANCEL (PED_EXCEPTION_IGNORE \ |
| + PED_EXCEPTION_CANCEL) |
| #define PED_EXCEPTION_RETRY_CANCEL (PED_EXCEPTION_RETRY + PED_EXCEPTION_CANCEL) |
| #define PED_EXCEPTION_RETRY_IGNORE_CANCEL (PED_EXCEPTION_RETRY \ |
| + PED_EXCEPTION_IGNORE_CANCEL) |
| #define PED_EXCEPTION_OPTION_FIRST PED_EXCEPTION_FIX |
| #define PED_EXCEPTION_OPTION_LAST PED_EXCEPTION_CANCEL |
| |
| /** |
| * Structure with information about exception |
| */ |
| struct _PedException { |
| char* message; /**< text describing what the event was */ |
| PedExceptionType type; /**< type of exception */ |
| PedExceptionOption options; /**< ORed list of options that |
| the exception handler can |
| return (the ways an exception |
| can be resolved) */ |
| }; |
| |
| typedef PedExceptionOption (PedExceptionHandler) (PedException* ex); |
| |
| extern int ped_exception; /* set to true if there's an exception */ |
| |
| extern char* ped_exception_get_type_string (PedExceptionType ex_type); |
| extern char* ped_exception_get_option_string (PedExceptionOption ex_opt); |
| |
| extern void ped_exception_set_handler (PedExceptionHandler* handler); |
| extern PedExceptionHandler *ped_exception_get_handler(void); |
| |
| extern PedExceptionOption ped_exception_default_handler (PedException* ex); |
| |
| extern PedExceptionOption ped_exception_throw (PedExceptionType ex_type, |
| PedExceptionOption ex_opt, |
| const char* message, |
| ...); |
| /* rethrows an exception - i.e. calls the exception handler, (or returns a |
| code to return to pass up higher) */ |
| extern PedExceptionOption ped_exception_rethrow (); |
| |
| /* frees an exception, indicating that the exception has been handled. |
| Calling an exception handler counts. */ |
| extern void ped_exception_catch (); |
| |
| /* indicate that exceptions should not go to the exception handler, but passed |
| up to the calling function(s) */ |
| extern void ped_exception_fetch_all (); |
| |
| /* indicate that exceptions should invoke the exception handler */ |
| extern void ped_exception_leave_all (); |
| |
| #endif /* PED_EXCEPTION_H_INCLUDED */ |
| |
| /** @} */ |
| |