1 /* Copyright Jukka Jyl�nki
2
3    Licensed under the Apache License, Version 2.0 (the "License");
4    you may not use this file except in compliance with the License.
5    You may obtain a copy of the License at
6
7        http://www.apache.org/licenses/LICENSE-2.0
8
9    Unless required by applicable law or agreed to in writing, software
10    distributed under the License is distributed on an "AS IS" BASIS,
11    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12    See the License for the specific language governing permissions and
13    limitations under the License. */
14
15 /** @file MathFwd.h
16         @author Jukka Jyl�nki
17         @brief */
18 #pragma once
19
20 #include "Math/MathBuildConfig.h"
21 #include "Math/MathNamespace.h"
22
23 // The CONST_WIN32 is a #define which resolves to 'const' on Windows, and null on other
24 // platforms. This #define is used on Windows to detect accidental programming errors
25 // occurring from an expression "const float3 vec; vec[1] = 5;". Trying to return
26 // const float from operator[] on GCC gives a warning "type qualifiers ignored on function return type",
27 // so hence this is only enabled on Visual Studio.
28 #ifdef _MSC_VER
29 #define CONST_WIN32 const
30 #else
31 #define CONST_WIN32
32 #endif
33
34 #ifdef _MSC_VER
35 #define NAMELESS_UNION_BEGIN \
36         __pragma(warning(push)) \
37         __pragma(warning(disable:4201))
38
39 #define NAMELESS_UNION_END \
40         __pragma(warning(pop))
41
42 #else
43
44 #define NAMELESS_UNION_BEGIN union {
45 #define NAMELESS_UNION_END };
46
47 #endif
48
49 #if !defined(MATH_ENABLE_STL_SUPPORT) && !defined(assert)
50 #include <stdio.h>
51 #define assert(x) do { if (!(x)) { printf("Error: assert(%s) failed!\n", #x); } } while(0)
52 #endif
53
54 MATH_BEGIN_NAMESPACE
55
56 class float2;
57 class float3;
58 class float4;
59 class float2x2;
60 class float2x3;
61 class float3x3;
62 class float3x4;
63 class float4x4;
64 class Quat;
65
66 class TranslateOp;
67 class ScaleOp;
68
69 class AABB;
70 class Capsule;
71 class Circle;
72 #ifdef Complex
73 #undef Complex
74 #endif
75 class Complex;
76 class Cone;
77 class Cylinder;
78 class Ellipsoid;
79 class Frustum;
80 struct HitInfo;
81 class Line;
82 class LineSegment;
83 class OBB;
84 class Plane;
85 class Polygon;
86 class Polyhedron;
87 class Polynomial;
88 class Quat;
89 class Ray;
90 class Sphere;
91 class TranslateOp;
92 class Torus;
93 class ScaleOp;
94 class Triangle;
95 class LCG;
96
97 MATH_END_NAMESPACE
98
99 #ifdef MATH_GRAPHICSENGINE_INTEROP
100 class VertexBuffer;
101 #endif

Go back to previous page