/**
 * \file config.h
 * \author Radek Krejci <rkrejci@cesnet.cz>
 * \brief libnetconf2 various configuration settings.
 *
 * Copyright (c) 2015 - 2017 CESNET, z.s.p.o.
 *
 * This source code is licensed under BSD 3-Clause License (the "License").
 * You may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://opensource.org/licenses/BSD-3-Clause
 */

#ifndef NC_CONFIG_H_
#define NC_CONFIG_H_

/*
 * Mark all objects as hidden and export only objects explicitly marked to be part of the public API or
 * those marked as mock objects for testing purpose
 */
#define API __attribute__((visibility("default")))
#define MOCK __attribute__((visibility("default")))

#ifdef __GNUC__
#  define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
#else
#  define UNUSED(x) UNUSED_ ## x
#endif

/*
 * Support for atomic variables
 */
#cmakedefine HAVE_STDATOMIC
#ifdef HAVE_STDATOMIC
# include <stdatomic.h>
# include <stdint.h>

# define ATOMIC_UINT32_T atomic_uint_fast32_t
# define ATOMIC_PTR atomic_uintptr_t
# define ATOMIC_STORE(x, val) atomic_store(&(x), (val))
# define ATOMIC_LOAD(x) atomic_load((atomic_uintptr_t *)&(x))
# define ATOMIC_INC(x) atomic_fetch_add(&(x), 1)
#else
# define ATOMIC_UINT32_T uint32_t
# define ATOMIC_PTR void *
# define ATOMIC_STORE(x, val) (x) = (val)
# define ATOMIC_LOAD(x) (x)
# define ATOMIC_INC(x) __sync_add_and_fetch(&(x), 1)
#endif

/*
 * support for pthread_mutex_timedlock
 */
#cmakedefine HAVE_PTHREAD_MUTEX_TIMEDLOCK

/*
 * Support for getpeereid
 */
#cmakedefine HAVE_GETPEEREID

/*
 * Support for shadow file manipulation
 */
#cmakedefine HAVE_SHADOW

/*
 * Support for crypt.h
 */
#cmakedefine HAVE_CRYPT

/*
 * Location of installed basic YANG modules on the system
 */
#define NC_YANG_DIR "@YANG_MODULE_DIR@"

/*
 * Inactive read timeout
 */
#define NC_READ_INACT_TIMEOUT @READ_INACTIVE_TIMEOUT@

/*
 * Active read timeout in seconds
 * (also used for internal <get-schema> RPC reply timeout)
 */
#define NC_READ_ACT_TIMEOUT @READ_ACTIVE_TIMEOUT@

/*
 * pspoll structure queue size (also found in nc_server.h)
 */
#define NC_PS_QUEUE_SIZE @MAX_PSPOLL_THREAD_COUNT@

/* Microseconds after which tasks are repeated until the full timeout elapses.
 * A millisecond (1000) should be divisible by this number without remain.
 */
#define NC_TIMEOUT_STEP @TIMEOUT_STEP@

/* Portability feature-check macros. */
#cmakedefine HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP

#endif /* NC_CONFIG_H_ */
