PortAudio 2.0
pa_debugprint.h
Go to the documentation of this file.
1#ifndef PA_LOG_H
2#define PA_LOG_H
3/*
4 * Log file redirector function
5 * Copyright (c) 1999-2006 Ross Bencina, Phil Burk
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining
8 * a copy of this software and associated documentation files
9 * (the "Software"), to deal in the Software without restriction,
10 * including without limitation the rights to use, copy, modify, merge,
11 * publish, distribute, sublicense, and/or sell copies of the Software,
12 * and to permit persons to whom the Software is furnished to do so,
13 * subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be
16 * included in all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
23 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 */
26
27/*
28 * The text above constitutes the entire PortAudio license; however,
29 * the PortAudio community also makes the following non-binding requests:
30 *
31 * Any person wishing to distribute modifications to the Software is
32 * requested to send the modifications to the original developer so that
33 * they can be incorporated into the canonical version. It is also
34 * requested that these non-binding requests be included along with the
35 * license above.
36 */
37
43#ifdef __cplusplus
44extern "C"
45{
46#endif /* __cplusplus */
47
48
49
50void PaUtil_DebugPrint( const char *format, ... );
51
52
53/*
54 The basic format for log messages is described below. If you need to
55 add any log messages, please follow this format.
56
57 Function entry (void function):
58
59 "FunctionName called.\n"
60
61 Function entry (non void function):
62
63 "FunctionName called:\n"
64 "\tParam1Type param1: param1Value\n"
65 "\tParam2Type param2: param2Value\n" (etc...)
66
67
68 Function exit (no return value):
69
70 "FunctionName returned.\n"
71
72 Function exit (simple return value):
73
74 "FunctionName returned:\n"
75 "\tReturnType: returnValue\n"
76
77 If the return type is an error code, the error text is displayed in ()
78
79 If the return type is not an error code, but has taken a special value
80 because an error occurred, then the reason for the error is shown in []
81
82 If the return type is a struct ptr, the struct is dumped.
83
84 See the code below for examples
85*/
86
96#ifdef PA_ENABLE_DEBUG_OUTPUT
97#define PA_DEBUG(x) PaUtil_DebugPrint x ;
98#else
99#define PA_DEBUG(x)
100#endif
101
102
103#ifdef PA_LOG_API_CALLS
104#define PA_LOGAPI(x) PaUtil_DebugPrint x
105
106#define PA_LOGAPI_ENTER(functionName) PaUtil_DebugPrint( functionName " called.\n" )
107
108#define PA_LOGAPI_ENTER_PARAMS(functionName) PaUtil_DebugPrint( functionName " called:\n" )
109
110#define PA_LOGAPI_EXIT(functionName) PaUtil_DebugPrint( functionName " returned.\n" )
111
112#define PA_LOGAPI_EXIT_PAERROR( functionName, result ) \
113 PaUtil_DebugPrint( functionName " returned:\n" ); \
114 PaUtil_DebugPrint("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) )
115
116#define PA_LOGAPI_EXIT_T( functionName, resultFormatString, result ) \
117 PaUtil_DebugPrint( functionName " returned:\n" ); \
118 PaUtil_DebugPrint("\t" resultFormatString "\n", result )
119
120#define PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( functionName, positiveResultFormatString, result ) \
121 PaUtil_DebugPrint( functionName " returned:\n" ); \
122 if( result > 0 ) \
123 PaUtil_DebugPrint("\t" positiveResultFormatString "\n", result ); \
124 else \
125 PaUtil_DebugPrint("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) )
126#else
127#define PA_LOGAPI(x)
128#define PA_LOGAPI_ENTER(functionName)
129#define PA_LOGAPI_ENTER_PARAMS(functionName)
130#define PA_LOGAPI_EXIT(functionName)
131#define PA_LOGAPI_EXIT_PAERROR( functionName, result )
132#define PA_LOGAPI_EXIT_T( functionName, resultFormatString, result )
133#define PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( functionName, positiveResultFormatString, result )
134#endif
135
136
137typedef void (*PaUtilLogCallback ) (const char *log);
138
143
144
145
146#ifdef __cplusplus
147}
148#endif /* __cplusplus */
149#endif /* PA_LOG_H */
void(* PaUtilLogCallback)(const char *log)
Definition pa_debugprint.h:137
void PaUtil_SetDebugPrintFunction(PaUtilLogCallback cb)
Definition pa_debugprint.c:68
void PaUtil_DebugPrint(const char *format,...)
Definition pa_debugprint.c:88