Adaptive Framework  0.9.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
afw_debug.h
Go to the documentation of this file.
1 //>>> See COPYING at repository root
2 /*
3  * Adaptive Framework Software Debug Header
4  *
5  * Copyright (c) 2010-2023 Clemson University
6  *
7  */
8 
9 #ifndef __AFW_DEBUG_H__
10 #define __AFW_DEBUG_H__
11 
12 #include "afw_interface.h"
13 
37 
47 #define AFW_DEBUG_STATIC_DEBUG_ID(label, debug_id) \
48 static const afw_interface_implementation_rti_t label = \
49  {"afw_debug_id", __FILE__, debug_id};
50 
51 
59 #define afw_debug(flag_index, instance, message, xctx) \
60  if ((flag_index) < (xctx)->flags_count && (xctx)->flags[flag_index]) \
61  afw_debug_write( \
62  ((instance) ? \
63  &((const afw_instance_t *)instance)->inf->rti \
64  : NULL), \
65  AFW__FILE_LINE__, message, xctx)
66 
67 
76 #define afw_debug_fz(flag_index, instance, xctx, format_z, ...) \
77  if ((flag_index) < (xctx)->flags_count && (xctx)->flags[flag_index]) \
78  afw_debug_write_fz( \
79  ((instance) ? \
80  &((const afw_instance_t *)instance)->inf->rti \
81  : NULL), \
82  AFW__FILE_LINE__, xctx, format_z, __VA_ARGS__)
83  /*
84  afw_debug_write_fz( \
85  (instance) ? &(instance)->inf->rti : NULL, \
86  AFW__FILE_LINE__, xctx, format_z, __VA_ARGS__)
87  */
88 
89 
90 
99 #define afw_debug_vz(flag_index, instance, format_z, ap, xctx) \
100  if ((flag_index) < (xctx)->flags_count && (xctx)->flags[flag_index]) \
101  afw_debug_write_vz( \
102  ((instance) ? \
103  &((const afw_instance_t *)instance)->inf->rti \
104  : NULL), \
105  AFW__FILE_LINE__, format_z, ap, xctx)
106 
107 
115 #define afw_debug_z(flag_index, instance, message_z, xctx) \
116  if ((flag_index) < (xctx)->flags_count && (xctx)->flags[flag_index]) \
117  afw_debug_write_z( \
118  ((instance) ? \
119  &((const afw_instance_t *)instance)->inf->rti \
120  : NULL), \
121  AFW__FILE_LINE__, message_z, xctx)
122 
123 
133 AFW_DECLARE(void)
136  const afw_utf8_z_t *source_z,
137  const afw_utf8_t *message,
138  afw_xctx_t *xctx);
139 
140 
151 AFW_DECLARE(void)
154  const afw_utf8_z_t *source_z,
155  afw_xctx_t *xctx,
156  const afw_utf8_z_t *format_z,
157  ...);
158 
159 
170 AFW_DECLARE(void)
173  const afw_utf8_z_t *source_z,
174  const afw_utf8_z_t *format_z,
175  va_list ap,
176  afw_xctx_t *xctx);
177 
178 
188 AFW_DECLARE(void)
191  const afw_utf8_z_t *source_z,
192  const afw_utf8_z_t *message_z,
193  afw_xctx_t *xctx);
194 
195 
196 AFW_END_DECLARES
197 
200 #endif /* __AFW_DEBUG_H__ */
#define AFW_BEGIN_DECLARES
#define AFW_DECLARE(type)
Declare a public afw function.
Interfaceafw_interface header.
afw_utf8_octet_t afw_utf8_z_t
NFC normalized UTF-8 null terminated string.
Definition: afw_common.h:523
void afw_debug_write_z(const afw_interface_implementation_rti_t *rti, const afw_utf8_z_t *source_z, const afw_utf8_z_t *message_z, afw_xctx_t *xctx)
Write debug from zero terminate string.
Definition: afw_debug.c:81
void afw_debug_write_vz(const afw_interface_implementation_rti_t *rti, const afw_utf8_z_t *source_z, const afw_utf8_z_t *format_z, va_list ap, afw_xctx_t *xctx)
Write debug using a printf style format and va_list.
Definition: afw_debug.c:66
void afw_debug_write(const afw_interface_implementation_rti_t *rti, const afw_utf8_z_t *source_z, const afw_utf8_t *message, afw_xctx_t *xctx)
Write debug.
Definition: afw_debug.c:21
void afw_debug_write_fz(const afw_interface_implementation_rti_t *rti, const afw_utf8_z_t *source_z, afw_xctx_t *xctx, const afw_utf8_z_t *format_z,...)
Write debug using a printf style format.
Definition: afw_debug.c:46
Interface Implementation Run Time Information.
NFC normalized UTF-8 string.
Definition: afw_common.h:545
Interface afw_xctx public struct.