17 #ifndef __TBB_exception_H
18 #define __TBB_exception_H
20 #define __TBB_tbb_exception_H_include_area
34 #if __TBB_DEFAULT_DTOR_THROW_SPEC_BROKEN
87 #if __TBB_SUPPORTS_WORKERS_WAITING_IN_TERMINATE
110 #if __TBB_TASK_GROUP_CONTEXT
142 void*
operator new ( size_t );
160 virtual
void destroy() throw() = 0;
167 virtual
void throw_self() = 0;
170 virtual const
char*
name() const throw() = 0;
181 void operator delete (
void*
p ) {
209 if (
this != &src ) {
211 set(src.my_exception_name, src.my_exception_info);
246 template<
typename ExceptionData>
253 : my_exception_data(data_)
266 , my_exception_data(src.my_exception_data)
268 , my_exception_name(src.my_exception_name)
274 if (
this != &src ) {
281 ExceptionData&
data() throw() {
return my_exception_data; }
283 const ExceptionData&
data()
const throw() {
return my_exception_data; }
298 __TBB_ASSERT ( my_dynamic,
"Method destroy can be called only on dynamically allocated movable_exceptions" );
319 #if !TBB_USE_CAPTURED_EXCEPTION
345 my_ptr(std::make_exception_ptr(src))
347 my_ptr(std::copy_exception(src))
360 #undef __TBB_tbb_exception_H_include_area
#define __TBB_EXPORTED_FUNC
#define TBB_USE_EXCEPTIONS
#define __TBB_MAKE_EXCEPTION_PTR_PRESENT
#define __TBB_DEPRECATED_IN_VERBOSE_MODE
#define __TBB_EXPORTED_METHOD
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
void const char const char int ITT_FORMAT __itt_group_sync x void const char * name
void const char const char int ITT_FORMAT __itt_group_sync p
void __TBB_EXPORTED_FUNC deallocate_via_handler_v3(void *p)
Deallocates memory using FreeHandler.
void __TBB_EXPORTED_FUNC throw_bad_last_alloc_exception_v4()
Obsolete.
void throw_exception(exception_id eid)
Versionless convenience wrapper for throw_exception_v4()
void *__TBB_EXPORTED_FUNC allocate_via_handler_v3(size_t n)
Allocates memory using MallocHandler.
@ eid_reservation_length_error
@ eid_segment_range_error
@ eid_max
The last enumerator tracks the number of defined IDs. It must remain the last one.
@ eid_invalid_multiple_scheduling
@ eid_invalid_load_factor
@ eid_condvar_wait_failed
@ eid_operation_not_permitted
@ eid_bad_tagged_msg_cast
void __TBB_EXPORTED_FUNC throw_exception_v4(exception_id)
Gathers all throw operators in one place.
Exception for concurrent containers.
const char * what() const __TBB_override
Exception for user-initiated abort.
const char * what() const __TBB_override
Exception for missing wait on structured_task_group.
const char * what() const __TBB_override
Exception for repeated scheduling of the same task_handle.
const char * what() const __TBB_override
Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.
virtual tbb_exception * move()=0
Creates and returns pointer to the deep copy of this exception object.
This class is used by TBB to propagate information about unhandled exceptions into the root thread.
const char * my_exception_name
__TBB_EXPORTED_METHOD ~captured_exception()
captured_exception *__TBB_EXPORTED_METHOD move() __TBB_override
Creates and returns pointer to the deep copy of this exception object.
const char *__TBB_EXPORTED_METHOD name() const __TBB_override
Returns RTTI name of the originally intercepted exception.
captured_exception(const captured_exception &src)
captured_exception(const char *name_, const char *info)
const char * my_exception_info
static captured_exception * allocate(const char *name, const char *info)
Functionally equivalent to {captured_exception e(name,info); return e.move();}.
Template that can be used to implement exception that transfers arbitrary ExceptionData to the root t...
void throw_self() __TBB_override
Throws this exception object.
bool my_dynamic
Flag specifying whether this object has been dynamically allocated (by the move method)
movable_exception * move() __TBB_override
Creates and returns pointer to the deep copy of this exception object.
const char * what() const __TBB_override
Returns the result of originally intercepted exception's what() method.
movable_exception(const ExceptionData &data_)
movable_exception(const movable_exception &src)
void destroy() __TBB_override
Destroys objects created by the move() method.
const char * my_exception_name
RTTI name of this class.
movable_exception< ExceptionData > self_type
ExceptionData my_exception_data
User data.
const ExceptionData & data() const
const char * name() const __TBB_override
Returns RTTI name of the originally intercepted exception.
Exception container that preserves the exact copy of the original exception.
std::exception_ptr my_ptr
void throw_self()
Throws the contained exception .
void destroy()
Destroys this objects.
static tbb_exception_ptr * allocate()
tbb_exception_ptr(const captured_exception &src)
static tbb_exception_ptr * allocate(captured_exception &src)
This overload uses move semantics (i.e. it empties src)
tbb_exception_ptr(const std::exception_ptr &src)
static tbb_exception_ptr * allocate(const tbb_exception &tag)