• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2   Copyright 1999-2021 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/script/license.php
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   MagickWand method attributes.
17 */
18 #ifndef MAGICKWAND_METHOD_ATTRIBUTE_H
19 #define MAGICKWAND_METHOD_ATTRIBUTE_H
20 
21 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24 
25 #if defined(__BORLANDC__) && defined(_DLL)
26 #  define _MAGICKDLL_
27 #  define _MAGICKLIB_
28 #  define MAGICKCORE_MODULES_SUPPORT
29 #  undef MAGICKCORE_BUILD_MODULES
30 #endif
31 
32 #if defined(MAGICKWAND_WINDOWS_SUPPORT) && !defined(__CYGWIN__)
33 #  define WandPrivate
34 #  if defined(_MT) && defined(_DLL) && !defined(_MAGICKDLL_) && !defined(_LIB)
35 #    define _MAGICKDLL_
36 #  endif
37 #  if defined(_MAGICKDLL_)
38 #    if defined(_VISUALC_)
39 #      pragma warning( disable: 4273 )  /* Disable the dll linkage warnings */
40 #    endif
41 #    if !defined(_MAGICKLIB_)
42 #      if defined(__clang__) || defined(__GNUC__)
43 #        define WandExport __attribute__ ((dllimport))
44 #      else
45 #        define WandExport __declspec(dllimport)
46 #      endif
47 #    else
48 #      if defined(__clang__) || defined(__GNUC__)
49 #        define WandExport __attribute__ ((dllexport))
50 #      else
51 #        define WandExport __declspec(dllexport)
52 #      endif
53 #    endif
54 #  else
55 #    define WandExport
56 #  endif
57 #  if defined(_VISUALC_)
58 #    pragma warning(disable : 4018)
59 #    pragma warning(disable : 4068)
60 #    pragma warning(disable : 4244)
61 #    pragma warning(disable : 4142)
62 #    pragma warning(disable : 4800)
63 #    pragma warning(disable : 4786)
64 #    pragma warning(disable : 4996)
65 #  endif
66 #else
67 #  if defined(__clang__) || (__GNUC__ >= 4)
68 #    define WandExport __attribute__ ((visibility ("default")))
69 #    define WandPrivate  __attribute__ ((visibility ("hidden")))
70 #  else
71 #    define WandExport
72 #    define WandPrivate
73 #  endif
74 #endif
75 
76 #define MagickWandSignature  0xabacadabUL
77 #if !defined(MagickPathExtent)
78 #  define MagickPathExtent  4096
79 #endif
80 
81 #if defined(MAGICKCORE_HAVE___ATTRIBUTE__)
82 #  define wand_aligned(x)  __attribute__((aligned(x)))
83 #  define wand_attribute  __attribute__
84 #  define wand_unused(x)  wand_unused_ ## x __attribute__((unused))
85 #  define wand_unreferenced(x)  /* nothing */
86 #elif defined(MAGICKWAND_WINDOWS_SUPPORT) && !defined(__CYGWIN__)
87 #  define wand_aligned(x)  __declspec(align(x))
88 #  define wand_attribute(x)  /* nothing */
89 #  define wand_unused(x) x
90 #  define wand_unreferenced(x) (x)
91 #else
92 #  define wand_aligned(x)  /* nothing */
93 #  define wand_attribute(x)  /* nothing */
94 #  define wand_unused(x) x
95 #  define wand_unreferenced(x)  /* nothing */
96 #endif
97 
98 #if !defined(__clang__) && (((__GNUC__) > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
99 #  define wand_alloc_size(x)  __attribute__((__alloc_size__(x)))
100 #  define wand_alloc_sizes(x,y)  __attribute__((__alloc_size__(x,y)))
101 #else
102 #  define wand_alloc_size(x)  /* nothing */
103 #  define wand_alloc_sizes(x,y)  /* nothing */
104 #endif
105 
106 #if defined(__clang__) || (((__GNUC__) > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
107 #  define wand_cold_spot  __attribute__((__cold__))
108 #  define wand_hot_spot  __attribute__((__hot__))
109 #else
110 #  define wand_cold_spot
111 #  define wand_hot_spot
112 #endif
113 
114 #if defined(__cplusplus) || defined(c_plusplus)
115 }
116 #endif
117 
118 #endif
119