Branch data Line data Source code
1 : : #ifndef GFX_STD_INCLUDED // -*- C++ -*-
2 : : #define GFX_STD_INCLUDED
3 : :
4 : : /************************************************************************
5 : :
6 : : Standard base include file for all gfx-based programs. This defines
7 : : various common stuff that is used elsewhere.
8 : :
9 : : $Id: std.h,v 1.8 1997/06/25 14:12:31 garland Exp $
10 : :
11 : : ************************************************************************/
12 : :
13 : :
14 : : #include <stdlib.h>
15 : : #include <string>
16 : : #include <math.h>
17 : : #include <iostream>
18 : :
19 : :
20 : : #ifndef FEQ_EPS
21 : : #define FEQ_EPS 1e-6
22 : : #define FEQ_EPS2 1e-12
23 : : #endif
24 : 121232 : inline bool FEQ(double a,double b,double eps=FEQ_EPS) { return fabs(a-b)<eps; }
25 : : inline bool FEQ(float a,float b,float eps=FEQ_EPS) { return fabsf(a-b)<eps; }
26 : :
27 : : #ifndef GFX_NO_AXIS_NAMES
28 : : enum Axis {X=0, Y=1, Z=2, W=3};
29 : : #endif
30 : :
31 : :
32 : : #define fatal_error(s) report_error(s,__FILE__,__LINE__)
33 : :
34 : : #ifdef assert
35 : : # undef assert
36 : : #endif
37 : : #define assert(i) (i)?((void)NULL):assert_failed(# i,__FILE__,__LINE__)
38 : :
39 : : #ifdef SAFETY
40 : : # define AssertBound(t) assert(t)
41 : : #else
42 : : # define AssertBound(t)
43 : : #endif
44 : :
45 : : //
46 : : // Define the report_error and assert_failed functions.
47 : : //
48 : : inline void report_error(const char *msg,const char *file,int line)
49 : : {
50 : : std::cerr << msg << " ("<<file<<":"<<line<<")"<<std::endl;
51 : : exit(1);
52 : : }
53 : :
54 : 0 : inline void assert_failed(const char *text,const char *file,int line)
55 : : {
56 : 0 : std::cerr << "Assertion failed: {" << text <<"} at ";
57 : 0 : std::cerr << file << ":" << line << std::endl;
58 : 0 : abort();
59 : : }
60 : :
61 : : inline void assertf(int test, const char *msg,
62 : : const char *file=__FILE__, int line=__LINE__)
63 : : {
64 : : if( !test )
65 : : {
66 : : std::cerr << "Assertion failed: " << msg << " at ";
67 : : std::cerr << file << ":" << line << std::endl;
68 : : abort();
69 : : }
70 : : }
71 : :
72 : : // GFX_STD_INCLUDED
73 : : #endif
|