1 //******************************************************************************
2 ///
3 /// @file povms/precomp.h
4 ///
5 /// Precompiled header for the platform-independent portions of POV-Ray.
6 ///
7 /// @copyright
8 /// @parblock
9 ///
10 /// Persistence of Vision Ray Tracer ('POV-Ray') version 3.8.
11 /// Copyright 1991-2017 Persistence of Vision Raytracer Pty. Ltd.
12 ///
13 /// POV-Ray is free software: you can redistribute it and/or modify
14 /// it under the terms of the GNU Affero General Public License as
15 /// published by the Free Software Foundation, either version 3 of the
16 /// License, or (at your option) any later version.
17 ///
18 /// POV-Ray is distributed in the hope that it will be useful,
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 /// GNU Affero General Public License for more details.
22 ///
23 /// You should have received a copy of the GNU Affero General Public License
24 /// along with this program.  If not, see <http://www.gnu.org/licenses/>.
25 ///
26 /// ----------------------------------------------------------------------------
27 ///
28 /// POV-Ray is based on the popular DKB raytracer version 2.12.
29 /// DKBTrace was originally written by David K. Buck.
30 /// DKBTrace Ver 2.0-2.12 were written by David K. Buck & Aaron A. Collins.
31 ///
32 /// @endparblock
33 ///
34 //******************************************************************************
35 
36 /// @file
37 /// @note
38 /// @parblock
39 ///     This header file is _not_ explicitly included in any source file (except @ref povms/precomp.cpp
40 ///     which is designed to allow for precompiling this header in the first place). To use
41 ///     precompiled headers, you will therefore have to make your build environment automatically
42 ///     inject this header at the start of every source file.
43 ///
44 ///     The rationale behind this is to keep the set of headers included in each source file at an
45 ///     absolute minimum when precompiled headers are _not_ used.
46 /// @endparblock
47 
48 #include "base/configbase.h"
49 
50 #include <cassert>
51 #include <cctype>
52 #include <cfloat>
53 #include <climits>
54 #include <cmath>
55 #include <cstdio>
56 #include <cstdlib>
57 #include <cstring>
58 
59 #include <algorithm>
60 #include <exception>
61 #include <list>
62 #include <map>
63 #include <memory>
64 #include <new>
65 #include <set>
66 #include <stack>
67 #include <stdexcept>
68 #include <string>
69 #include <vector>
70 
71 #include <boost/bind.hpp>
72 #include <boost/format.hpp>
73 #include <boost/function.hpp>
74 #include <boost/functional/hash/hash.hpp>
75 #include <boost/intrusive_ptr.hpp>
76 #include <boost/scoped_array.hpp>
77 #include <boost/scoped_ptr.hpp>
78 #if POV_MULTITHREADED
79 #include <boost/thread.hpp>
80 #include <boost/thread/condition.hpp>
81 #endif
82 #include <boost/unordered_map.hpp>
83 
84