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 
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;
16 
19 }
20 
22  sValidationFailureCallback = std::move(callback);
23 }
24 
27 }
28 
31 }
32 
35 }
36 
39 }
40 
41 ValidationLog::ValidationLog(const char* file, int line)
42  : file_(file), line_(line) {}
43 
46  ImpellerValidationBreak(stream_.str().c_str(), file_, line_);
47  }
48 }
49 
50 std::ostream& ValidationLog::GetStream() {
51  return stream_;
52 }
53 
54 void ImpellerValidationBreak(const char* message, const char* file, int line) {
56  sValidationFailureCallback(message, file, line)) {
57  return;
58  }
59  const auto severity =
60  ImpellerValidationErrorsAreFatal() ? fml::LOG_FATAL : fml::LOG_ERROR;
61  auto fml_log = fml::LogMessage{severity, file, line, nullptr};
62  fml_log.stream() <<
63 #if FLUTTER_RELEASE
64  "Impeller validation: " << message;
65 #else // FLUTTER_RELEASE
66  "Break on '" << __FUNCTION__
67  << "' to inspect point of failure: " << message;
68 #endif // FLUTTER_RELEASE
69 }
70 
73 }
74 
75 } // namespace impeller
ValidationLog(const char *file, int line)
Definition: validation.cc:41
std::ostream & GetStream()
Definition: validation.cc:50
std::function< bool(const char *message, const char *file, int line)> ValidationFailureCallback
Definition: validation.h:42
void ImpellerValidationBreak(const char *message, const char *file, int line)
Definition: validation.cc:54
static ValidationFailureCallback sValidationFailureCallback
Definition: validation.cc:15
void ImpellerValidationErrorsSetCallback(ValidationFailureCallback callback)
Sets a callback that callers (usually tests) can set to intercept validation failures.
Definition: validation.cc:21
bool ImpellerValidationErrorsAreFatal()
Definition: validation.cc:71
static std::atomic_int32_t sValidationLogsAreFatal
Definition: validation.cc:14
void ImpellerValidationErrorsSetFatal(bool fatal)
Definition: validation.cc:17
static std::atomic_int32_t sValidationLogsDisabledCount
Definition: validation.cc:13