Geogram  Version 1.9.0
A programming library of geometric algorithms
psm.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2000-2022 Inria
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  * * Neither the name of the ALICE Project-Team nor the names of its
14  * contributors may be used to endorse or promote products derived from this
15  * software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  *
29  * Contact: Bruno Levy
30  *
31  * https://www.inria.fr/fr/bruno-levy
32  *
33  * Inria,
34  * Domaine de Voluceau,
35  * 78150 Le Chesnay - Rocquencourt
36  * FRANCE
37  *
38  */
39 
40 #ifndef GEOGRAM_BASIC_PSM
41 #define GEOGRAM_BASIC_PSM
42 
49 #include <assert.h>
50 #include <iostream>
51 #include <string>
52 
53 #ifndef GEOGRAM_PSM
54 #define GEOGRAM_PSM
55 #endif
56 
57 #ifndef GEOGRAM_BASIC_ASSERT
58 
59 #define geo_assert(x) assert(x)
60 #define geo_range_assert(x, min_val, max_val) \
61  assert((x) >= (min_val) && (x) <= (max_val))
62 #define geo_assert_not_reached assert(0)
63 
64 #ifdef GEO_DEBUG
65 #define geo_debug_assert(x) assert(x)
66 #define geo_debug_range_assert(x, min_val, max_val) \
67  assert((x) >= (min_val) && (x) <= (max_val))
68 #else
69 #define geo_debug_assert(x)
70 #define geo_debug_range_assert(x, min_val, max_val)
71 #endif
72 
73 #ifdef GEO_PARANOID
74 #define geo_parano_assert(x) geo_assert(x)
75 #define geo_parano_range_assert(x, min_val, max_val) \
76  geo_range_assert(x, min_val, max_val)
77 #else
78 #define geo_parano_assert(x)
79 #define geo_parano_range_assert(x, min_val, max_val)
80 #endif
81 
82 #endif
83 
84 #ifndef geo_cite
85 #define geo_cite(x)
86 #endif
87 
88 #ifndef geo_cite_with_info
89 #define geo_cite_with_info(x,y)
90 #endif
91 
92 #ifndef GEOGRAM_BASIC_LOGGER
93 
94 namespace GEO {
95  namespace Logger {
96  inline std::ostream& out(const std::string& name) {
97  return std::cout << " [" << name << "]";
98  }
99 
100  inline std::ostream& err(const std::string& name) {
101  return std::cerr << "E[" << name << "]";
102  }
103 
104  inline std::ostream& warn(const std::string& name) {
105  return std::cerr << "W[" << name << "]";
106  }
107  }
108 
109 }
110 
111 #endif
112 
113 #ifndef FPG_UNCERTAIN_VALUE
114 #define FPG_UNCERTAIN_VALUE 0
115 #endif
116 
117 #define GEOGRAM_WITH_PDEL
118 
119 #endif
Assertion checking mechanism.
static std::ostream & warn(const std::string &feature)
Gets the stream to send warning messages.
static std::ostream & err(const std::string &feature)
Gets the stream to send error messages.
static std::ostream & out(const std::string &feature)
Gets the stream to send information messages.
Global Vorpaline namespace.
Definition: basic.h:55