// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIBCHROMEOS_BRILLO_LOCATION_LOGGING_H_
#define LIBCHROMEOS_BRILLO_LOCATION_LOGGING_H_

// These macros help to log Location objects in verbose mode.

#include <base/logging.h>

#define VLOG_LOC_STREAM(from_here, verbose_level)                       \
  logging::LogMessage(from_here.file_name(), from_here.line_number(),   \
                      -verbose_level).stream()

#define VLOG_LOC(from_here, verbose_level)                              \
  LAZY_STREAM(VLOG_LOC_STREAM(from_here, verbose_level),                \
              VLOG_IS_ON(verbose_level))

#define DVLOG_LOC(from_here, verbose_level)                             \
  LAZY_STREAM(VLOG_LOC_STREAM(from_here, verbose_level),                \
              ::logging::DEBUG_MODE && VLOG_IS_ON(verbose_level))

#endif  // LIBCHROMEOS_BRILLO_LOCATION_LOGGING_H_
