15 #if defined(__linux) || defined(__APPLE__)
21 #include <ngraph/ngraph_visibility.hpp>
28 template <
size_t SIZE>
35 constexpr
char operator[](
size_t i)
const
37 return i < m_size ? m_string[i] :
throw std::out_of_range(
"");
39 constexpr
const char* get_ptr(
size_t offset)
const
41 return offset < m_size ? &m_string[offset] : m_string;
43 constexpr
size_t size()
const {
return m_size; }
50 constexpr
const char* find_last(
ConstString s,
size_t offset,
char ch)
54 : (s[offset] == ch ? s.get_ptr(offset + 1) : find_last(s, offset - 1, ch));
57 constexpr
const char* find_last(ConstString s,
char ch)
59 return find_last(s, s.size() - 1, ch);
62 constexpr
const char* get_file_name(ConstString s) {
return find_last(s,
'/'); }
63 constexpr
const char* trim_file_name(ConstString root, ConstString s)
65 return s.get_ptr(root.size());
81 std::function<
void(
const std::string&)> m_handler_func);
84 std::ostream& stream() {
return m_stream; }
87 std::function<void(
const std::string&)> m_handler_func;
88 std::stringstream m_stream;
96 static void set_log_path(
const std::string& path);
101 static void log_item(
const std::string& s);
102 static void process_event(
const std::string& s);
103 static void thread_entry(
void* param);
104 static std::string m_log_path;
105 static std::deque<std::string> m_queue;
109 void default_logger_handler_func(
const std::string& s);
111 #ifndef PROJECT_ROOT_DIR
112 #define PROJECT_ROOT_DIR ""
116 ngraph::LogHelper(ngraph::LOG_TYPE::_LOG_TYPE_ERROR, \
117 ngraph::trim_file_name(PROJECT_ROOT_DIR, __FILE__), \
119 ngraph::default_logger_handler_func) \
122 #define NGRAPH_WARN \
123 ngraph::LogHelper(ngraph::LOG_TYPE::_LOG_TYPE_WARNING, \
124 ngraph::trim_file_name(PROJECT_ROOT_DIR, __FILE__), \
126 ngraph::default_logger_handler_func) \
129 #define NGRAPH_INFO \
130 ngraph::LogHelper(ngraph::LOG_TYPE::_LOG_TYPE_INFO, \
131 ngraph::trim_file_name(PROJECT_ROOT_DIR, __FILE__), \
133 ngraph::default_logger_handler_func) \
136 #ifdef NGRAPH_DEBUG_ENABLE
137 #define NGRAPH_DEBUG \
138 ngraph::LogHelper(ngraph::LOG_TYPE::_LOG_TYPE_DEBUG, \
139 ngraph::trim_file_name(PROJECT_ROOT_DIR, __FILE__), \
141 ngraph::default_logger_handler_func) \
149 template <
typename T>
152 return std::move(logger);
155 template <
typename T>
156 NullLogger&& operator<<(NullLogger&& logger,
const T&)
158 return std::move(logger);
162 operator<<(NullLogger&& logger,
163 std::basic_ostream<
char, std::char_traits<char>>& (&)(std::basic_ostream<
165 std::char_traits<char>>&))
167 return std::move(logger);
170 #define NGRAPH_DEBUG \
171 ::ngraph::NullLogger {}
The Intel nGraph C++ API.
Definition: attribute_adapter.hpp:16