#if defined (_WIN32)
#define __unused
#endif
#if defined(COMMON_DIGEST_FUNCTIONS) || defined(COMMON_CMAC_FUNCTIONS) || defined(COMMON_GCM_FUNCTIONS) \
|| defined (COMMON_AESSHOEFLY_FUNCTIONS) || defined(COMMON_CASTSHOEFLY_FUNCTIONS) \
|| defined (COMMON_CRYPTOR_FUNCTIONS) || defined(COMMON_HMAC_FUNCTIONS) \
|| defined(COMMON_KEYDERIVATION_FUNCTIONS) || defined(COMMON_SYMMETRIC_KEYWRAP_FUNCTIONS) \
|| defined(COMMON_RSA_FUNCTIONS) || defined(COMMON_EC_FUNCTIONS) || defined(COMMON_DH_FUNCTIONS) \
|| defined(COMMON_BIGNUM_FUNCTIONS) || defined(COMMON_RANDOM_FUNCTIONS)
#define DIAGNOSTIC
#endif
#ifdef KERNEL
#include <stdarg.h>
#if DIAGNOSTIC
#define CC_DEBUG_LOG(lvl, fmt, ...) do { \
const char *lvl_type[] = { "INVALID", "DEBUG", "ERROR", "FAILURE" }; \
char fmtbuffer[256]; \
int l = lvl; \
\
if (l < 0 || l > 3) l = 0; \
snprintf(fmtbuffer, sizeof(fmtbuffer), \
"CommonCrypto Function: %s:%d (%s) - %s", __FILE__, __LINE__, \
lvl_type[l], fmt); \
printf(fmtbuffer, __VA_ARGS__); \
} while (0)
#else
#define CC_DEBUG_LOG(lvl,fmt,...) {}
#endif
#else //KERNEL
#ifdef DIAGNOSTIC
#include <os/log.h>
#define CC_DEBUG_LOG(lvl,fmt, ...) os_log(OS_LOG_TYPE_DEBUG, __FUNCTION__ ## " " ## fmt , __VA_ARGS__)
#else
#define CC_DEBUG_LOG(lvl,...) {}
#endif
#endif