00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __GPHOTO2_PORT_LOG_H__
00022 #define __GPHOTO2_PORT_LOG_H__
00023
00024 #include <stdarg.h>
00025
00026 typedef enum {
00027 GP_LOG_ERROR = 0,
00028 GP_LOG_VERBOSE = 1,
00029 GP_LOG_DEBUG = 2,
00030 GP_LOG_DATA = 3
00031 } GPLogLevel;
00032
00042 #define GP_LOG_ALL GP_LOG_DATA
00043
00044 typedef void (* GPLogFunc) (GPLogLevel level, const char *domain,
00045 const char *format, va_list args, void *data)
00046 #if (__GNUC__ >= 3)
00047 __attribute__((__format__(printf,3,0)))
00048 #endif
00049 ;
00050
00051 #ifndef DISABLE_DEBUGGING
00052
00053 int gp_log_add_func (GPLogLevel level, GPLogFunc func, void *data);
00054 int gp_log_remove_func (int id);
00055
00056
00057 void gp_log (GPLogLevel level, const char *domain,
00058 const char *format, ...)
00059 #ifdef __GNUC__
00060 __attribute__((__format__(printf,3,4)))
00061 #endif
00062 ;
00063 void gp_logv (GPLogLevel level, const char *domain, const char *format,
00064 va_list args)
00065 #ifdef __GNUC__
00066 __attribute__((__format__(printf,3,0)))
00067 #endif
00068 ;
00069 void gp_log_data (const char *domain, const char *data, unsigned int size);
00070
00082 #ifdef __GNUC__
00083 #define GP_LOG(level, msg, params...) \
00084 gp_log(level, GP_MODULE "/" __FILE__, msg, ##params)
00085
00086 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
00087 #define GP_LOG(level, ...) \
00088 gp_log(level, GP_MODULE "/" __FILE__, __VA_ARGS__)
00089
00090 #else
00091 # ifdef __GCC__
00092 # warning Disabling GP_LOG because variadic macros are not allowed
00093 # endif
00094 #define GP_LOG (void)
00095 #endif
00096
00108 #ifdef __GNUC__
00109 #define GP_DEBUG(msg, params...) \
00110 gp_log(GP_LOG_DEBUG, GP_MODULE "/" __FILE__, msg, ##params)
00111
00112 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
00113 #define GP_DEBUG(...) \
00114 gp_log(GP_LOG_DEBUG, GP_MODULE "/" __FILE__, __VA_ARGS__)
00115
00116 #else
00117 # ifdef __GCC__
00118 # warning Disabling GP_DEBUG because variadic macros are not allowed
00119 # endif
00120 #define GP_DEBUG (void)
00121 #endif
00122
00123 #else
00124
00125
00126 #define gp_log_add_func(level, func, data) (0)
00127 #define gp_log_remove_func(id) (0)
00128 #define gp_log(level, domain, format, args...)
00129 #define gp_logv(level, domain, format, args)
00130 #define gp_log_data(domain, data, size)
00131
00132 #ifdef __GNUC__
00133 #define GP_LOG(level, msg, params...)
00134 #define GP_DEBUG(msg, params...)
00135
00136 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
00137 #define GP_LOG(level, ...)
00138 #define GP_DEBUG(...)
00139
00140 #else
00141 #define GP_LOG (void)
00142 #define GP_DEBUG (void)
00143 #endif
00144
00145 #endif
00146
00147 #endif