Home | History | Annotate | Download | only in MagickCore
      1 /*
      2   Copyright 1999-2019 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   MagickCore private application programming interface declarations.
     17 */
     18 #ifndef MAGICKCORE_STUDIO_H
     19 #define MAGICKCORE_STUDIO_H
     20 
     21 #if defined(__cplusplus) || defined(c_plusplus)
     22 extern "C" {
     23 #endif
     24 
     25 #if defined(WIN32) || defined(WIN64)
     26 #  define MAGICKCORE_WINDOWS_SUPPORT
     27 #else
     28 #  define MAGICKCORE_POSIX_SUPPORT
     29 #endif
     30 
     31 #define MAGICKCORE_IMPLEMENTATION  1
     32 
     33 #if !defined(MAGICKCORE_CONFIG_H)
     34 # define MAGICKCORE_CONFIG_H
     35 #include "MagickCore/magick-config.h"
     36 # if defined(MAGICKCORE__FILE_OFFSET_BITS) && !defined(_FILE_OFFSET_BITS)
     37 # define _FILE_OFFSET_BITS MAGICKCORE__FILE_OFFSET_BITS
     38 #endif
     39 #if defined(_magickcore_const) && !defined(const)
     40 # define const  _magickcore_const
     41 #endif
     42 #if defined(_magickcore_inline) && !defined(inline)
     43 # define inline  _magickcore_inline
     44 #endif
     45 # if defined(__cplusplus) || defined(c_plusplus)
     46 #  undef inline
     47 # endif
     48 #endif
     49 
     50 #if defined(MAGICKCORE_NAMESPACE_PREFIX)
     51 # include "MagickCore/methods.h"
     52 #endif
     53 
     54 #if !defined(const)
     55 #  define STDC
     56 #endif
     57 
     58 #include <stdarg.h>
     59 #include <stdio.h>
     60 #if defined(MAGICKCORE_HAVE_SYS_STAT_H)
     61 # include <sys/stat.h>
     62 #endif
     63 #if defined(MAGICKCORE_STDC_HEADERS)
     64 # include <stdlib.h>
     65 # include <stddef.h>
     66 #else
     67 # if defined(MAGICKCORE_HAVE_STDLIB_H)
     68 #  include <stdlib.h>
     69 # endif
     70 #endif
     71 #if !defined(magick_restrict)
     72 # if !defined(_magickcore_restrict)
     73 #  define magick_restrict restrict
     74 # else
     75 #  define magick_restrict _magickcore_restrict
     76 # endif
     77 #endif
     78 #if defined(MAGICKCORE_HAVE_STRING_H)
     79 # if !defined(STDC_HEADERS) && defined(MAGICKCORE_HAVE_MEMORY_H)
     80 #  include <memory.h>
     81 # endif
     82 # include <string.h>
     83 #endif
     84 #if defined(MAGICKCORE_HAVE_STRINGS_H)
     85 # include <strings.h>
     86 #endif
     87 #if defined(MAGICKCORE_HAVE_INTTYPES_H)
     88 # include <inttypes.h>
     89 #endif
     90 #if defined(MAGICKCORE_HAVE_STDINT_H)
     91 # include <stdint.h>
     92 #endif
     93 #if defined(MAGICKCORE_HAVE_UNISTD_H)
     94 # include <unistd.h>
     95 #endif
     96 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DEBUG)
     97 #define _CRTDBG_MAP_ALLOC
     98 #endif
     99 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
    100 # include <io.h>
    101 #if !defined(__CYGWIN__)
    102 # include <direct.h>
    103 #endif
    104 # if !defined(MAGICKCORE_HAVE_STRERROR)
    105 #  define HAVE_STRERROR
    106 # endif
    107 #endif
    108 
    109 #include <ctype.h>
    110 #include <locale.h>
    111 #include <errno.h>
    112 #include <fcntl.h>
    113 #include <math.h>
    114 #include <time.h>
    115 #include <limits.h>
    116 #include <signal.h>
    117 #include <assert.h>
    118 
    119 #if defined(MAGICKCORE_HAVE_XLOCALE_H)
    120 # include <xlocale.h>
    121 #endif
    122 #if defined(MAGICKCORE_THREAD_SUPPORT)
    123 # include <pthread.h>
    124 #endif
    125 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
    126 #if !defined(__CYGWIN__)
    127 #include <winsock2.h>
    128 #include <ws2tcpip.h>
    129 #endif
    130 #include <windows.h>
    131 #pragma comment (lib, "ws2_32.lib")
    132 #endif
    133 #if defined(MAGICKCORE_HAVE_SYS_SYSLIMITS_H)
    134 # include <sys/syslimits.h>
    135 #endif
    136 #if defined(MAGICKCORE_HAVE_ARM_LIMITS_H)
    137 # include <arm/limits.h>
    138 #endif
    139 
    140 #if defined(MAGICKCORE__OPENCL)
    141 #if defined(MAGICKCORE_HAVE_CL_CL_H)
    142 #  include <CL/cl.h>
    143 #endif
    144 #if defined(MAGICKCORE_HAVE_OPENCL_CL_H)
    145 #  include <OpenCL/cl.h>
    146 #endif
    147 #  define MAGICKCORE_OPENCL_SUPPORT  1
    148 #endif
    149 
    150 #if defined(_OPENMP) && ((_OPENMP >= 200203) || defined(__OPENCC__))
    151 #  include <omp.h>
    152 #  define MAGICKCORE_OPENMP_SUPPORT  1
    153 #endif
    154 
    155 #if defined(MAGICKCORE_HAVE_PREAD) && defined(MAGICKCORE_HAVE_DECL_PREAD) && !MAGICKCORE_HAVE_DECL_PREAD
    156 ssize_t pread(int,void *,size_t,off_t);
    157 #endif
    158 
    159 #if defined(MAGICKCORE_HAVE_PWRITE) && defined(MAGICKCORE_HAVE_DECL_PWRITE) && !MAGICKCORE_HAVE_DECL_PWRITE
    160 ssize_t pwrite(int,const void *,size_t,off_t);
    161 #endif
    162 
    163 #if defined(MAGICKCORE_HAVE_STRLCPY) && defined(MAGICKCORE_HAVE_DECL_STRLCPY) && !MAGICKCORE_HAVE_DECL_STRLCPY
    164 extern size_t strlcpy(char *,const char *,size_t);
    165 #endif
    166 
    167 #if defined(MAGICKCORE_HAVE_VSNPRINTF) && defined(MAGICKCORE_HAVE_DECL_VSNPRINTF) && !MAGICKCORE_HAVE_DECL_VSNPRINTF
    168 extern int vsnprintf(char *,size_t,const char *,va_list);
    169 #endif
    170 
    171 #include "MagickCore/method-attribute.h"
    172 
    173 #if defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(MAGICKCORE_POSIX_SUPPORT)
    174 # include <sys/types.h>
    175 # include <sys/stat.h>
    176 # if defined(MAGICKCORE_HAVE_SYS_TIMEB_H)
    177 # include <sys/timeb.h>
    178 # endif
    179 # if defined(MAGICKCORE_POSIX_SUPPORT)
    180 #  if defined(MAGICKCORE_HAVE_SYS_NDIR_H) || defined(MAGICKCORE_HAVE_SYS_DIR_H) || defined(MAGICKCORE_HAVE_NDIR_H)
    181 #   define dirent direct
    182 #   define NAMLEN(dirent) (dirent)->d_namlen
    183 #   if defined(MAGICKCORE_HAVE_SYS_NDIR_H)
    184 #    include <sys/ndir.h>
    185 #   endif
    186 #   if defined(MAGICKCORE_HAVE_SYS_DIR_H)
    187 #    include <sys/dir.h>
    188 #   endif
    189 #   if defined(MAGICKCORE_HAVE_NDIR_H)
    190 #    include <ndir.h>
    191 #   endif
    192 #  else
    193 #   include <dirent.h>
    194 #   define NAMLEN(dirent) strlen((dirent)->d_name)
    195 #  endif
    196 #  include <sys/wait.h>
    197 #  include <pwd.h>
    198 # endif
    199 # if !defined(S_ISDIR)
    200 #  define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
    201 # endif
    202 # if !defined(S_ISREG)
    203 #  define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
    204 # endif
    205 # include "MagickCore/magick-type.h"
    206 # if !defined(MAGICKCORE_WINDOWS_SUPPORT)
    207 #  include <sys/time.h>
    208 # if defined(MAGICKCORE_HAVE_SYS_TIMES_H)
    209 #  include <sys/times.h>
    210 # endif
    211 # if defined(MAGICKCORE_HAVE_SYS_RESOURCE_H)
    212 #  include <sys/resource.h>
    213 # endif
    214 # if defined(MAGICKCORE_HAVE_SYS_MMAN_H)
    215 #  include <sys/mman.h>
    216 # endif
    217 # if defined(MAGICKCORE_HAVE_SYS_SENDFILE_H)
    218 #  include <sys/sendfile.h>
    219 # endif
    220 #endif
    221 #else
    222 # include <types.h>
    223 # include <stat.h>
    224 # if defined(macintosh)
    225 #  if !defined(DISABLE_SIOUX)
    226 #   include <SIOUX.h>
    227 #   include <console.h>
    228 #  endif
    229 #  include <unix.h>
    230 # endif
    231 # include "MagickCore/magick-type.h"
    232 #endif
    233 
    234 #if defined(S_IRUSR) && defined(S_IWUSR)
    235 # define S_MODE (S_IRUSR | S_IWUSR)
    236 #elif defined (MAGICKCORE_WINDOWS_SUPPORT)
    237 # define S_MODE (_S_IREAD | _S_IWRITE)
    238 #else
    239 # define S_MODE  0600
    240 #endif
    241 
    242 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
    243 # include "MagickCore/nt-base.h"
    244 #endif
    245 #ifdef __VMS
    246 # include "MagickCore/vms.h"
    247 #endif
    248 
    249 #undef HAVE_CONFIG_H
    250 #undef gamma
    251 #undef index
    252 #undef pipe
    253 #undef y1
    254 
    255 /*
    256   Review these platform specific definitions.
    257 */
    258 #if defined(MAGICKCORE_POSIX_SUPPORT) &&  !( defined(__OS2__) || defined( vms ) )
    259 # define DirectorySeparator  "/"
    260 # define DirectoryListSeparator  ':'
    261 # define EditorOptions  " -title \"Edit Image Comment\" -e vi"
    262 # define Exit  exit
    263 # define IsBasenameSeparator(c)  ((c) == '/' ? MagickTrue : MagickFalse)
    264 # define X11_PREFERENCES_PATH  "~/."
    265 # define ProcessPendingEvents(text)
    266 # define ReadCommandlLine(argc,argv)
    267 # define SetNotifyHandlers
    268 #else
    269 # ifdef __VMS
    270 #  define X11_APPLICATION_PATH  "decw$system_defaults:"
    271 #  define DirectorySeparator  ""
    272 #  define DirectoryListSeparator  ';'
    273 #  define EditorOptions  ""
    274 #  define Exit  exit
    275 #  define IsBasenameSeparator(c) \
    276   (((c) == ']') || ((c) == ':') || ((c) == '/') ? MagickTrue : MagickFalse)
    277 #  define MAGICKCORE_LIBRARY_PATH  "sys$login:"
    278 #  define MAGICKCORE_SHARE_PATH  "sys$login:"
    279 #  define X11_PREFERENCES_PATH  "decw$user_defaults:"
    280 #  define ProcessPendingEvents(text)
    281 #  define ReadCommandlLine(argc,argv)
    282 #  define SetNotifyHandlers
    283 # endif
    284 # if defined(__OS2__)
    285 #   define DirectorySeparator  "\\"
    286 #   define DirectoryListSeparator  ';'
    287 # define EditorOptions  " -title \"Edit Image Comment\" -e vi"
    288 # define Exit  exit
    289 #  define IsBasenameSeparator(c) \
    290   (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse)
    291 # define PreferencesDefaults  "~\."
    292 # define ProcessPendingEvents(text)
    293 # define ReadCommandlLine(argc,argv)
    294 # define SetNotifyHandlers
    295 #endif
    296 # if defined(MAGICKCORE_WINDOWS_SUPPORT)
    297 #  define DirectorySeparator  "\\"
    298 #  define DirectoryListSeparator  ';'
    299 #  define EditorOptions ""
    300 #  define IsBasenameSeparator(c) \
    301   (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse)
    302 #  define ProcessPendingEvents(text)
    303 #  if !defined(X11_PREFERENCES_PATH)
    304 #    define X11_PREFERENCES_PATH  "~\\."
    305 #  endif
    306 #  define ReadCommandlLine(argc,argv)
    307 #  define SetNotifyHandlers \
    308     SetErrorHandler(NTErrorHandler); \
    309     SetWarningHandler(NTWarningHandler)
    310 #  if !defined(MAGICKCORE_HAVE_TIFFCONF_H)
    311 #    define HAVE_TIFFCONF_H
    312 #  endif
    313 # endif
    314 
    315 #endif
    316 
    317 /*
    318   Define system symbols if not already defined.
    319 */
    320 #if !defined(STDIN_FILENO)
    321 #define STDIN_FILENO  0x00
    322 #endif
    323 
    324 #if !defined(O_BINARY)
    325 #define O_BINARY  0x00
    326 #endif
    327 
    328 #if !defined(PATH_MAX)
    329 #define PATH_MAX  4096
    330 #endif
    331 
    332 #if defined(MAGICKCORE_LTDL_DELEGATE) || (defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DLL) && !defined(_LIB))
    333 #  define MAGICKCORE_MODULES_SUPPORT
    334 #endif
    335 
    336 #if defined(_MAGICKMOD_)
    337 # undef MAGICKCORE_BUILD_MODULES
    338 # define MAGICKCORE_BUILD_MODULES
    339 #endif
    340 
    341 /*
    342   Magick defines.
    343 */
    344 #define MagickMaxRecursionDepth  600
    345 #define Swap(x,y) ((x)^=(y), (y)^=(x), (x)^=(y))
    346 #if defined(_MSC_VER)
    347 # define DisableMSCWarning(nr) __pragma(warning(push)) \
    348   __pragma(warning(disable:nr))
    349 # define RestoreMSCWarning __pragma(warning(pop))
    350 #else
    351 # define DisableMSCWarning(nr)
    352 # define RestoreMSCWarning
    353 #endif
    354 
    355 #if defined(__cplusplus) || defined(c_plusplus)
    356 }
    357 #endif
    358 
    359 #endif
    360