00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MAGICKCORE_METHOD_ATTRIBUTE_H
00019 #define MAGICKCORE_METHOD_ATTRIBUTE_H
00020
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024
00025 #if defined(__BORLANDC__) && defined(_DLL)
00026 # define _MAGICKDLL_
00027 # define _MAGICKLIB_
00028 # define MAGICKCORE_MODULES_SUPPORT
00029 # undef MAGICKCORE_BUILD_MODULES
00030 #endif
00031
00032 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__CYGWIN__)
00033 # define MagickPrivate
00034 # if defined(_MT) && defined(_DLL) && !defined(_MAGICKDLL_) && !defined(_LIB)
00035 # define _MAGICKDLL_
00036 # endif
00037 # if defined(_MAGICKDLL_)
00038 # if defined(_VISUALC_)
00039 # pragma warning( disable: 4273 )
00040 # endif
00041 # if !defined(_MAGICKLIB_)
00042 # if defined(__clang__) || defined(__GNUC__)
00043 # define MagickExport __attribute__ ((dllimport))
00044 # else
00045 # define MagickExport __declspec(dllimport)
00046 # endif
00047 # else
00048 # if defined(__clang__) || defined(__GNUC__)
00049 # define MagickExport __attribute__ ((dllexport))
00050 # else
00051 # define MagickExport __declspec(dllexport)
00052 # endif
00053 # endif
00054 # else
00055 # define MagickExport
00056 # endif
00057 # if defined(_DLL) && !defined(_LIB)
00058 # if defined(__clang__) || defined(__GNUC__)
00059 # define ModuleExport __attribute__ ((dllexport))
00060 # else
00061 # define ModuleExport __declspec(dllexport)
00062 # endif
00063 # else
00064 # define ModuleExport
00065 # endif
00066 # if defined(_VISUALC_)
00067 # pragma warning(disable : 4018)
00068 # pragma warning(disable : 4068)
00069 # pragma warning(disable : 4244)
00070 # pragma warning(disable : 4142)
00071 # pragma warning(disable : 4800)
00072 # pragma warning(disable : 4786)
00073 # pragma warning(disable : 4996)
00074 # endif
00075 #else
00076 # if defined(__clang__) || (__GNUC__ >= 4)
00077 # define MagickExport __attribute__ ((visibility ("default")))
00078 # define MagickPrivate __attribute__ ((visibility ("hidden")))
00079 # else
00080 # define MagickExport
00081 # define MagickPrivate
00082 # endif
00083 # define ModuleExport MagickExport
00084 #endif
00085
00086 #define MagickCoreSignature 0xabacadabUL
00087 #if !defined(MagickPathExtent)
00088 # define MagickPathExtent 4096
00089 #endif
00090 #define MaxTextExtent MagickPathExtent
00091
00092 #if defined(MAGICKCORE_HAVE___ATTRIBUTE__)
00093 # define magick_aligned(x,y) x __attribute__((aligned(y)))
00094 # define magick_attribute __attribute__
00095 # define magick_unused(x) magick_unused_ ## x __attribute__((unused))
00096 # define magick_unreferenced(x)
00097 #elif defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__CYGWIN__)
00098 # define magick_aligned(x,y) __declspec(align(y)) x
00099 # define magick_attribute(x)
00100 # define magick_unused(x) x
00101 # define magick_unreferenced(x) (x)
00102 #else
00103 # define magick_aligned(x,y)
00104 # define magick_attribute(x)
00105 # define magick_unused(x) x
00106 # define magick_unreferenced(x)
00107 #endif
00108
00109 #if !defined(__clang__) && (((__GNUC__) > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
00110 # define magick_alloc_size(x) __attribute__((__alloc_size__(x)))
00111 # define magick_alloc_sizes(x,y) __attribute__((__alloc_size__(x,y)))
00112 #else
00113 # define magick_alloc_size(x)
00114 # define magick_alloc_sizes(x,y)
00115 #endif
00116
00117 #if defined(__clang__) || (((__GNUC__) > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
00118 # define magick_cold_spot __attribute__((__cold__))
00119 # define magick_hot_spot __attribute__((__hot__))
00120 #else
00121 # define magick_cold_spot
00122 # define magick_hot_spot
00123 #endif
00124
00125 #if defined(__cplusplus) || defined(c_plusplus)
00126 }
00127 #endif
00128
00129 #endif