MagickCore 6.9.13
Loading...
Searching...
No Matches
method-attribute.h
1/*
2 Copyright 1999 ImageMagick Studio LLC, a non-profit organization
3 dedicated to making software imaging solutions freely available.
4
5 You may not use this file except in compliance with the License. You may
6 obtain a copy of the License at
7
8 https://imagemagick.org/license/
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 MagickCore method attributes.
17*/
18#ifndef MAGICKCORE_METHOD_ATTRIBUTE_H
19#define MAGICKCORE_METHOD_ATTRIBUTE_H
20
21#if defined(__cplusplus) || defined(c_plusplus)
22extern "C" {
23#endif
24
25#if defined(_DLL)
26# define _MAGICKDLL_
27# if !defined(_MAGICKLIB_)
28# define _MAGICKLIB_
29# endif
30# define MAGICKCORE_MODULES_SUPPORT
31# undef MAGICKCORE_BUILD_MODULES
32#endif
33
34#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__CYGWIN__)
35# define MagickPrivate
36# if defined(_MT) && defined(_DLL) && !defined(_MAGICKDLL_) && !defined(_LIB)
37# define _MAGICKDLL_
38# endif
39# if defined(_MAGICKDLL_)
40# if defined(_VISUALC_)
41# pragma warning( disable: 4273 ) /* Disable the dll linkage warnings */
42# endif
43# if !defined(_MAGICKLIB_)
44# if defined(__clang__) || defined(__GNUC__)
45# define MagickExport __attribute__ ((dllimport))
46# else
47# define MagickExport __declspec(dllimport)
48# endif
49# else
50# if defined(__clang__) || defined(__GNUC__)
51# define MagickExport __attribute__ ((dllexport))
52# else
53# define MagickExport __declspec(dllexport)
54# endif
55# endif
56# else
57# define MagickExport
58# endif
59# if defined(_DLL) && !defined(_LIB)
60# if defined(__clang__) || defined(__GNUC__)
61# define ModuleExport __attribute__ ((dllexport))
62# else
63# define ModuleExport __declspec(dllexport)
64# endif
65# else
66# define ModuleExport
67# endif
68# if defined(_VISUALC_)
69# pragma warning(disable : 4018)
70# pragma warning(disable : 4068)
71# pragma warning(disable : 4244)
72# pragma warning(disable : 4142)
73# pragma warning(disable : 4800)
74# pragma warning(disable : 4786)
75# pragma warning(disable : 4996)
76# endif
77#else
78# if defined(__clang__) || (__GNUC__ >= 4)
79# define MagickExport __attribute__ ((visibility ("default")))
80# define MagickPrivate __attribute__ ((visibility ("hidden")))
81# else
82# define MagickExport
83# define MagickPrivate
84# endif
85# define ModuleExport MagickExport
86#endif
87
88#define MagickCoreSignature 0xabacadabUL
89#define MagickSignature MagickCoreSignature
90#if !defined(MaxTextExtent)
91# define MaxTextExtent 4096 /* always >= max(4096,PATH_MAX) */
92#endif
93#define MagickTimeExtent 26
94
95#if defined(MAGICKCORE_HAVE___ATTRIBUTE__)
96# define magick_aligned(x,y) x __attribute__((aligned(y)))
97# define magick_attribute __attribute__
98# define magick_unused(x) magick_unused_ ## x __attribute__((unused))
99# define magick_unreferenced(x) /* nothing */
100#elif defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__CYGWIN__)
101# define magick_aligned(x,y) __declspec(align(y)) x
102# define magick_attribute(x) /* nothing */
103# define magick_unused(x) x
104# define magick_unreferenced(x) (x)
105#else
106# define magick_aligned(x,y) /* nothing */
107# define magick_attribute(x) /* nothing */
108# define magick_unused(x) x
109# define magick_unreferenced(x) /* nothing */
110#endif
111
112#if !defined(__clang__) && (defined(__GNUC__) && (__GNUC__) > 4)
113# define magick_alloc_size(x) __attribute__((__alloc_size__(x)))
114# define magick_alloc_sizes(x,y) __attribute__((__alloc_size__(x,y)))
115# define magick_fallthrough __attribute__((fallthrough))
116#else
117# define magick_alloc_size(x) /* nothing */
118# define magick_alloc_sizes(x,y) /* nothing */
119# define magick_fallthrough /* nothing */
120#endif
121
122#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__) > 4)
123# define magick_cold_spot __attribute__((__cold__))
124# define magick_hot_spot __attribute__((__hot__))
125#else
126# define magick_cold_spot
127# define magick_hot_spot
128#endif
129
130#if defined(__cplusplus) || defined(c_plusplus)
131}
132#endif
133
134#endif