22 r = (
r << 32) & 0xFFFFFFFF00000000 |
b;
26std::pair<uint32_t, uint32_t>
decode(uint64_t
x)
28 uint32_t
a =
static_cast<uint32_t
>((
x & 0xFFFFFFFF00000000) >> 32);
29 uint32_t
b =
static_cast<uint32_t
>(
x & 0xFFFFFFFF);
30 return std::make_pair(
a,
b);
35 auto [itError, isNew] = mErrors[errorType].emplace(
encode(id0, id1),
Error{errorType, id0, id1,
n});
37 itError->second.count +=
n;
43 auto [itError, isNew] = mErrors[error.
type].emplace(
encode(error.
id0, error.
id1), error);
45 itError->second.count += error.
count;
51 for (
auto error : errors) {
92 for (
const auto& typeErrors : mErrors) {
93 for (
auto error : typeErrors.second) {
101 for (
const auto& [thisType, errors] : mErrors) {
102 if (thisType ==
type) {
103 for (
auto error : errors) {
112 for (
const auto& [thisType, errors] : mErrors) {
114 for (
auto error : errors) {
A container class to summarize errors encountered during processing.
void forEach(ErrorFunction f) const
uint64_t getNumberOfErrors() const
void add(ErrorType errorType, uint32_t id0, uint32_t id1, uint64_t n=1)
std::function< void(Error error)> ErrorFunction
GLboolean GLboolean GLboolean b
GLint GLint GLsizei GLint GLenum GLenum type
GLboolean GLboolean GLboolean GLboolean a
constexpr ErrorGroup errorGroup(ErrorType error)
uint64_t encode(uint32_t a, uint32_t b)
std::pair< uint32_t, uint32_t > decode(uint64_t x)
uint32_t id1
additional descriptor used for certain error types
uint64_t count
number of occurences
ErrorType type
type of processing error
uint32_t id0
additional descriptor used for certain error types