/*
 * Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include <assert.h>
#include <autoconf.h>
#include <utils/gen_config.h>
#include <stdbool.h>

#include <utils/ansi.h>
#include <utils/arith.h>
#include <utils/assume.h>
#include <utils/attribute.h>
#include <utils/auto.h>
#include <utils/builtin.h>
#include <utils/compile_time.h>
#include <utils/config.h>
#include <utils/debug.h>
#include <utils/fence.h>
#include <utils/force.h>
#include <utils/formats.h>
#include <utils/frequency.h>
#include <utils/list.h>
#include <utils/math.h>
#include <utils/page.h>
#include <utils/print.h>
#include <utils/sglib.h>
#include <utils/stringify.h>
#include <utils/stack.h>
#include <utils/time.h>
#include <utils/ud.h>
#include <utils/xml.h>

#ifndef ZF_LOG_LEVEL
#ifdef _ZF_LOG_LEVEL
#warning "Attempted to set ZF_LOG_LEVEL but _ZF_LOG_LEVEL has already been defined." \
"Check that <utils/zf_log.h> hasn't been imported before this file, or define ZF_LOG_LEVEL explicitly before including <utils/zf_log.h>."
#endif
#define ZF_LOG_LEVEL CONFIG_LIB_UTILS_DEFAULT_ZF_LOG_LEVEL
#endif /* ZF_LOG_LEVEL */

#include <utils/zf_log.h>
#include <utils/zf_log_if.h>

/* deprecated, use the following instead:
 *
 * ZF_LOGV -- verbose
 * ZF_LOGD -- debug
 * ZF_LOGI -- info
 * ZF_LOGW -- warning
 * ZF_LOGE -- error
 * ZF_LOGF -- fatal
 *
 * setting ZF_LOG_LEVEL to ZF_LOG_VERBOSE will display
 * all ZF_LOG output, settings it to ZF_LOG_FATAL will
 * only display fatal outputs.
 */
#define LOG_ERROR(...) ZF_LOGE(__VA_ARGS__)
#define LOG_INFO(...) ZF_LOGI(__VA_ARGS__)
