gphoto2-port-log.h

Go to the documentation of this file.
00001 
00021 #ifndef __GPHOTO2_PORT_LOG_H__
00022 #define __GPHOTO2_PORT_LOG_H__
00023 
00024 #include <stdarg.h>
00025 
00030 typedef enum {
00031         GP_LOG_ERROR = 0,       
00032         GP_LOG_VERBOSE = 1,     
00033         GP_LOG_DEBUG = 2,       
00034         GP_LOG_DATA = 3         
00035 } GPLogLevel;
00036 
00046 #define GP_LOG_ALL GP_LOG_DATA
00047 
00062 typedef void (* GPLogFunc) (GPLogLevel level, const char *domain,
00063                             const char *format, va_list args, void *data)
00064 #if (__GNUC__ >= 3)
00065         __attribute__((__format__(printf,3,0)))
00066 #endif
00067 ;
00068 
00069 #ifndef DISABLE_DEBUGGING
00070 
00071 int  gp_log_add_func    (GPLogLevel level, GPLogFunc func, void *data);
00072 int  gp_log_remove_func (int id);
00073 
00074 /* Logging */
00075 void gp_log      (GPLogLevel level, const char *domain,
00076                   const char *format, ...)
00077 #ifdef __GNUC__
00078         __attribute__((__format__(printf,3,4)))
00079 #endif
00080 ;
00081 void gp_logv     (GPLogLevel level, const char *domain, const char *format,
00082                   va_list args)
00083 #ifdef __GNUC__
00084         __attribute__((__format__(printf,3,0)))
00085 #endif
00086 ;
00087 void gp_log_data (const char *domain, const char *data, unsigned int size);
00088 
00089 
00090 /*
00091  * GP_DEBUG:
00092  * msg: message to log
00093  * params: params to message
00094  *
00095  * Logs message at log level #GP_LOG_DEBUG by calling #gp_log() with
00096  * an automatically generated domain
00097  * You have to define GP_MODULE as "mymod" for your module
00098  * mymod before using #GP_DEBUG().
00099  */
00100 
00101 #ifdef _GPHOTO2_INTERNAL_CODE
00102 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
00103 #define GP_DEBUG(...) \
00104         gp_log(GP_LOG_DEBUG, GP_MODULE "/" __FILE__, __VA_ARGS__)
00105 #elif defined(__GNUC__) &&  __GNUC__ >= 2
00106 #define GP_DEBUG(msg, params...) \
00107         gp_log(GP_LOG_DEBUG, GP_MODULE "/" __FILE__, msg, ##params)
00108 #else
00109 # ifdef __GNUC__
00110 #  warning Disabling GP_DEBUG because variadic macros are not allowed
00111 # endif
00112 #define GP_DEBUG (void) 
00113 #endif
00114 #endif /* _GPHOTO2_INTERNAL_CODE */
00115 
00116 #else /* DISABLE_DEBUGGING */
00117 
00118 /* Stub these functions out if debugging is disabled */
00119 #define gp_log_add_func(level, func, data) (0)
00120 #define gp_log_remove_func(id) (0)
00121 #define gp_log(level, domain, format, args...) 
00122 #define gp_logv(level, domain, format, args) 
00123 #define gp_log_data(domain, data, size) 
00124 
00125 #ifdef _GPHOTO2_INTERNAL_CODE
00126 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
00127 #define GP_DEBUG(...) /* no-op */
00128 #elif defined(__GNUC__)
00129 #define GP_DEBUG(msg, params...) /* no-op */
00130 #else
00131 #define GP_DEBUG (void)
00132 #endif
00133 #endif /* _GPHOTO2_INTERNAL_CODE */
00134 
00135 #endif /* DISABLE_DEBUGGING */
00136 
00137 #ifdef _GPHOTO2_INTERNAL_CODE
00138 
00139   typedef struct StringFlagItem {
00140     char *str;
00141     unsigned int flag;
00142   } StringFlagItem;
00143 
00144   typedef void (*string_item_func) (const char *str, void *data);
00145 
00146   const char * 
00147   gpi_enum_to_string(const unsigned int _enum, 
00148                      const StringFlagItem *map);
00149 
00150   int
00151   gpi_string_to_enum(const char *str,
00152                      unsigned int *result,
00153                      const StringFlagItem *map);
00154 
00155   void 
00156   gpi_flags_to_string_list(const unsigned int flags, 
00157                            const StringFlagItem *map,
00158                            string_item_func func, void *data);
00159   
00160   int 
00161   gpi_string_or_to_flags(const char *str, 
00162                          unsigned int *flags,
00163                          const StringFlagItem *map);
00164 
00165   unsigned int 
00166   gpi_string_to_flag(const char *str, 
00167                      const StringFlagItem *map);
00168 
00169   unsigned int 
00170   gpi_string_list_to_flags(const char *str[], 
00171                            const StringFlagItem *map);
00172   
00173 #endif /* _GPHOTO2_INTERNAL_CODE */
00174 
00175 
00176 #endif /* __GPHOTO2_PORT_LOG_H__ */

Generated on Sun Jul 22 19:29:31 2007 for libgphoto2 photo camera library (libgphoto2) by  doxygen 1.5.0