summaryrefslogtreecommitdiff
path: root/pixman/src/slim_export.h
blob: 1abcdbcb9c1598e7eacc98284ce0581c0d18cb85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* slim - Shared Library Interface Macros
 *
 * Copyright © 2003 Richard Henderson
 *
 * Permission to use, copy, modify, distribute, and sell this software
 * and its documentation for any purpose is hereby granted without
 * fee, provided that the above copyright notice appear in all copies
 * and that both that copyright notice and this permission notice
 * appear in supporting documentation, and that the name of Richard Henderson
 * not be used in advertising or publicity pertaining to distribution
 * of the software without specific, written prior permission.
 * Richard Henderson makes no representations about the suitability of this
 * software for any purpose.  It is provided "as is" without express
 * or implied warranty.
 * 
 * RICHARD HENDERSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
 * NO EVENT SHALL RICHARD HENDERSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
 * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * Author: Richard Henderson <rth@twiddle.net>
 */

/* This file is included multiple times.  Don't ifdef protect it.  */

/* This macro marks a symbol as being exported from an external library.
   Explicitly exporting any symbols overrides the default action of the
   linker to export all symbols.  This prevents users of the library from
   knowingly or unknowingly accessing library internals that may change
   in future releases.

   The macro should be placed either immediately before a function name,

	extern int __external_linkage
	somefunction(void);

   or after a data name,

	extern int somedata __external_linkage;

   This header should be included after all other headers at the beginning
   of a package's external header, and __external_linkage should be #undef'ed
   at the end.  */
/* ??? Not marked with "slim" because that makes it look too much
   like the function name instead of just an attribute.  */

#if defined(WIN32) || defined(__CYGWIN__)
#define __external_linkage	__declspec(dllexport)
#else
#define __external_linkage
#endif