Update to 2.0.0 tree from current Fremantle build
[opencv] / 3rdparty / flann / util / logger.cpp
1 /***********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright 2008-2009  Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
5  * Copyright 2008-2009  David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
6  *
7  * THE BSD LICENSE
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *************************************************************************/
30
31 #include "logger.h"
32
33 #include <cstdio>
34 #include <cstdarg>
35 #include <sstream>
36
37 using namespace std;
38
39 namespace flann
40 {
41
42 Logger logger;
43
44 int Logger::log(int level, const char* fmt, ...)
45 {
46     if (level > logLevel ) return -1;
47
48     int ret;
49     va_list arglist;
50     va_start(arglist, fmt);
51     ret = vfprintf(stream, fmt, arglist);
52     va_end(arglist);
53
54     return ret;
55 }
56
57 int Logger::log(int level, const char* fmt, va_list arglist)
58 {
59     if (level > logLevel ) return -1;
60
61     int ret;
62     ret = vfprintf(stream, fmt, arglist);
63
64     return ret;
65 }
66
67
68 #define LOG_METHOD(NAME,LEVEL) \
69     int Logger::NAME(const char* fmt, ...) \
70     { \
71         int ret; \
72         va_list ap; \
73         va_start(ap, fmt); \
74         ret = log(LEVEL, fmt, ap); \
75         va_end(ap); \
76         return ret; \
77     }
78
79
80 LOG_METHOD(fatal, LOG_FATAL)
81 LOG_METHOD(error, LOG_ERROR)
82 LOG_METHOD(warn, LOG_WARN)
83 LOG_METHOD(info, LOG_INFO)
84
85 }