source: trunk/third/libart_lgpl/art_misc.h @ 18256

Revision 18256, 2.9 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18255, which included commits to RCS files with non-trunk default branches.
Line 
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
52typedef 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
78extern "C" {
79#endif
80
81void ART_GNUC_NORETURN
82art_die (const char *fmt, ...) ART_GNUC_PRINTF (1, 2);
83
84void
85art_warn (const char *fmt, ...) ART_GNUC_PRINTF (1, 2);
86
87void
88art_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__ */
Note: See TracBrowser for help on using the repository browser.