1// Copyright 2017 The Fuchsia Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#pragma once 6 7#include <inttypes.h> 8#include <stdio.h> 9 10// TODO(johngro) : replace this with a system which... 11// 12// 1) Uses low overhead loging service infrastructure instead of printf. 13// 2) Uses C/C++ functions (either template parameter packs, or c-style 14// var-args) instead of preprocessor macros. 15 16#define VERBOSE_LOGGING 0 17#define DEBUG_LOGGING (VERBOSE_LOGGING || 0) 18 19#define LOG_EX(obj, ...) do { \ 20 (obj).PrintDebugPrefix(); \ 21 printf(__VA_ARGS__); \ 22} while (false) 23 24#define LOG(...) LOG_EX(*this, __VA_ARGS__) 25 26#define DEBUG_LOG_EX(obj, ...) do { \ 27 if (DEBUG_LOGGING) { \ 28 (obj).PrintDebugPrefix(); \ 29 printf(__VA_ARGS__); \ 30 } \ 31} while (false) 32 33#define DEBUG_LOG(...) DEBUG_LOG_EX(*this, __VA_ARGS__) 34 35#define VERBOSE_LOG_EX(obj, ...) do { \ 36 if (VERBOSE_LOGGING) { \ 37 (obj).PrintDebugPrefix(); \ 38 printf(__VA_ARGS__); \ 39 } \ 40} while (false) 41 42#define VERBOSE_LOG(...) VERBOSE_LOG_EX(*this, __VA_ARGS__) 43