method-attribute.h

Go to the documentation of this file.
00001 /*
00002   Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization
00003   dedicated to making software imaging solutions freely available.
00004   
00005   You may not use this file except in compliance with the License.  You may
00006   obtain a copy of the License at
00007   
00008     https://imagemagick.org/script/license.php
00009   
00010   Unless required by applicable law or agreed to in writing, software
00011   distributed under the License is distributed on an "AS IS" BASIS,
00012   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013   See the License for the specific language governing permissions and
00014   limitations under the License.
00015 
00016   MagickCore method attributes.
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 )  /* Disable the dll linkage warnings */
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 #define MagickSignature  MagickCoreSignature
00088 #if !defined(MaxTextExtent)
00089 #  define MaxTextExtent  4096  /* always >= 4096 */
00090 #endif
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)  /* nothing */
00097 #elif defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__CYGWIN__)
00098 #  define magick_aligned(x,y)  __declspec(align(y)) x
00099 #  define magick_attribute(x)  /* nothing */
00100 #  define magick_unused(x) x
00101 #  define magick_unreferenced(x) (x)
00102 #else
00103 #  define magick_aligned(x,y)  /* nothing */
00104 #  define magick_attribute(x)  /* nothing */
00105 #  define magick_unused(x) x
00106 #  define magick_unreferenced(x)  /* nothing */
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)  /* nothing */
00114 #  define magick_alloc_sizes(x,y)  /* nothing */
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

Generated on 31 Oct 2019 for MagickCore by  doxygen 1.6.1