Code

update to latest 2geom. this adds gsl dependency, doesn't seem to make inskape execut...
[inkscape.git] / src / 2geom / isnan.h
1 #ifndef __ISNAN_H__
2 #define __ISNAN_H__
4 /*
5  * Temporary fix for various misdefinitions of isnan().
6  * isnan() is becoming undef'd in some .h files. 
7  * #include this last in your .cpp file to get it right.
8  *
9  * The problem is that isnan and isfinite are part of C99 but aren't part of
10  * the C++ standard (which predates C99).
11  *
12  * Authors:
13  *   Inkscape groupies and obsessive-compulsives
14  *
15  * Copyright (C) 2004 authors
16  *
17  * Released under GNU GPL, read the file 'COPYING' for more information
18  *
19  * 2005 modification hereby placed in public domain.  Probably supercedes the 2004 copyright
20  * for the code itself.
21  */
23 #include <cmath>
24 /* You might try changing the above to <cmath> if you have problems.
25  * Whether you use math.h or cmath, you may need to edit the .cpp file
26  * and/or other .h files to use the same header file.
27  */
29 #if defined(__isnan)
30 # define IS_NAN(_a) (__isnan(_a))
31 #elif defined(__APPLE__) && __GNUC__ == 3
32 # define IS_NAN(_a) (__isnan(_a))       /* MacOSX/Darwin definition < 10.4 */
33 #elif defined(WIN32) || defined(_isnan)
34 # define IS_NAN(_a) (_isnan(_a))        /* Win32 definition */
35 #elif defined(isnan) || defined(__FreeBSD__)
36 # define IS_NAN(_a) (isnan(_a))         /* GNU definition */
37 #else
38 # define IS_NAN(_a) (std::isnan(_a))
39 #endif
40 /* If the above doesn't work, then try (a != a).
41  * Also, please report a bug as per http://www.inkscape.org/report_bugs.php,
42  * giving information about what platform and compiler version you're using.
43  */
46 #if defined(__isfinite)
47 # define IS_FINITE(_a) (__isfinite(_a))
48 #elif defined(__APPLE__) && __GNUC__ == 3
49 # define IS_FINITE(_a) (__isfinite(_a)) /* MacOSX/Darwin definition < 10.4 */
50 #elif defined(isfinite)
51 # define IS_FINITE(_a) (isfinite(_a))
52 #else
53 # define IS_FINITE(_a) (std::isfinite(_a))
54 #endif
55 /* If the above doesn't work, then try (finite(_a) && !isNaN(_a)) or (!isNaN((_a) - (_a))).
56  * Also, please report a bug as per http://www.inkscape.org/report_bugs.php,
57  * giving information about what platform and compiler version you're using.
58  */
61 #endif /* __ISNAN_H__ */
63 /*
64   Local Variables:
65   mode:c++
66   c-file-style:"stroustrup"
67   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
68   indent-tabs-mode:nil
69   fill-column:99
70   End:
71 */
72 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :