2 #if ENABLE_COLLISION_TESTS 11 std::ofstream TestFailureLogger<T>::out_file;
13 std::mutex TestFailureLogger<T>::file_mutex;
15 int TestFailureLogger<T>::num_copies = 0;
19 static bool notified_of_file_open_error =
false;
20 std::lock_guard<std::mutex> guard(file_mutex);
22 out_file.open(get_filename(), std::ofstream::out | std::ofstream::app);
24 if (!notified_of_file_open_error) {
25 std::cout <<
"Failed to open error log file" << std::endl;
26 notified_of_file_open_error =
true;
34 std::lock_guard<std::mutex> guard(file_mutex);
36 if (!num_copies && out_file.is_open()) {
43 std::lock_guard<std::mutex> guard(file_mutex);
44 if (out_file.is_open() && !out_file.fail()) {
50 template class TestFailureLogger<TestFailureLoggerNarrowphase>;
51 template class TestFailureLogger<TestFailureLoggerBroadphase>;
52 template class TestFailureLogger<TestFailureLoggerParentMap>;
55 const char *TestFailureLogger<TestFailureLoggerNarrowphase>::get_filename(
57 static const char narrowphase_filename[] = NARROWPHASE_FILENAME;
58 return narrowphase_filename;
61 const char *TestFailureLogger<TestFailureLoggerBroadphase>::get_filename(
void) {
62 static const char broadphase_filename[] = BROADPHASE_FILENAME;
63 return broadphase_filename;
67 const char *TestFailureLogger<TestFailureLoggerParentMap>::get_filename(
void) {
68 static const char parentmap_filename[] = PARENTMAP_FILENAME;
69 return parentmap_filename;
int log_failure(std::string log_str)
virtual ~TestFailureLogger(void)