Adaptive Framework  0.9.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
afw_trace.h
Go to the documentation of this file.
1 // See the 'COPYING' file in the project root for licensing information.
2 /*
3  * Adaptive Framework Software Trace Header
4  *
5  * Copyright (c) 2010-2023 Clemson University
6  *
7  */
8 
9 #ifndef __AFW_TRACE_H__
10 #define __AFW_TRACE_H__
11 
12 #include "afw_interface.h"
13 
38 
48 #define AFW_TRACE_STATIC_TRACE_ID(label, trace_id) \
49 static const afw_interface_implementation_rti_t label = \
50  {"afw_trace_id", __FILE__, trace_id};
51 
52 
65 #define afw_trace(trace_level, flag_index, instance, message, xctx) \
66  if ((flag_index) < (xctx)->flags_count && (xctx)->flags[flag_index]) \
67  afw_trace_write( \
68  afw_log_priority_trace##trace_level, \
69  ((instance) ? \
70  &((const afw_instance_t *)instance)->inf->rti \
71  : NULL), \
72  AFW__FILE_LINE__, message, xctx)
73 
74 
88 #define afw_trace_fz(trace_level, flag_index, instance, xctx, format_z, ...) \
89  if ((flag_index) < (xctx)->flags_count && (xctx)->flags[flag_index]) \
90  afw_trace_write_fz( \
91  afw_log_priority_trace##trace_level, \
92  ((instance) ? \
93  &((const afw_instance_t *)instance)->inf->rti \
94  : NULL), \
95  AFW__FILE_LINE__, xctx, format_z, __VA_ARGS__)
96 
97 
111 #define afw_trace_vz(trace_level, flag_index, instance, format_z, ap, xctx) \
112  if ((flag_index) < (xctx)->flags_count && (xctx)->flags[flag_index]) \
113  afw_trace_write_vz( \
114  afw_log_priority_trace##trace_level, \
115  ((instance) ? \
116  &((const afw_instance_t *)instance)->inf->rti \
117  : NULL), \
118  AFW__FILE_LINE__, format_z, ap, xctx)
119 
120 
133 #define afw_trace_z(trace_level, flag_index, instance, message_z, xctx) \
134  if ((flag_index) < (xctx)->flags_count && (xctx)->flags[flag_index]) \
135  afw_trace_write_z( \
136  afw_log_priority_trace##trace_level, \
137  ((instance) ? \
138  &((const afw_instance_t *)instance)->inf->rti \
139  : NULL), \
140  AFW__FILE_LINE__, message_z, xctx)
141 
142 
153 AFW_DECLARE(void)
155  afw_log_priority_t priority,
157  const afw_utf8_z_t *source_z,
158  const afw_utf8_t *message,
159  afw_xctx_t *xctx);
160 
161 
173 AFW_DECLARE(void)
175  afw_log_priority_t priority,
177  const afw_utf8_z_t *source_z,
178  afw_xctx_t *xctx,
179  const afw_utf8_z_t *format_z,
180  ...);
181 
182 
194 AFW_DECLARE(void)
196  afw_log_priority_t priority,
198  const afw_utf8_z_t *source_z,
199  const afw_utf8_z_t *format_z,
200  va_list ap,
201  afw_xctx_t *xctx);
202 
203 
214 AFW_DECLARE(void)
216  afw_log_priority_t priority,
218  const afw_utf8_z_t *source_z,
219  const afw_utf8_z_t *message_z,
220  afw_xctx_t *xctx);
221 
222 
223 AFW_END_DECLARES
224 
227 #endif /* __AFW_TRACE_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
enum afw_log_priority_e afw_log_priority_t
Log levels. See afw_log.h for more information.
void afw_trace_write(afw_log_priority_t priority, const afw_interface_implementation_rti_t *rti, const afw_utf8_z_t *source_z, const afw_utf8_t *message, afw_xctx_t *xctx)
Write trace.
Definition: afw_trace.c:21
void afw_trace_write_fz(afw_log_priority_t priority, 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 trace using a printf style format.
Definition: afw_trace.c:45
void afw_trace_write_z(afw_log_priority_t priority, 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 trace from zero terminate string.
Definition: afw_trace.c:81
void afw_trace_write_vz(afw_log_priority_t priority, 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 trace using a printf style format and va_list.
Definition: afw_trace.c:65
Interface Implementation Run Time Information.
NFC normalized UTF-8 string.
Definition: afw_common.h:545
Interface afw_xctx public struct.