Halide 22.0.0 Halide compiler and libraries

ASLog.h
Go to the documentation of this file.
1#ifndef ASLOG_H
2#define ASLOG_H
3
4// This class is used by train_cost_model, which doesn't link to
5// libHalide, so (despite the namespace) we are better off not
6// including Halide.h, lest we reference something we won't have available
7
8#include <cassert>
9#include <cstdlib>
10#include <iostream>
11#include <utility>
12
13 namespace Halide {
14 namespace Internal {
15
16 class aslog {
17 const bool logging;
18
19 public:
20 explicit aslog(int verbosity)
21 : logging(verbosity <= aslog_level()) {
22 }
23
24 template<typename T>
25 aslog &operator<<(T &&x) {
26 if (logging) {
27 std::cerr << std::forward<T>(x);
28 }
29 return *this;
30 }
31
32 std::ostream &get_ostream() {
33 // It is an error to call this for an aslog() instance that cannot log.
34 assert(logging);
35 return std::cerr;
36 }
37
38 static int aslog_level();
39};
40
41} // namespace Internal
42} // namespace Halide
43
44#endif
Halide::Internal::aslog
Definition: ASLog.h:16
Halide::Internal::aslog::operator<<
aslog & operator<<(T &&x)
Definition: ASLog.h:25
Halide::Internal::aslog::get_ostream
std::ostream & get_ostream()
Definition: ASLog.h:32
Halide::Internal::aslog::aslog
aslog(int verbosity)
Definition: ASLog.h:20
Halide::Internal::aslog::aslog_level
static int aslog_level()
Halide
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Definition: AbstractGenerator.h:19
Halide::LinkageType::Internal
@ Internal
Not visible externally, similar to 'static' linkage in C.