Halide
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  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::operator<<
aslog & operator<<(T &&x)
Definition: ASLog.h:25
Halide::Internal::aslog
Definition: ASLog.h:16
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.
Halide::Internal::aslog::get_ostream
std::ostream & get_ostream()
Definition: ASLog.h:32