1 | /* Libart_LGPL - library of basic graphic primitives |
---|
2 | * Copyright (C) 1998 Raph Levien |
---|
3 | * |
---|
4 | * This library is free software; you can redistribute it and/or |
---|
5 | * modify it under the terms of the GNU Library General Public |
---|
6 | * License as published by the Free Software Foundation; either |
---|
7 | * version 2 of the License, or (at your option) any later version. |
---|
8 | * |
---|
9 | * This library is distributed in the hope that it will be useful, |
---|
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
---|
12 | * Library General Public License for more details. |
---|
13 | * |
---|
14 | * You should have received a copy of the GNU Library General Public |
---|
15 | * License along with this library; if not, write to the |
---|
16 | * Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
---|
17 | * Boston, MA 02111-1307, USA. |
---|
18 | */ |
---|
19 | |
---|
20 | /* Simple macros to set up storage allocation and basic types for libart |
---|
21 | functions. */ |
---|
22 | |
---|
23 | #ifndef __ART_MISC_H__ |
---|
24 | #define __ART_MISC_H__ |
---|
25 | |
---|
26 | #include <stdlib.h> /* for malloc, etc. */ |
---|
27 | |
---|
28 | /* The art_config.h file is automatically generated by |
---|
29 | gen_art_config.c and contains definitions of |
---|
30 | ART_SIZEOF_{CHAR,SHORT,INT,LONG} and art_u{8,16,32}. */ |
---|
31 | #ifdef LIBART_COMPILATION |
---|
32 | #include "art_config.h" |
---|
33 | #else |
---|
34 | #include <libart_lgpl/art_config.h> |
---|
35 | #endif |
---|
36 | |
---|
37 | #define art_alloc malloc |
---|
38 | #define art_free free |
---|
39 | #define art_realloc realloc |
---|
40 | |
---|
41 | /* These aren't, strictly speaking, configuration macros, but they're |
---|
42 | damn handy to have around, and may be worth playing with for |
---|
43 | debugging. */ |
---|
44 | #define art_new(type, n) ((type *)art_alloc ((n) * sizeof(type))) |
---|
45 | |
---|
46 | #define art_renew(p, type, n) ((type *)art_realloc (p, (n) * sizeof(type))) |
---|
47 | |
---|
48 | /* This one must be used carefully - in particular, p and max should |
---|
49 | be variables. They can also be pstruct->el lvalues. */ |
---|
50 | #define art_expand(p, type, max) do { if(max) { p = art_renew (p, type, max <<= 1); } else { max = 1; p = art_new(type, 1); } } while (0) |
---|
51 | |
---|
52 | typedef int art_boolean; |
---|
53 | #define ART_FALSE 0 |
---|
54 | #define ART_TRUE 1 |
---|
55 | |
---|
56 | /* define pi */ |
---|
57 | #ifndef M_PI |
---|
58 | #define M_PI 3.14159265358979323846 |
---|
59 | #endif /* M_PI */ |
---|
60 | |
---|
61 | #ifndef M_SQRT2 |
---|
62 | #define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ |
---|
63 | #endif /* M_SQRT2 */ |
---|
64 | |
---|
65 | /* Provide macros to feature the GCC function attribute. |
---|
66 | */ |
---|
67 | #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)) |
---|
68 | #define ART_GNUC_PRINTF( format_idx, arg_idx ) \ |
---|
69 | __attribute__((format (printf, format_idx, arg_idx))) |
---|
70 | #define ART_GNUC_NORETURN \ |
---|
71 | __attribute__((noreturn)) |
---|
72 | #else /* !__GNUC__ */ |
---|
73 | #define ART_GNUC_PRINTF( format_idx, arg_idx ) |
---|
74 | #define ART_GNUC_NORETURN |
---|
75 | #endif /* !__GNUC__ */ |
---|
76 | |
---|
77 | #ifdef __cplusplus |
---|
78 | extern "C" { |
---|
79 | #endif |
---|
80 | |
---|
81 | void ART_GNUC_NORETURN |
---|
82 | art_die (const char *fmt, ...) ART_GNUC_PRINTF (1, 2); |
---|
83 | |
---|
84 | void |
---|
85 | art_warn (const char *fmt, ...) ART_GNUC_PRINTF (1, 2); |
---|
86 | |
---|
87 | void |
---|
88 | art_dprint (const char *fmt, ...) ART_GNUC_PRINTF (1, 2); |
---|
89 | |
---|
90 | #ifdef __cplusplus |
---|
91 | } |
---|
92 | #endif |
---|
93 | |
---|
94 | #define ART_USE_NEW_INTERSECTOR |
---|
95 | |
---|
96 | #endif /* __ART_MISC_H__ */ |
---|