23#ifndef DUK_DEBUG_H_INCLUDED
24#define DUK_DEBUG_H_INCLUDED
28#if defined(DUK_USE_DPRINT)
31#define DUK_D(x) do { } while (0)
34#if defined(DUK_USE_DDPRINT)
37#define DUK_DD(x) do { } while (0)
40#if defined(DUK_USE_DDDPRINT)
43#define DUK_DDD(x) do { } while (0)
50#define DUK_LEVEL_DEBUG 1
51#define DUK_LEVEL_DDEBUG 2
52#define DUK_LEVEL_DDDEBUG 3
54#ifdef DUK_USE_VARIADIC_MACROS
59#define DUK__DEBUG_LOG(lev,...) duk_debug_log((duk_small_int_t) (lev), DUK_FILE_MACRO, (duk_int_t) DUK_LINE_MACRO, DUK_FUNC_MACRO, __VA_ARGS__);
61#define DUK_DPRINT(...) DUK__DEBUG_LOG(DUK_LEVEL_DEBUG, __VA_ARGS__)
64#define DUK_DDPRINT(...) DUK__DEBUG_LOG(DUK_LEVEL_DDEBUG, __VA_ARGS__)
66#define DUK_DDPRINT(...)
69#ifdef DUK_USE_DDDPRINT
70#define DUK_DDDPRINT(...) DUK__DEBUG_LOG(DUK_LEVEL_DDDEBUG, __VA_ARGS__)
72#define DUK_DDDPRINT(...)
77#define DUK__DEBUG_STASH(lev) \
78 (void) DUK_SNPRINTF(duk_debug_file_stash, DUK_DEBUG_STASH_SIZE, "%s", (const char *) DUK_FILE_MACRO), \
79 duk_debug_file_stash[DUK_DEBUG_STASH_SIZE - 1] = (char) 0; \
80 (void) DUK_SNPRINTF(duk_debug_line_stash, DUK_DEBUG_STASH_SIZE, "%ld", (long) DUK_LINE_MACRO), \
81 duk_debug_line_stash[DUK_DEBUG_STASH_SIZE - 1] = (char) 0; \
82 (void) DUK_SNPRINTF(duk_debug_func_stash, DUK_DEBUG_STASH_SIZE, "%s", (const char *) DUK_FUNC_MACRO), \
83 duk_debug_func_stash[DUK_DEBUG_STASH_SIZE - 1] = (char) 0; \
84 (void) (duk_debug_level_stash = (lev))
93#define DUK_DPRINT DUK__DEBUG_STASH(DUK_LEVEL_DEBUG), (void) duk_debug_log
95#define DUK_DPRINT 0 &&
99#define DUK_DDPRINT DUK__DEBUG_STASH(DUK_LEVEL_DDEBUG), (void) duk_debug_log
101#define DUK_DDPRINT 0 &&
104#ifdef DUK_USE_DDDPRINT
105#define DUK_DDDPRINT DUK__DEBUG_STASH(DUK_LEVEL_DDDEBUG), (void) duk_debug_log
107#define DUK_DDDPRINT 0 &&
118#define DUK_D(x) do { } while (0)
119#define DUK_DD(x) do { } while (0)
120#define DUK_DDD(x) do { } while (0)
122#ifdef DUK_USE_VARIADIC_MACROS
124#define DUK_DPRINT(...)
125#define DUK_DDPRINT(...)
126#define DUK_DDDPRINT(...)
130#define DUK_DPRINT 0 &&
131#define DUK_DDPRINT 0 &&
132#define DUK_DDDPRINT 0 &&
143struct duk_fixedbuffer {
162#ifdef DUK_USE_VARIADIC_MACROS
166#define DUK_DEBUG_STASH_SIZE 128
167#if !defined(DUK_SINGLE_FILE)
#define DUK_INTERNAL_DECL
duk_int_fast32_t duk_int_t
duk_small_int_t duk_bool_t
json_t format(printf, 1, 2)))