2023-06-24 14:59:27 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "SourceLocation.hpp"
|
|
|
|
|
#include "unreachable.hpp"
|
|
|
|
|
|
|
|
|
|
class Verify {
|
|
|
|
|
util::SourceLocation mLocation;
|
|
|
|
|
|
|
|
|
|
public:
|
2023-07-06 18:16:25 +02:00
|
|
|
util::SourceLocation location() const { return mLocation; }
|
2023-06-24 14:59:27 +02:00
|
|
|
|
|
|
|
|
Verify(util::SourceLocation location = util::SourceLocation())
|
|
|
|
|
: mLocation(location) {}
|
|
|
|
|
|
|
|
|
|
Verify &operator<<(bool result) {
|
|
|
|
|
if (!result) {
|
|
|
|
|
util::unreachable("Verification failed at %s: %s:%u:%u",
|
|
|
|
|
mLocation.function_name(), mLocation.file_name(),
|
|
|
|
|
mLocation.line(), mLocation.column());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *this;
|
|
|
|
|
}
|
|
|
|
|
};
|