Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtinfo / DtMmdb / btree_berkeley / cdefs.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: cdefs.h /main/4 1996/06/11 17:13:31 cde-hal $ */
24 /*
25  * Copyright (c) 1991, 1993
26  *      The Regents of the University of California.  All rights reserved.
27  *
28  * Redistribution and use in source and binary forms, with or without
29  * modification, are permitted provided that the following conditions
30  * are met:
31  * 1. Redistributions of source code must retain the above copyright
32  *    notice, this list of conditions and the following disclaimer.
33  * 2. Redistributions in binary form must reproduce the above copyright
34  *    notice, this list of conditions and the following disclaimer in the
35  *    documentation and/or other materials provided with the distribution.
36  * 3. All advertising materials mentioning features or use of this software
37  *    must display the following acknowledgement:
38  *      This product includes software developed by the University of
39  *      California, Berkeley and its contributors.
40  * 4. Neither the name of the University nor the names of its contributors
41  *    may be used to endorse or promote products derived from this software
42  *    without specific prior written permission.
43  *
44  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
45  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
46  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
47  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
48  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
49  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
50  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
51  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
52  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
53  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54  * SUCH DAMAGE.
55  *
56  *      @(#)cdefs.h     8.1 (Berkeley) 6/2/93
57  */
58
59 #ifndef _CDEFS_H_
60 #define _CDEFS_H_
61
62 #if defined(__cplusplus)
63 #define __BEGIN_DECLS   extern "C" {
64 #define __END_DECLS     };
65 #else
66 #define __BEGIN_DECLS
67 #define __END_DECLS
68 #endif
69
70 /*
71  * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
72  * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
73  * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
74  * in between its arguments.  __CONCAT can also concatenate double-quoted
75  * strings produced by the __STRING macro, but this only works with ANSI C.
76  */
77 #if defined(__STDC__) || defined(__cplusplus)
78 #ifdef  __P
79 #undef  __P
80 #endif
81 #define __P(protos)     protos          /* full-blown ANSI C */
82 #define __CONCAT(x,y)   x ## y
83 #define __STRING(x)     #x
84
85 #else   /* !(__STDC__ || __cplusplus) */
86 #ifdef  __P
87 #undef  __P
88 #endif
89 #define __P(protos)     ()              /* traditional C preprocessor */
90 #define __CONCAT(x,y)   x/**/y
91 #define __STRING(x)     "x"
92
93 #ifdef __GNUC__
94 #define const           __const         /* GCC: ANSI C with -traditional */
95 #define inline          __inline
96 #define signed          __signed
97 #define volatile        __volatile
98
99 #else   /* !__GNUC__ */
100 #define const                           /* delete ANSI C keywords */
101 #define inline
102 #define signed
103 #define volatile
104 #endif  /* !__GNUC__ */
105 #endif  /* !(__STDC__ || __cplusplus) */
106
107 /*
108  * GCC has extensions for declaring functions as `pure' (always returns
109  * the same value given the same inputs, i.e., has no external state and
110  * no side effects) and `dead' (nonreturning).  These mainly affect
111  * optimization and warnings.  Unfortunately, GCC complains if these are
112  * used under strict ANSI mode (`gcc -ansi -pedantic'), hence we need to
113  * define them only if compiling without this.
114  */
115 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
116 #define __dead __volatile
117 #define __pure __const
118 #else
119 #define __dead
120 #define __pure
121 #endif
122
123 #endif /* !_CDEFS_H_ */