7 #if __cplusplus < 201103L 
    8 #error rosfmt needs C++11 support. Suggestion: add "set(CMAKE_CXX_STANDARD 11)" \ 
    9     to your CMakeLists.txt. 
   14 #ifndef ROSFMT_NO_DEPRECATED_OSTREAM 
   15 #ifndef FMT_DEPRECATED_OSTREAM 
   16 #define FMT_DEPRECATED_OSTREAM 
   29 std::string 
vformat(fmt::string_view format_str, fmt::format_args args);
 
   31 template<
typename ... Args>
 
   32 std::string format(
const std::string& formatString, 
const Args& ... args)
 
   34         fmt::format_arg_store<fmt::format_context, Args...> as{args...};
 
   38 template<
typename... Args>
 
   41         const char* file, 
int line, 
const char* 
function,
 
   42         fmt::format_string<Args...> fmt, Args&&... args)
 
   44         std::string 
s = 
rosfmt::vformat(fmt, fmt::make_format_args(std::forward<Args>(args)...));
 
   52 #define ROSFMT_PRINT_AT_LOCATION_WITH_FILTER(filter, ...) \ 
   53     ::rosfmt::print(filter, __rosconsole_define_location__loc.logger_, __rosconsole_define_location__loc.level_, __FILE__, __LINE__, __ROSCONSOLE_FUNCTION__, __VA_ARGS__) 
   55 #define ROSFMT_PRINT_AT_LOCATION(...) \ 
   56     ROSFMT_PRINT_AT_LOCATION_WITH_FILTER(NULL, __VA_ARGS__) 
   67 #define ROSFMT_LOG_COND(cond, level, name, ...) \ 
   70     ROSCONSOLE_DEFINE_LOCATION(cond, level, name); \ 
   72     if (ROS_UNLIKELY(__rosconsole_define_location__enabled)) \ 
   74       ROSFMT_PRINT_AT_LOCATION(__VA_ARGS__); \ 
   84 #define ROSFMT_LOG_ONCE(level, name, ...) \ 
   87     ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ 
   88     static bool hit = false; \ 
   89     if (ROS_UNLIKELY(__rosconsole_define_location__enabled) && ROS_UNLIKELY(!hit)) \ 
   92       ROSFMT_PRINT_AT_LOCATION(__VA_ARGS__); \ 
  103 #define ROSFMT_LOG_THROTTLE(period, level, name, ...) \ 
  106     ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ 
  107     static double last_hit = 0.0; \ 
  108     ::ros::Time now = ::ros::Time::now(); \ 
  109     if (ROS_UNLIKELY(__rosconsole_define_location__enabled) && ROS_UNLIKELY(last_hit + period <= now.toSec())) \ 
  111       last_hit = now.toSec(); \ 
  112       ROSFMT_PRINT_AT_LOCATION(__VA_ARGS__); \ 
  123 #define ROSFMT_LOG_DELAYED_THROTTLE(period, level, name, ...) \ 
  126     ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ 
  127     ::ros::Time __ros_log_delayed_throttle__now__ = ::ros::Time::now(); \ 
  128     static double __ros_log_delayed_throttle__last_hit__ = __ros_log_delayed_throttle__now__.toSec(); \ 
  129     if (ROS_UNLIKELY(__rosconsole_define_location__enabled) && ROS_UNLIKELY(__ros_log_delayed_throttle__last_hit__ + period <= __ros_log_delayed_throttle__now__.toSec())) \ 
  131       __ros_log_delayed_throttle__last_hit__ = __ros_log_delayed_throttle__now__.toSec(); \ 
  132       ROSFMT_PRINT_AT_LOCATION(__VA_ARGS__); \ 
  143 #define ROSFMT_LOG_FILTER(filter, level, name, ...) \ 
  146     ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ 
  147     if (ROS_UNLIKELY(__rosconsole_define_location__enabled) && (filter)->isEnabled()) \ 
  149       ROSFMT_PRINT_AT_LOCATION_WITH_FILTER(filter, __VA_ARGS__); \ 
  159 #define ROSFMT_LOG(level, name, ...) ROSFMT_LOG_COND(true, level, name, __VA_ARGS__) 
  161 #include "macros_generated.h" 
  165 #endif // include guard