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