Point Cloud Library (PCL) 1.13.0
print.h
1/*
2 * Software License Agreement (BSD License)
3 *
4 * Copyright (c) 2010, Willow Garage, Inc.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 * * Neither the name of the copyright holder(s) nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 *
34 * $Id$
35 *
36 */
37
38#pragma once
39
40#include <cstdio>
41
42#include <pcl/pcl_exports.h>
43#include <pcl/pcl_config.h>
44
45// Use e.g. like this:
46// PCL_INFO_STREAM("Info: this is a point: " << pcl::PointXYZ(1.0, 2.0, 3.0) << std::endl);
47// PCL_ERROR_STREAM("Error: an Eigen vector: " << std::endl << Eigen::Vector3f(1.0, 2.0, 3.0) << std::endl);
48#define PCL_LOG_STREAM(LEVEL, STREAM, CSTR, ATTR, FG, ARGS) if(pcl::console::isVerbosityLevelEnabled(pcl::console::LEVEL)) { fflush(stdout); pcl::console::change_text_color(CSTR, pcl::console::ATTR, pcl::console::FG); STREAM << ARGS; pcl::console::reset_text_color(CSTR); }
49#define PCL_ALWAYS_STREAM(ARGS) PCL_LOG_STREAM(L_ALWAYS, std::cout, stdout, TT_RESET, TT_WHITE, ARGS)
50#define PCL_ERROR_STREAM(ARGS) PCL_LOG_STREAM(L_ERROR, std::cerr, stderr, TT_BRIGHT, TT_RED, ARGS)
51#define PCL_WARN_STREAM(ARGS) PCL_LOG_STREAM(L_WARN, std::cerr, stderr, TT_BRIGHT, TT_YELLOW, ARGS)
52#define PCL_INFO_STREAM(ARGS) PCL_LOG_STREAM(L_INFO, std::cout, stdout, TT_RESET, TT_WHITE, ARGS)
53#define PCL_DEBUG_STREAM(ARGS) PCL_LOG_STREAM(L_DEBUG, std::cout, stdout, TT_RESET, TT_GREEN, ARGS)
54#define PCL_VERBOSE_STREAM(ARGS) PCL_LOG_STREAM(L_VERBOSE, std::cout, stdout, TT_RESET, TT_WHITE, ARGS)
55
56
57#define PCL_ALWAYS(...) pcl::console::print (pcl::console::L_ALWAYS, __VA_ARGS__)
58#define PCL_ERROR(...) pcl::console::print (pcl::console::L_ERROR, __VA_ARGS__)
59#define PCL_WARN(...) pcl::console::print (pcl::console::L_WARN, __VA_ARGS__)
60#define PCL_INFO(...) pcl::console::print (pcl::console::L_INFO, __VA_ARGS__)
61#define PCL_DEBUG(...) pcl::console::print (pcl::console::L_DEBUG, __VA_ARGS__)
62#define PCL_VERBOSE(...) pcl::console::print (pcl::console::L_VERBOSE, __VA_ARGS__)
63
64#define PCL_ASSERT_ERROR_PRINT_CHECK(pred, msg) \
65 do \
66 { \
67 if (!(pred)) \
68 { \
69 PCL_ERROR(msg); \
70 PCL_ERROR("In File %s, in line %d\n" __FILE__, __LINE__); \
71 } \
72 } while (0)
73
74#define PCL_ASSERT_ERROR_PRINT_RETURN(pred, msg, err) \
75 do \
76 { \
77 PCL_ASSERT_ERROR_PRINT_CHECK(pred, msg); \
78 if (!(pred)) return err; \
79 } while (0)
80
81namespace pcl
82{
83 namespace console
84 {
86 {
89 TT_DIM = 2,
93 TT_HIDDEN = 8
94 };
95
97 {
106 };
107
109 {
116 };
117
118 /** set the verbosity level */
119 PCL_EXPORTS void
121
122 /** get the verbosity level. */
125
126 /** initialize verbosity level. */
127 PCL_EXPORTS bool
129
130 /** is verbosity level enabled? */
131 PCL_EXPORTS bool
133
134 /** \brief Enable or disable colored text output, overriding the default behavior.
135 *
136 * By default, colored output is enabled for interactive terminals or when the environment
137 * variable PCL_CLICOLOR_FORCE is set.
138 *
139 * \param stream the output stream (stdout, stderr, etc)
140 * \param enable whether to emit color codes when calling any of the color related methods
141 */
142 PCL_EXPORTS void
143 enableColoredOutput (FILE *stream, bool enable);
144
145 /** \brief Change the text color (on either stdout or stderr) with an attr:fg:bg
146 * \param stream the output stream (stdout, stderr, etc)
147 * \param attribute the text attribute
148 * \param fg the foreground color
149 * \param bg the background color
150 */
151 PCL_EXPORTS void
152 change_text_color (FILE *stream, int attribute, int fg, int bg);
153
154 /** \brief Change the text color (on either stdout or stderr) with an attr:fg
155 * \param stream the output stream (stdout, stderr, etc)
156 * \param attribute the text attribute
157 * \param fg the foreground color
158 */
159 PCL_EXPORTS void
160 change_text_color (FILE *stream, int attribute, int fg);
161
162 /** \brief Reset the text color (on either stdout or stderr) to its original state
163 * \param stream the output stream (stdout, stderr, etc)
164 */
165 PCL_EXPORTS void
166 reset_text_color (FILE *stream);
167
168 /** \brief Print a message on stream with colors
169 * \param stream the output stream (stdout, stderr, etc)
170 * \param attr the text attribute
171 * \param fg the foreground color
172 * \param format the message
173 */
174 PCL_EXPORTS void
175 print_color (FILE *stream, int attr, int fg, const char *format, ...);
176
177 /** \brief Print an info message on stream with colors
178 * \param format the message
179 */
180 PCL_EXPORTS void
181 print_info (const char *format, ...);
182
183 /** \brief Print an info message on stream with colors
184 * \param stream the output stream (stdout, stderr, etc)
185 * \param format the message
186 */
187 PCL_EXPORTS void
188 print_info (FILE *stream, const char *format, ...);
189
190 /** \brief Print a highlighted info message on stream with colors
191 * \param format the message
192 */
193 PCL_EXPORTS void
194 print_highlight (const char *format, ...);
195
196 /** \brief Print a highlighted info message on stream with colors
197 * \param stream the output stream (stdout, stderr, etc)
198 * \param format the message
199 */
200 PCL_EXPORTS void
201 print_highlight (FILE *stream, const char *format, ...);
202
203 /** \brief Print an error message on stream with colors
204 * \param format the message
205 */
206 PCL_EXPORTS void
207 print_error (const char *format, ...);
208
209 /** \brief Print an error message on stream with colors
210 * \param stream the output stream (stdout, stderr, etc)
211 * \param format the message
212 */
213 PCL_EXPORTS void
214 print_error (FILE *stream, const char *format, ...);
215
216 /** \brief Print a warning message on stream with colors
217 * \param format the message
218 */
219 PCL_EXPORTS void
220 print_warn (const char *format, ...);
221
222 /** \brief Print a warning message on stream with colors
223 * \param stream the output stream (stdout, stderr, etc)
224 * \param format the message
225 */
226 PCL_EXPORTS void
227 print_warn (FILE *stream, const char *format, ...);
228
229 /** \brief Print a debug message on stream with colors
230 * \param format the message
231 */
232 PCL_EXPORTS void
233 print_debug (const char *format, ...);
234
235 /** \brief Print a debug message on stream with colors
236 * \param stream the output stream (stdout, stderr, etc)
237 * \param format the message
238 */
239 PCL_EXPORTS void
240 print_debug (FILE *stream, const char *format, ...);
241
242
243 /** \brief Print a value message on stream with colors
244 * \param format the message
245 */
246 PCL_EXPORTS void
247 print_value (const char *format, ...);
248
249 /** \brief Print a value message on stream with colors
250 * \param stream the output stream (stdout, stderr, etc)
251 * \param format the message
252 */
253 PCL_EXPORTS void
254 print_value (FILE *stream, const char *format, ...);
255
256 /** \brief Print a message on stream
257 * \param level the verbosity level
258 * \param stream the output stream (stdout, stderr, etc)
259 * \param format the message
260 */
261 PCL_EXPORTS void
262 print (VERBOSITY_LEVEL level, FILE *stream, const char *format, ...);
263
264 /** \brief Print a message
265 * \param level the verbosity level
266 * \param format the message
267 */
268 PCL_EXPORTS void
269 print (VERBOSITY_LEVEL level, const char *format, ...);
270 }
271}
PCL_EXPORTS void enableColoredOutput(FILE *stream, bool enable)
Enable or disable colored text output, overriding the default behavior.
PCL_EXPORTS void print_color(FILE *stream, int attr, int fg, const char *format,...)
Print a message on stream with colors.
PCL_EXPORTS void setVerbosityLevel(VERBOSITY_LEVEL level)
set the verbosity level
PCL_EXPORTS void print_debug(const char *format,...)
Print a debug message on stream with colors.
PCL_EXPORTS void print(VERBOSITY_LEVEL level, FILE *stream, const char *format,...)
Print a message on stream.
PCL_EXPORTS void print_highlight(const char *format,...)
Print a highlighted info message on stream with colors.
PCL_EXPORTS bool isVerbosityLevelEnabled(VERBOSITY_LEVEL severity)
is verbosity level enabled?
PCL_EXPORTS void reset_text_color(FILE *stream)
Reset the text color (on either stdout or stderr) to its original state.
PCL_EXPORTS void print_warn(const char *format,...)
Print a warning message on stream with colors.
PCL_EXPORTS void print_error(const char *format,...)
Print an error message on stream with colors.
TT_ATTIBUTES
Definition: print.h:86
@ TT_HIDDEN
Definition: print.h:93
@ TT_DIM
Definition: print.h:89
@ TT_BLINK
Definition: print.h:91
@ TT_BRIGHT
Definition: print.h:88
@ TT_RESET
Definition: print.h:87
@ TT_UNDERLINE
Definition: print.h:90
@ TT_REVERSE
Definition: print.h:92
VERBOSITY_LEVEL
Definition: print.h:109
@ L_ALWAYS
Definition: print.h:110
@ L_VERBOSE
Definition: print.h:115
PCL_EXPORTS void change_text_color(FILE *stream, int attribute, int fg, int bg)
Change the text color (on either stdout or stderr) with an attr:fg:bg.
@ TT_GREEN
Definition: print.h:100
@ TT_WHITE
Definition: print.h:105
@ TT_BLACK
Definition: print.h:98
@ TT_MAGENTA
Definition: print.h:103
@ TT_RED
Definition: print.h:99
@ TT_YELLOW
Definition: print.h:101
PCL_EXPORTS void print_info(const char *format,...)
Print an info message on stream with colors.
PCL_EXPORTS VERBOSITY_LEVEL getVerbosityLevel()
get the verbosity level.
PCL_EXPORTS void print_value(const char *format,...)
Print a value message on stream with colors.
PCL_EXPORTS bool initVerbosityLevel()
initialize verbosity level.
#define PCL_EXPORTS
Definition: pcl_macros.h:323