Joe Verbout
/
main
opencv on mbed
Embed:
(wiki syntax)
Show/hide line numbers
logger.h
00001 /*********************************************************************** 00002 * Software License Agreement (BSD License) 00003 * 00004 * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. 00005 * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. 00006 * 00007 * THE BSD LICENSE 00008 * 00009 * Redistribution and use in source and binary forms, with or without 00010 * modification, are permitted provided that the following conditions 00011 * are met: 00012 * 00013 * 1. Redistributions of source code must retain the above copyright 00014 * notice, this list of conditions and the following disclaimer. 00015 * 2. Redistributions in binary form must reproduce the above copyright 00016 * notice, this list of conditions and the following disclaimer in the 00017 * documentation and/or other materials provided with the distribution. 00018 * 00019 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 00020 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00021 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 00022 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 00023 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 00024 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00025 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00026 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00027 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 00028 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00029 *************************************************************************/ 00030 00031 #ifndef OPENCV_FLANN_LOGGER_H 00032 #define OPENCV_FLANN_LOGGER_H 00033 00034 #include <stdio.h> 00035 #include <stdarg.h> 00036 00037 #include "defines.h" 00038 00039 00040 namespace cvflann 00041 { 00042 00043 class Logger 00044 { 00045 Logger() : stream(stdout), logLevel(FLANN_LOG_WARN) {} 00046 00047 ~Logger() 00048 { 00049 if ((stream!=NULL)&&(stream!=stdout)) { 00050 fclose(stream); 00051 } 00052 } 00053 00054 static Logger& instance() 00055 { 00056 static Logger logger; 00057 return logger; 00058 } 00059 00060 void _setDestination(const char* name) 00061 { 00062 if (name==NULL) { 00063 stream = stdout; 00064 } 00065 else { 00066 stream = fopen(name,"w"); 00067 if (stream == NULL) { 00068 stream = stdout; 00069 } 00070 } 00071 } 00072 00073 int _log(int level, const char* fmt, va_list arglist) 00074 { 00075 if (level > logLevel ) return -1; 00076 int ret = vfprintf(stream, fmt, arglist); 00077 return ret; 00078 } 00079 00080 public: 00081 /** 00082 * Sets the logging level. All messages with lower priority will be ignored. 00083 * @param level Logging level 00084 */ 00085 static void setLevel(int level) { instance().logLevel = level; } 00086 00087 /** 00088 * Sets the logging destination 00089 * @param name Filename or NULL for console 00090 */ 00091 static void setDestination(const char* name) { instance()._setDestination(name); } 00092 00093 /** 00094 * Print log message 00095 * @param level Log level 00096 * @param fmt Message format 00097 * @return 00098 */ 00099 static int log(int level, const char* fmt, ...) 00100 { 00101 va_list arglist; 00102 va_start(arglist, fmt); 00103 int ret = instance()._log(level,fmt,arglist); 00104 va_end(arglist); 00105 return ret; 00106 } 00107 00108 #define LOG_METHOD(NAME,LEVEL) \ 00109 static int NAME(const char* fmt, ...) \ 00110 { \ 00111 va_list ap; \ 00112 va_start(ap, fmt); \ 00113 int ret = instance()._log(LEVEL, fmt, ap); \ 00114 va_end(ap); \ 00115 return ret; \ 00116 } 00117 00118 LOG_METHOD(fatal, FLANN_LOG_FATAL) 00119 LOG_METHOD(error, FLANN_LOG_ERROR) 00120 LOG_METHOD(warn, FLANN_LOG_WARN) 00121 LOG_METHOD(info, FLANN_LOG_INFO) 00122 00123 private: 00124 FILE* stream; 00125 int logLevel; 00126 }; 00127 00128 } 00129 00130 #endif //OPENCV_FLANN_LOGGER_H 00131
Generated on Tue Jul 12 2022 16:42:38 by 1.7.2