text: /*
   *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
   *
   *  Use of this source code is governed by a BSD-style license
   *  that can be found in the LICENSE file in the root of the source
   *  tree. An additional intellectual property rights grant can be found
   *  in the file PATENTS.  All contributing project authors may
   *  be found in the AUTHORS file in the root of the source tree.
   */
  
  #import <Foundation/Foundation.h>
  
  #import <WebRTC/RTCMacros.h>
  
  // Subset of rtc::LoggingSeverity.
  typedef NS_ENUM(NSInteger, RTCLoggingSeverity) {
    RTCLoggingSeverityVerbose,
    RTCLoggingSeverityInfo,
    RTCLoggingSeverityWarning,
    RTCLoggingSeverityError,
  };
  
  // Wrapper for C++ RTC_LOG(sev) macros.
  // Logs the log string to the webrtc logstream for the given severity.
  RTC_EXTERN void RTCLogEx(RTCLoggingSeverity severity, NSString* log_string);
  
  // Wrapper for rtc::LogMessage::LogToDebug.
  // Sets the minimum severity to be logged to console.
  RTC_EXTERN void RTCSetMinDebugLogLevel(RTCLoggingSeverity severity);
  
  // Returns the filename with the path prefix removed.
  RTC_EXTERN NSString* RTCFileName(const char* filePath);
  
  // Some convenience macros.
  
  #define RTCLogString(format, ...)                                           \
    [NSString stringWithFormat:@"(%@:%d %s): " format, RTCFileName(__FILE__), \
                               __LINE__, __FUNCTION__, ##__VA_ARGS__]
  
  #define RTCLogFormat(severity, format, ...)                     \
    do {                                                          \
      NSString* log_string = RTCLogString(format, ##__VA_ARGS__); \
      RTCLogEx(severity, log_string);                             \
    } while (false)
  
  #define RTCLogVerbose(format, ...) \
    RTCLogFormat(RTCLoggingSeverityVerbose, format, ##__VA_ARGS__)
  
  #define RTCLogInfo(format, ...) \
    RTCLogFormat(RTCLoggingSeverityInfo, format, ##__VA_ARGS__)
  
  #define RTCLogWarning(format, ...) \
    RTCLogFormat(RTCLoggingSeverityWarning, format, ##__VA_ARGS__)
  
  #define RTCLogError(format, ...) \
    RTCLogFormat(RTCLoggingSeverityError, format, ##__VA_ARGS__)
  
  #if !defined(NDEBUG)
  #define RTCLogDebug(format, ...) RTCLogInfo(format, ##__VA_ARGS__)
  #else
  #define RTCLogDebug(format, ...) \
    do {                           \
    } while (false)
  #endif
  
  #define RTCLog(format, ...) RTCLogInfo(format, ##__VA_ARGS__)
  