PostGIS 3.0.6dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches
lwgeom_log.h
Go to the documentation of this file.
1/**********************************************************************
2 *
3 * PostGIS - Spatial Types for PostgreSQL
4 * http://postgis.net
5 *
6 * PostGIS is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * PostGIS is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with PostGIS. If not, see <http://www.gnu.org/licenses/>.
18 *
19 **********************************************************************
20 *
21 * Copyright 2011 Sandro Santilli <strk@kbt.io>
22 * Copyright 2008 Paul Ramsey <pramsey@cleverelephant.ca>
23 * Copyright 2007-2008 Mark Cave-Ayland
24 * Copyright 2001-2006 Refractions Research Inc.
25 *
26 **********************************************************************/
27
28
29#ifndef LWGEOM_LOG_H
30#define LWGEOM_LOG_H 1
31
32#include <stdarg.h>
33
34/*
35 * Debug macros
36 */
37#if POSTGIS_DEBUG_LEVEL > 0
38
39/* Display a notice at the given debug level */
40#define LWDEBUG(level, msg) \
41 do { \
42 if (POSTGIS_DEBUG_LEVEL >= level) \
43 lwdebug(level, "[%s:%s:%d] " msg, __FILE__, __func__, __LINE__); \
44 } while (0);
45
46/* Display a formatted notice at the given debug level
47 * (like printf, with variadic arguments) */
48#define LWDEBUGF(level, msg, ...) \
49 do { \
50 if (POSTGIS_DEBUG_LEVEL >= level) \
51 lwdebug(level, "[%s:%s:%d] " msg, \
52 __FILE__, __func__, __LINE__, __VA_ARGS__); \
53 } while (0);
54
55/* Display a notice and a WKT representation of a geometry
56 * at the given debug level */
57#define LWDEBUGG(level, geom, msg) \
58 if (POSTGIS_DEBUG_LEVEL >= level) \
59 do { \
60 size_t sz; \
61 char *wkt = lwgeom_to_wkt(geom, WKT_EXTENDED, 15, &sz); \
62 /* char *wkt = lwgeom_to_hexwkb(geom, WKT_EXTENDED, &sz); */ \
63 LWDEBUGF(level, msg ": %s", wkt); \
64 lwfree(wkt); \
65 } while (0);
66
67/* Display a formatted notice and a WKT representation of a geometry
68 * at the given debug level */
69#define LWDEBUGGF(level, geom, fmt, ...) \
70 if (POSTGIS_DEBUG_LEVEL >= level) \
71 do { \
72 size_t sz; \
73 char *wkt = lwgeom_to_wkt(geom, WKT_EXTENDED, 15, &sz); \
74 /* char *wkt = lwgeom_to_hexwkb(geom, WKT_EXTENDED, &sz); */ \
75 LWDEBUGF(level, fmt ": %s", __VA_ARGS__, wkt); \
76 lwfree(wkt); \
77 } while (0);
78
79#else /* POSTGIS_DEBUG_LEVEL <= 0 */
80
81/* Empty prototype that can be optimised away by the compiler
82 * for non-debug builds */
83#define LWDEBUG(level, msg) \
84 ((void) 0)
85
86/* Empty prototype that can be optimised away by the compiler
87 * for non-debug builds */
88#define LWDEBUGF(level, msg, ...) \
89 ((void) 0)
90
91/* Empty prototype that can be optimised away by the compiler
92 * for non-debug builds */
93#define LWDEBUGG(level, geom, msg) \
94 ((void) 0)
95
96/* Empty prototype that can be optimised away by the compiler
97 * for non-debug builds */
98#define LWDEBUGGF(level, geom, fmt, ...) \
99 ((void) 0)
100
101#endif /* POSTGIS_DEBUG_LEVEL <= 0 */
102
111void lwnotice(const char *fmt, ...);
112
121void lwerror(const char *fmt, ...);
122
130void lwdebug(int level, const char *fmt, ...);
131
132
133
134#endif /* LWGEOM_LOG_H */
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition lwutil.c:190
void lwnotice(const char *fmt,...)
Write a notice out to the notice handler.
Definition lwutil.c:177
void lwdebug(int level, const char *fmt,...)
Write a debug message out.
Definition lwutil.c:203