Comment: | Add C11 noreturn
If it's unavailable, it's defined to __attribute__((noreturn)). Unfortunately, it cannot be used for ObjC methods, as noreturn is part |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
bac91ccede95f3f052337b11c9674831 |
User & Date: | js on 2014-05-14 20:45:00 |
Other Links: | manifest | tags |
2014-05-14
| ||
21:09 | Replace @compatibility_alias with #define for NS* check-in: ac1ae59c91 user: js tags: trunk | |
20:45 | Add C11 noreturn check-in: bac91ccede user: js tags: trunk | |
20:28 | Always use __foo__ instead of foo for attributes check-in: e35b10115e user: js tags: trunk | |
Modified configure.ac from [6c6bb6568f] to [5c05e2c9e7].
︙ | ︙ | |||
386 387 388 389 390 391 392 393 394 395 396 397 398 399 | ]) AC_DEFINE_UNQUOTED(SIZE_MAX, $size_max, [Maximum value for size_t]) ]) AC_CHECK_TYPE(max_align_t, [AC_DEFINE(OF_HAVE_MAX_ALIGN_T, 1, [Whether we have max_align_t])]) AC_CHECK_SIZEOF(float) AC_CHECK_SIZEOF(double) AS_IF([test x"$ac_cv_sizeof_float" != x"4" -o x"$ac_cv_sizeof_double" != x"8"], [AC_MSG_ERROR( [Floating point implementation does not conform to IEEE 754!])]) AC_MSG_CHECKING(for floating point endianess) | > > > | 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 | ]) AC_DEFINE_UNQUOTED(SIZE_MAX, $size_max, [Maximum value for size_t]) ]) AC_CHECK_TYPE(max_align_t, [AC_DEFINE(OF_HAVE_MAX_ALIGN_T, 1, [Whether we have max_align_t])]) AC_CHECK_HEADER(stdnoreturn.h, [AC_DEFINE(OF_HAVE_STDNORETURN_H, 1, [Whether we have stdnoreturn.h])]) AC_CHECK_SIZEOF(float) AC_CHECK_SIZEOF(double) AS_IF([test x"$ac_cv_sizeof_float" != x"4" -o x"$ac_cv_sizeof_double" != x"8"], [AC_MSG_ERROR( [Floating point implementation does not conform to IEEE 754!])]) AC_MSG_CHECKING(for floating point endianess) |
︙ | ︙ |
Modified src/OFApplication.h from [f01ba7a135] to [4b9b47fc09].
︙ | ︙ | |||
160 161 162 163 164 165 166 | * @return The environment of the application */ + (OFDictionary*)environment; /*! * @brief Terminates the application. */ | | | | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | * @return The environment of the application */ + (OFDictionary*)environment; /*! * @brief Terminates the application. */ + (void)terminate OF_METHOD_NORETURN; /*! * @brief Terminates the application with the specified status. * * @param status The status with which the application will terminate */ + (void)terminateWithStatus: (int)status OF_METHOD_NORETURN; /*! * @brief Gets args and argv. * * @param argc A pointer where a pointer to argc should be stored * @param argv A pointer where a pointer to argv should be stored */ |
︙ | ︙ | |||
216 217 218 219 220 221 222 | * @param delegate The delegate for the application */ - (void)setDelegate: (id <OFApplicationDelegate>)delegate; /*! * @brief Terminates the application. */ | | | | 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 | * @param delegate The delegate for the application */ - (void)setDelegate: (id <OFApplicationDelegate>)delegate; /*! * @brief Terminates the application. */ - (void)terminate OF_METHOD_NORETURN; /*! * @brief Terminates the application with the specified status. * * @param status The status with which the application will terminate */ - (void)terminateWithStatus: (int)status OF_METHOD_NORETURN; @end @interface OFObject (OFApplicationDelegate) <OFApplicationDelegate> @end #ifdef __cplusplus extern "C" { #endif extern int of_application_main(int*, char**[], Class); #ifdef __cplusplus } #endif |
Modified src/OFObject.h from [3f124a3246] to [baff938aeb].
︙ | ︙ | |||
42 43 44 45 46 47 48 49 50 51 52 53 54 55 | /*! @file */ #if defined(__GNUC__) # define restrict __restrict__ #elif __STDC_VERSION__ < 199901L # define restrict #endif #if defined(OF_HAVE__THREAD_LOCAL) # define OF_HAVE_COMPILER_TLS # ifdef OF_HAVE_THREADS_H # include <threads.h> # else # define thread_local _Thread_local | > > > > > > > > > > > > | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | /*! @file */ #if defined(__GNUC__) # define restrict __restrict__ #elif __STDC_VERSION__ < 199901L # define restrict #endif #if __STDC_VERSION__ >= 201112L # ifdef OF_HAVE_STDNORETURN_H # include <stdnoreturn.h> # else # define noreturn _Noreturn # endif #elif defined(__GNUC__) # define noreturn __attribute__((noreturn)) #else # define noreturn #endif #if defined(OF_HAVE__THREAD_LOCAL) # define OF_HAVE_COMPILER_TLS # ifdef OF_HAVE_THREADS_H # include <threads.h> # else # define thread_local _Thread_local |
︙ | ︙ | |||
101 102 103 104 105 106 107 | # undef false # define false ((bool)0) # endif #endif #if defined(__clang__) || __GCC_VERSION__ >= 406 # define OF_SENTINEL __attribute__((__sentinel__)) | | | | 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | # undef false # define false ((bool)0) # endif #endif #if defined(__clang__) || __GCC_VERSION__ >= 406 # define OF_SENTINEL __attribute__((__sentinel__)) # define OF_METHOD_NORETURN __attribute__((__noreturn__)) #else # define OF_SENTINEL # define OF_METHOD_NORETURN #endif #if __has_attribute(__objc_requires_super__) # define OF_REQUIRES_SUPER __attribute__((__objc_requires_super__)) #else # define OF_REQUIRES_SUPER #endif |
︙ | ︙ | |||
957 958 959 960 961 962 963 | * @brief Handles messages which are not understood by the receiver. * * @warning If you override this method, you must make sure that it never * returns. * * @param selector The selector not understood by the receiver */ | | | 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 | * @brief Handles messages which are not understood by the receiver. * * @warning If you override this method, you must make sure that it never * returns. * * @param selector The selector not understood by the receiver */ - (void)doesNotRecognizeSelector: (SEL)selector OF_METHOD_NORETURN; @end /*! * @protocol OFCopying OFObject.h ObjFW/OFObject.h * * @brief A protocol for the creation of copies. */ |
︙ | ︙ |
Modified src/OFThread.h from [bd27888ffe] to [4ccbd9a433].
︙ | ︙ | |||
141 142 143 144 145 146 147 | */ + (void)yield; #ifdef OF_HAVE_THREADS /*! * @brief Terminates the current thread, letting it return nil. */ | | | | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | */ + (void)yield; #ifdef OF_HAVE_THREADS /*! * @brief Terminates the current thread, letting it return nil. */ + (void)terminate OF_METHOD_NORETURN; /*! * @brief Terminates the current thread, letting it return the specified object. * * @param object The object which the terminated thread will return */ + (void)terminateWithObject: (id)object OF_METHOD_NORETURN; # ifdef OF_HAVE_BLOCKS /*! * @brief Initializes an already allocated thread with the specified block. * * @param threadBlock A block which is executed by the thread * @return An initialized OFThread. |
︙ | ︙ |
Modified src/objfw-defs.h.in from [41bed793cb] to [b0cd6ea182].
︙ | ︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #undef OF_HAVE_PLUGINS #undef OF_HAVE_PROCESSES #undef OF_HAVE_PTHREADS #undef OF_HAVE_PTHREAD_SPINLOCKS #undef OF_HAVE_RECURSIVE_PTHREAD_MUTEXES #undef OF_HAVE_SCHED_YIELD #undef OF_HAVE_SOCKETS #undef OF_HAVE_SYMLINK #undef OF_HAVE_SYS_SOCKET_H #undef OF_HAVE_THREADS #undef OF_HAVE___THREAD #undef OF_HAVE__THREAD_LOCAL #undef OF_NINTENDO_DS #undef OF_OBJFW_RUNTIME | > | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #undef OF_HAVE_PLUGINS #undef OF_HAVE_PROCESSES #undef OF_HAVE_PTHREADS #undef OF_HAVE_PTHREAD_SPINLOCKS #undef OF_HAVE_RECURSIVE_PTHREAD_MUTEXES #undef OF_HAVE_SCHED_YIELD #undef OF_HAVE_SOCKETS #undef OF_HAVE_STDNORETURN #undef OF_HAVE_SYMLINK #undef OF_HAVE_SYS_SOCKET_H #undef OF_HAVE_THREADS #undef OF_HAVE___THREAD #undef OF_HAVE__THREAD_LOCAL #undef OF_NINTENDO_DS #undef OF_OBJFW_RUNTIME |
︙ | ︙ |
Modified src/threading.h from [79cb0c24fe] to [65cc15f272].
︙ | ︙ | |||
139 140 141 142 143 144 145 | /* FIXME */ return true; #else # error of_thread_detach not implemented! #endif } | | > | 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | /* FIXME */ return true; #else # error of_thread_detach not implemented! #endif } static OF_INLINE void noreturn of_thread_exit(void) { #if defined(OF_HAVE_PTHREADS) pthread_exit(NULL); #elif defined(_WIN32) ExitThread(0); #else # error of_thread_exit not implemented! #endif OF_UNREACHABLE } static OF_INLINE void of_once(of_once_t *control, void (*func)(void)) { #if defined(OF_HAVE_PTHREADS) pthread_once(control, func); |
︙ | ︙ |