Flutter Impeller
validation.cc
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#include "
impeller/base/validation.h
"
6
7
#include <atomic>
8
9
#include "flutter/fml/logging.h"
10
11
namespace
impeller
{
12
13
static
std::atomic_int32_t
sValidationLogsDisabledCount
= 0;
14
static
std::atomic_int32_t
sValidationLogsAreFatal
= 0;
15
16
void
ImpellerValidationErrorsSetFatal
(
bool
fatal) {
17
sValidationLogsAreFatal
= fatal;
18
}
19
20
ScopedValidationDisable::ScopedValidationDisable
() {
21
sValidationLogsDisabledCount
++;
22
}
23
24
ScopedValidationDisable::~ScopedValidationDisable
() {
25
sValidationLogsDisabledCount
--;
26
}
27
28
ScopedValidationFatal::ScopedValidationFatal
() {
29
sValidationLogsAreFatal
++;
30
}
31
32
ScopedValidationFatal::~ScopedValidationFatal
() {
33
sValidationLogsAreFatal
--;
34
}
35
36
ValidationLog::ValidationLog
() =
default
;
37
38
ValidationLog::~ValidationLog
() {
39
if
(
sValidationLogsDisabledCount
<= 0) {
40
ImpellerValidationBreak
(stream_.str().c_str());
41
}
42
}
43
44
std::ostream&
ValidationLog::GetStream
() {
45
return
stream_;
46
}
47
48
void
ImpellerValidationBreak
(
const
char
* message) {
49
std::stringstream stream;
50
#if FLUTTER_RELEASE
51
stream <<
"Impeller validation: "
<< message;
52
#else
53
stream <<
"Break on '"
<< __FUNCTION__
54
<<
"' to inspect point of failure: "
<< message;
55
#endif
56
if
(
sValidationLogsAreFatal
> 0) {
57
FML_LOG(FATAL) << stream.str();
58
}
else
{
59
FML_LOG(ERROR) << stream.str();
60
}
61
}
62
63
bool
ImpellerValidationErrorsAreFatal
() {
64
return
sValidationLogsAreFatal
;
65
}
66
67
}
// namespace impeller
impeller::ImpellerValidationBreak
void ImpellerValidationBreak(const char *message)
Definition:
validation.cc:48
impeller::ScopedValidationFatal::ScopedValidationFatal
ScopedValidationFatal()
Definition:
validation.cc:28
impeller::sValidationLogsAreFatal
static std::atomic_int32_t sValidationLogsAreFatal
Definition:
validation.cc:14
impeller::ScopedValidationDisable::~ScopedValidationDisable
~ScopedValidationDisable()
Definition:
validation.cc:24
impeller::ScopedValidationFatal::~ScopedValidationFatal
~ScopedValidationFatal()
Definition:
validation.cc:32
validation.h
impeller::ValidationLog::~ValidationLog
~ValidationLog()
Definition:
validation.cc:38
impeller::ValidationLog::ValidationLog
ValidationLog()
impeller::ScopedValidationDisable::ScopedValidationDisable
ScopedValidationDisable()
Definition:
validation.cc:20
impeller::sValidationLogsDisabledCount
static std::atomic_int32_t sValidationLogsDisabledCount
Definition:
validation.cc:13
impeller::ImpellerValidationErrorsSetFatal
void ImpellerValidationErrorsSetFatal(bool fatal)
Definition:
validation.cc:16
impeller::ImpellerValidationErrorsAreFatal
bool ImpellerValidationErrorsAreFatal()
Definition:
validation.cc:63
impeller::ValidationLog::GetStream
std::ostream & GetStream()
Definition:
validation.cc:44
impeller
Definition:
aiks_blur_unittests.cc:20
impeller
base
validation.cc
Generated by
1.8.17