Changes imported from Abseil "staging" branch:

- 3f758237a43af1f277990492701d26d1153b4d74 Generalize the construction/destruction tests, to prepare... by Greg Falcon <gfalcon@google.com>
  - 7bea88f74fbac34b0c0b00b8b832a544988b9465 Simplify non intrinsic uint128 multiply. by Alex Strelnikov <strel@google.com>

GitOrigin-RevId: 3f758237a43af1f277990492701d26d1153b4d74
Change-Id: Idd9a2df0b90403f10f56bb66d30b76a8ba9f50e7
This commit is contained in:
Abseil Team 2018-01-18 12:42:26 -08:00 committed by vslashg
parent 5a8de8a37e
commit 52a2458965
2 changed files with 11 additions and 26 deletions

View file

@ -18,6 +18,7 @@
#include "absl/base/attributes.h"
#include "absl/base/internal/raw_logging.h"
#include "absl/base/thread_annotations.h"
#include "absl/synchronization/mutex.h"
#include "absl/synchronization/notification.h"
@ -106,24 +107,19 @@ void TestLocals() {
// definitions. We can use this to arrange for tests to be run on these objects
// before they are created, and after they are destroyed.
class ConstructorTestRunner {
using Function = void (*)();
class OnConstruction {
public:
ConstructorTestRunner(absl::Mutex* mutex, absl::CondVar* condvar,
absl::Notification* notification) {
RunTests(mutex, condvar, notification);
}
explicit OnConstruction(Function fn) { fn(); }
};
class DestructorTestRunner {
class OnDestruction {
public:
DestructorTestRunner(absl::Mutex* mutex, absl::CondVar* condvar,
absl::Notification* notification)
: mutex_(mutex), condvar_(condvar), notification_(notification) {}
~DestructorTestRunner() { RunTests(mutex_, condvar_, notification_); }
explicit OnDestruction(Function fn) : fn_(fn) {}
~OnDestruction() { fn_(); }
private:
absl::Mutex* mutex_;
absl::CondVar* condvar_;
absl::Notification* notification_;
Function fn_;
};
} // namespace