Wolfgang Thallergcc16 merge934c3885 months agoHistory
109 lines · 4.7 KB · C
RawDownload
/* GNU Objective C Runtime native exceptions   Copyright (C) 2010-2026 Free Software Foundation, Inc.   Contributed by Nicola Pero <nicola.pero@meta-innovation.com> This file is part of GCC. GCC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 3, or (at your option)any later version. GCC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additionalpermissions described in the GCC Runtime Library Exception, version3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License anda 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/>.  */ #ifndef __objc_exception_INCLUDE_GNU#define __objc_exception_INCLUDE_GNU #include "objc.h"#include "objc-decls.h" #ifdef __cplusplusextern "C" {#endif /* 'objc_exception_throw' throws the exception 'exception', which is   an exception object.    Calls to 'objc_exception_throw' are automatically generated by the   compiler: an Objective-C "@throw exception;" statement gets   compiled into the equivalent of "objc_exception_throw   (exception);".    'objc_exception_throw' searches for a @catch() that can catch the   exception.  By default, @catch (MyClass object) will catch all   exception objects that are of class MyClass or of a subclass of   MyClass; if the exception object is 'nil', then the exception can   only be caught with a catch-all exception handler where no   exception class is specified (such as @catch(id object)).  This   behaviour can be customized by setting an 'objc_exception_matcher'   function (using objc_set_exception_matcher(), see below); if one is   set, it is used instead of the default one.    If the exception is uncaught (there is no @catch() to catch it),   the program aborts.  It is possible to customize this behaviour by   setting an 'objc_uncaught_exception_handler' function (using   objc_set_uncaught_exception_handler(), see below); if one is set,   it is executed before abort() is called.  An uncaught exception   handler is expected to never return.  */objc_EXPORT void objc_exception_throw (id exception); /* Compatibility note: the Apple/NeXT runtime seems to also have   objc_exception_rethrow(), objc_begin_catch() and objc_end_catch().   Currently the GNU runtime does not use them.  */ /* The following functions allow customizing to a certain extent the   exception handling.  They are not thread safe and should be called   during the program initialization before threads are started.  They   are mostly reserved for "Foundation" libraries; in the case of   GNUstep, GNUstep Base may be using these functions to improve the   standard exception handling.  You probably shouldn't use these   functions unless you are writing your own Foundation library.  */ /* Compatibility note: objc_set_exception_preprocessor() (available on   the Apple/NeXT runtime) is not available on the GNU runtime.  */ /* An 'objc_exception_matcher' function is used to match an exception   to a @catch clause.  'catch_class' is the class of objects caught   by the @catch clause (for example, in "@catch (Object *o)", the   catch_class is Object).  It should return 1 if the exception should   be caught by a @catch with a catch_class argument, and 0 if   not.  */typedef int (*objc_exception_matcher)(Class catch_class, id exception); /* Sets a new exception matcher function, and returns the previous   exception matcher function.  This function is not safe to call in a   multi-threaded environment because other threads may be trying to   invoke the exception matcher while you change it!  */objc_EXPORT objc_exception_matcherobjc_setExceptionMatcher (objc_exception_matcher new_matcher);  /* An 'objc_uncaught_exception_handler' function is a function that   handles uncaught exceptions.  It should never return.  */typedef void (*objc_uncaught_exception_handler)(id exception); /* Sets a new uncaught exception handler function, and returns the   previous exception handler function.  This function is not safe to   call in a multi-threaded environment because other threads may be   trying to invoke the uncaught exception handler while you change   it.  */objc_EXPORT objc_uncaught_exception_handlerobjc_setUncaughtExceptionHandler (objc_uncaught_exception_handler new_handler); #ifdef __cplusplus}#endif #endif /* not __objc_exception_INCLUDE_GNU */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t