#ifndef _CORECRYPTO_CCN_DEBUG_H_
#define _CORECRYPTO_CCN_DEBUG_H_
#include <corecrypto/cc_config.h>
#if CC_KERNEL
#include <pexpert/pexpert.h>
#define cc_printf(x...) kprintf(x)
extern int printf(const char *format, ...) __printflike(1,2);
#elif CC_USE_S3
#include <stdio.h>
#define cc_printf(x...) printf(x)
#else
#include <stdio.h>
#define cc_printf(x...) fprintf(stderr, x)
#endif
#if CC_KERNEL
#define PRIx64 "llx"
#define PRIx32 "x"
#define PRIx16 "hx"
#define PRIx8 "hhx"
#else
#include <inttypes.h>
#endif
#if CCN_UNIT_SIZE == 8
#define CCPRIx_UNIT ".016" PRIx64
#elif CCN_UNIT_SIZE == 4
#define CCPRIx_UNIT ".08" PRIx32
#elif CCN_UNIT_SIZE == 2
#define CCPRIx_UNIT ".04" PRIx16
#elif CCN_UNIT_SIZE == 1
#define CCPRIx_UNIT ".02" PRIx8
#else
#error invalid CCN_UNIT_SIZE
#endif
#include <corecrypto/cc.h>
void cc_print(const char *label, size_t count, const uint8_t *s);
#endif