1 //******************************************************************************
2 ///
3 /// @file povms/configpovms.h
4 ///
5 /// This header file defines all types that can be configured by platform
6 /// specific code for parser layer use. It further allows insertion of platform
7 /// specific function prototypes making use of those types.
8 ///
9 /// @copyright
10 /// @parblock
11 ///
12 /// Persistence of Vision Ray Tracer ('POV-Ray') version 3.8.
13 /// Copyright 1991-2018 Persistence of Vision Raytracer Pty. Ltd.
14 ///
15 /// POV-Ray is free software: you can redistribute it and/or modify
16 /// it under the terms of the GNU Affero General Public License as
17 /// published by the Free Software Foundation, either version 3 of the
18 /// License, or (at your option) any later version.
19 ///
20 /// POV-Ray is distributed in the hope that it will be useful,
21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23 /// GNU Affero General Public License for more details.
24 ///
25 /// You should have received a copy of the GNU Affero General Public License
26 /// along with this program.  If not, see <http://www.gnu.org/licenses/>.
27 ///
28 /// ----------------------------------------------------------------------------
29 ///
30 /// POV-Ray is based on the popular DKB raytracer version 2.12.
31 /// DKBTrace was originally written by David K. Buck.
32 /// DKBTrace Ver 2.0-2.12 were written by David K. Buck & Aaron A. Collins.
33 ///
34 /// @endparblock
35 ///
36 //******************************************************************************
37 
38 #ifndef POVRAY_POVMS_CONFIGPOVMS_H
39 #define POVRAY_POVMS_CONFIGPOVMS_H
40 
41 #if !defined(__cplusplus)
42     // When compiling as part of the POV-Ray project, povms.c must be compiled as a C++ file,
43     // due to potential C++-isms in the base/configbase.h header included via this file.
44     #error "povms.c must be compiled as a C++ file when used as part of the POV-Ray project."
45 #endif
46 
47 #include "base/configbase.h"
48 #include "syspovconfigpovms.h"
49 
50 //##############################################################################
51 ///
52 /// @defgroup PovMSConfig POVMS Compile-Time Configuration
53 /// @ingroup PovMS
54 /// @ingroup PovConfig
55 ///
56 /// @{
57 
58 //******************************************************************************
59 // The following override the defaults in povms.h and povms.c, as those are
60 // chosen for a C environment potentially detached from POV-Ray, while we have
61 // C++ and the POV-Ray base configuration at our disposal.
62 
63 #ifndef POVMSType
64     #define POVMSType               POV_UINT32
65 #endif
66 
67 #ifndef POVMSLong
68     #define POVMSLong               POV_INT64
69     #define SetPOVMSLong(v,h,l)     *v = (((((POVMSLong)(h)) & 0x00000000ffffffff) << 32) | (((POVMSLong)(l)) & 0x00000000ffffffff))
70     #define GetPOVMSLong(h,l,v)     *h = ((v) >> 32) & 0x00000000ffffffff; *l = (v) & 0x00000000ffffffff
71 #endif
72 
73 #ifndef POVMSBool
74     #define POVMSBool               bool
75 #endif
76 
77 #ifndef POVMSTrue
78     #define POVMSTrue               true
79 #endif
80 
81 #ifndef POVMSFalse
82     #define POVMSFalse              false
83 #endif
84 
85 #ifndef POVMSUCS2
86     #define POVMSUCS2               UCS2
87 #endif
88 
89 #ifndef kDefaultTimeout
90     #ifdef _DEBUG
91         // a long timeout so we can break into the debugger
92         #define kDefaultTimeout         100
93     #endif
94 #endif
95 
96 //******************************************************************************
97 
98 /// @}
99 ///
100 //##############################################################################
101 
102 #endif // POVRAY_POVMS_CONFIGPOVMS_H
103