34 , object_info(subscriptor.object_info)
36 for (
auto *
const validity_ptr : subscriptor.validity_pointers)
37 *validity_ptr =
false;
38 subscriptor.validity_pointers.clear();
46 *validity_ptr =
false;
76# if __cpp_lib_uncaught_exceptions >= 201411
78 if (std::uncaught_exceptions() == 0)
80 if (std::uncaught_exception() ==
false)
83 std::string infostring;
86 if (map_entry.second > 0)
87 infostring += std::string(
"\n from Subscriber ") +
88 std::string(map_entry.first);
91 if (infostring.empty())
92 infostring =
"<none>";
102 <<
"---------------------------------------------------------"
104 <<
"An object pointed to by a SmartPointer is being destroyed."
106 <<
"Under normal circumstances, this would abort the program."
108 <<
"However, another exception is being processed at the"
110 <<
"moment, so the program will continue to run to allow"
112 <<
"this exception to be processed." << std::endl
113 <<
"---------------------------------------------------------"
125 for (
auto *
const validity_ptr : s.validity_pointers)
126 *validity_ptr =
false;
128 object_info = s.object_info;
136 const std::string &
id)
const
138 std::lock_guard<std::mutex> lock(
mutex);
156 const std::string &
id)
const
167 std::lock_guard<std::mutex> lock(
mutex);
184 auto validity_ptr_it =
191 "This Subscriptor object does not know anything about the supplied pointer!"));
std::vector< std::atomic< bool > * > validity_pointers
void unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
std::atomic< unsigned int > counter
void check_no_subscribers() const noexcept
void list_subscribers() const
const std::type_info * object_info
Subscriptor & operator=(const Subscriptor &)
void subscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
std::map< std::string, unsigned int > counter_map
decltype(counter_map)::iterator map_iterator
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcInUse(int arg1, std::string arg2, std::string arg3)
#define AssertNothrow(cond, exc)
static ::ExceptionBase & ExcNoSubscriber(std::string arg1, std::string arg2)
static ::ExceptionBase & ExcMessage(std::string arg1)
static const char * unknown_subscriber