hdac SDK
SDK for hdac blockchain development
util.h
1 #ifndef UTIL_H
2 #define UTIL_H
3 
4 #include "tinyformat.h"
5 
7 bool LogAcceptCategory(const char* category);
9 int LogPrintStr(const std::string &str);
10 
11 #define LogPrintf(...) LogPrint(NULL, __VA_ARGS__)
12 
17 #define MAKE_ERROR_AND_LOG_FUNC(n) \
18  \
19  template<TINYFORMAT_ARGTYPES(n)> \
20  static inline int LogPrint(const char* category, const char* format, TINYFORMAT_VARARGS(n)) \
21  { \
22  if(!LogAcceptCategory(category)) return 0; \
23  return LogPrintStr(tfm::format(format, TINYFORMAT_PASSARGS(n))); \
24  } \
25  \
26  template<TINYFORMAT_ARGTYPES(n)> \
27  static inline bool error(const char* format, TINYFORMAT_VARARGS(n)) \
28  { \
29  LogPrintStr("ERROR: " + tfm::format(format, TINYFORMAT_PASSARGS(n)) + "\n"); \
30  return false; \
31  } \
32  \
33  template<TINYFORMAT_ARGTYPES(n)> \
34  static inline bool error_status(const char* format, TINYFORMAT_VARARGS(n)) \
35  { \
36  LogPrintStr("Status: " + tfm::format(format, TINYFORMAT_PASSARGS(n)) + "\n"); \
37  return false; \
38  }
39 
40 TINYFORMAT_FOREACH_ARGNUM(MAKE_ERROR_AND_LOG_FUNC)
41 
42 
46 static inline int LogPrint(const char* category, const char* format)
47 {
48  if(!LogAcceptCategory(category)) return 0;
49  return LogPrintStr(format);
50 }
51 
52 #endif // UTIL_H