nt-base.h

Go to the documentation of this file.
00001 /*
00002   Copyright 1999-2010 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.
00006   obtain a copy of the License at
00007 
00008     http://www.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 Windows NT utility methods.
00017 */
00018 #ifndef _MAGICKCORE_NT_BASE_H
00019 #define _MAGICKCORE_NT_BASE_H
00020 
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024 
00025 #include "magick/delegate.h"
00026 #include "magick/delegate-private.h"
00027 #include "magick/exception.h"
00028 
00029 #define WIN32_LEAN_AND_MEAN
00030 #define VC_EXTRALEAN
00031 #define _CRT_SECURE_NO_DEPRECATE  1
00032 #include <windows.h>
00033 #include <wchar.h>
00034 #include <winuser.h>
00035 #include <wingdi.h>
00036 #include <io.h>
00037 #include <process.h>
00038 #include <errno.h>
00039 #if defined(_DEBUG) && !defined(__MINGW32__)
00040 #include <crtdbg.h>
00041 #endif
00042 
00043 #define PROT_READ  0x01
00044 #define PROT_WRITE  0x02
00045 #define MAP_SHARED  0x01
00046 #define MAP_PRIVATE  0x02
00047 #define MAP_ANONYMOUS  0x20
00048 #define F_OK 0
00049 #define R_OK 4
00050 #define W_OK 2
00051 #define RW_OK 6
00052 #define _SC_PAGESIZE 1
00053 #define _SC_PHYS_PAGES 2
00054 #define _SC_OPEN_MAX 3
00055 #if !defined(SSIZE_MAX)
00056 #define SSIZE_MAX  0x7fffffffL
00057 #endif
00058 
00059 /*
00060   _MSC_VER values:
00061     1100 MSVC 5.0
00062     1200 MSVC 6.0
00063     1300 MSVC 7.0 Visual C++ .NET 2002
00064     1310 Visual c++ .NET 2003
00065     1400 Visual C++ 2005
00066     1500 Visual C++ 2008
00067 */
00068 
00069 #if !defined(chsize)
00070 # if defined(__BORLANDC__)
00071 #   define chsize(file,length)  chsize(file,length)
00072 # else
00073 #   define chsize(file,length)  _chsize(file,length)
00074 # endif
00075 #endif
00076 
00077 #if !defined(access)
00078 #  define access(path,mode)  _access(path,mode)
00079 #endif
00080 #if !defined(chdir)
00081 #  define chdir  _chdir
00082 #endif
00083 #if !defined(close)
00084 #  define close  _close
00085 #endif
00086 #if !defined(closedir)
00087 #  define closedir(directory)  NTCloseDirectory(directory)
00088 #endif
00089 #if !defined(fdopen)
00090 #  define fdopen  _fdopen
00091 #endif
00092 #if !defined(fileno)
00093 #  define fileno  _fileno
00094 #endif
00095 #if !defined(fseek)
00096 #  define fseeko  _fseeki64
00097 #endif
00098 #if !defined(fstat) && !defined(__BORLANDC__)
00099 #if defined(__WINDOWS__) && !defined(Windows95) && \
00100   !(defined(_MSC_VER) && (_MSC_VER < 1400)) &&  (__MSVCRT_VERSION__ < 0x800)
00101 #  define fstat  _fstati64
00102 #else
00103 #  define fstat  _fstat
00104 #endif
00105 #endif
00106 #if !defined(fsync)
00107 #  define fsync  _commit
00108 #endif
00109 #if !defined(ftell)
00110 #  define ftello  _ftelli64
00111 #endif
00112 #if !defined(ftruncate)
00113 #  define ftruncate(file,length)  NTTruncateFile(file,length)
00114 #endif
00115 #if !defined(getcwd)
00116 #  define getcwd  _getcwd
00117 #endif
00118 #if !defined(getpid)
00119 #  define getpid  _getpid
00120 #endif
00121 #if !defined(hypot)
00122 #  define hypot  _hypot
00123 #endif
00124 #if !defined(inline)
00125 #  define inline __inline
00126 #endif
00127 #if !defined(isatty)
00128 #  define isatty _isatty
00129 #endif
00130 #if !defined(MAGICKCORE_LTDL_DELEGATE)
00131 #if !defined(lt_dlclose)
00132 #  define lt_dlclose(handle)  NTCloseLibrary(handle)
00133 #endif
00134 #if !defined(lt_dlerror)
00135 #  define lt_dlerror()  NTGetLibraryError()
00136 #endif
00137 #if !defined(lt_dlexit)
00138 #  define lt_dlexit()  NTExitLibrary()
00139 #endif
00140 #if !defined(lt_dlinit)
00141 #  define lt_dlinit()  NTInitializeLibrary()
00142 #endif
00143 #if !defined(lt_dlopen)
00144 #  define lt_dlopen(filename)  NTOpenLibrary(filename)
00145 #endif
00146 #if !defined(lt_dlsetsearchpath)
00147 #  define lt_dlsetsearchpath(path)  NTSetSearchPath(path)
00148 #endif
00149 #if !defined(lt_dlsym)
00150 #  define lt_dlsym(handle,name)  NTGetLibrarySymbol(handle,name)
00151 #endif
00152 #endif
00153 #if !defined(mkdir)
00154 #  define mkdir  _mkdir
00155 #endif
00156 #if !defined(mmap)
00157 #  define mmap(address,length,protection,access,file,offset) \
00158   NTMapMemory(address,length,protection,access,file,offset)
00159 #endif
00160 #if !defined(msync)
00161 #  define msync(address,length,flags)  NTSyncMemory(address,length,flags)
00162 #endif
00163 #if !defined(munmap)
00164 #  define munmap(address,length)  NTUnmapMemory(address,length)
00165 #endif
00166 #if !defined(opendir)
00167 #  define opendir(directory)  NTOpenDirectory(directory)
00168 #endif
00169 #if !defined(open)
00170 #  define open  _open
00171 #endif
00172 #if !defined(pclose)
00173 #  define pclose  _pclose
00174 #endif
00175 #if !defined(popen)
00176 #  define popen  _popen
00177 #endif
00178 #if !defined(read)
00179 #  define read  _read
00180 #endif
00181 #if !defined(readdir)
00182 #  define readdir(directory)  NTReadDirectory(directory)
00183 #endif
00184 #if !defined(seekdir)
00185 #  define seekdir(directory,offset)  NTSeekDirectory(directory,offset)
00186 #endif
00187 #if !defined(setmode)
00188 #  define setmode  _setmode
00189 #endif
00190 #if !defined(stat) && !defined(__BORLANDC__)
00191 #if defined(__WINDOWS__) && !defined(Windows95) && \
00192   !(defined(_MSC_VER) && (_MSC_VER < 1400)) &&  (__MSVCRT_VERSION__ < 0x800)
00193 #  define stat  _stati64
00194 #else
00195 #  define stat  _stat
00196 #endif
00197 #endif
00198 #if !defined(strcasecmp)
00199 #  define strcasecmp  _strcmpi
00200 #endif
00201 #if !defined(strncasecmp)
00202 #  define strncasecmp  _strnicmp
00203 #endif
00204 #if !defined(sysconf)
00205 #  define sysconf(name)  NTSystemConfiguration(name)
00206 #endif
00207 #if !defined(telldir)
00208 #  define telldir(directory)  NTTellDirectory(directory)
00209 #endif
00210 #if !defined(tempnam)
00211 #  define tempnam  _tempnam
00212 #endif
00213 #if !defined(vsnprintf)
00214 #if !defined(_MSC_VER) || (defined(_MSC_VER) && (_MSC_VER < 1500))
00215 #define vsnprintf _vsnprintf 
00216 #endif
00217 #endif
00218 #if !defined(write)
00219 #  define write  _write
00220 #endif
00221 #if !defined(wstat) && !defined(__BORLANDC__)
00222 #if defined(__WINDOWS__) && !defined(Windows95) && \
00223   !(defined(_MSC_VER) && (_MSC_VER < 1400)) &&  (__MSVCRT_VERSION__ < 0x800)
00224 #  define wstat  _wstati64
00225 #else
00226 #  define wstat  _wstat
00227 #endif
00228 #endif
00229 
00230 #if defined(_MT) && defined(__WINDOWS__)
00231 #  define SAFE_GLOBAL  __declspec(thread)
00232 #else
00233 #  define SAFE_GLOBAL
00234 #endif
00235 
00236 #if defined(__BORLANDC__)
00237 #undef _O_RANDOM
00238 #define _O_RANDOM 0
00239 #undef _O_SEQUENTIAL
00240 #define _O_SEQUENTIAL 0
00241 #undef _O_SHORT_LIVED
00242 #define _O_SHORT_LIVED 0
00243 #undef _O_TEMPORARY
00244 #define _O_TEMPORARY 0
00245 #endif
00246 
00247 #if !defined(XS_VERSION)
00248 struct dirent
00249 {
00250   char
00251     d_name[2048];
00252 
00253   int
00254     d_namlen;
00255 };
00256 
00257 typedef struct _DIR
00258 {
00259   HANDLE
00260     hSearch;
00261 
00262   WIN32_FIND_DATA
00263     Win32FindData;
00264 
00265   BOOL
00266     firsttime;
00267 
00268   struct dirent
00269     file_info;
00270 } DIR;
00271 
00272 typedef struct _NTMEMORYSTATUSEX
00273 {
00274   DWORD
00275     dwLength,
00276     dwMemoryLoad;
00277 
00278   DWORDLONG
00279     ullTotalPhys,
00280     ullAvailPhys,
00281     ullTotalPageFile,
00282     ullAvailPageFile,
00283     ullTotalVirtual,
00284     ullAvailVirtual,
00285     ullAvailExtendedVirtual;
00286 } NTMEMORYSTATUSEX;
00287 
00288 typedef UINT
00289   (CALLBACK *LPFNDLLFUNC1)(DWORD,UINT);
00290 
00291 typedef UINT
00292   (CALLBACK *LPFNDLLFUNC2)(NTMEMORYSTATUSEX *);
00293 
00294 #endif
00295 
00296 #if !defined(ssize_t) && !defined(__MINGW32__)
00297 typedef long ssize_t;
00298 #endif
00299 
00300 #if defined(MAGICKCORE_BZLIB_DELEGATE)
00301 #  if defined(_WIN32)
00302 #    define BZ_IMPORT 1
00303 #  endif
00304 #endif
00305 
00306 extern MagickExport char
00307   *NTGetLastError(void);
00308 
00309 extern MagickExport const GhostscriptVectors
00310   *NTGhostscriptDLLVectors(void);
00311 
00312 #if !defined(MAGICKCORE_LTDL_DELEGATE)
00313 extern MagickExport const char
00314   *NTGetLibraryError(void);
00315 #endif
00316 
00317 #if !defined(XS_VERSION)
00318 extern MagickExport const char
00319   *NTGetLibraryError(void);
00320 
00321 extern MagickExport DIR
00322   *NTOpenDirectory(const char *);
00323 
00324 extern MagickExport double
00325   NTElapsedTime(void),
00326   NTUserTime(void);
00327 
00328 extern MagickExport int
00329   Exit(int),
00330   IsWindows95(),
00331   NTCloseDirectory(DIR *),
00332   NTCloseLibrary(void *),
00333   NTControlHandler(void),
00334   NTExitLibrary(void),
00335   NTTruncateFile(int,off_t),
00336   NTGhostscriptDLL(char *,int),
00337   NTGhostscriptEXE(char *,int),
00338   NTGhostscriptFonts(char *,int),
00339   NTGhostscriptLoadDLL(void),
00340   NTGhostscriptUnLoadDLL(void),
00341   NTInitializeLibrary(void),
00342   NTSetSearchPath(const char *),
00343   NTSyncMemory(void *,size_t,int),
00344   NTUnmapMemory(void *,size_t),
00345   NTSystemCommand(const char *);
00346 
00347 extern MagickExport long
00348   NTSystemConfiguration(int),
00349   NTTellDirectory(DIR *);
00350 
00351 extern MagickExport MagickBooleanType
00352   NTGatherRandomData(const size_t,unsigned char *),
00353   NTGetExecutionPath(char *,const size_t),
00354   NTGetModulePath(const char *,char *),
00355   NTReportEvent(const char *,const MagickBooleanType),
00356   NTReportException(const char *,const MagickBooleanType);
00357 
00358 extern MagickExport struct dirent
00359   *NTReadDirectory(DIR *);
00360 
00361 extern MagickExport unsigned char
00362   *NTRegistryKeyLookup(const char *),
00363   *NTResourceToBlob(const char *);
00364 
00365 extern MagickExport void
00366   NTErrorHandler(const ExceptionType,const char *,const char *),
00367   *NTGetLibrarySymbol(void *,const char *),
00368   *NTMapMemory(char *,size_t,int,int,int,MagickOffsetType),
00369   *NTOpenLibrary(const char *),
00370   NTSeekDirectory(DIR *,long),
00371   NTWarningHandler(const ExceptionType,const char *,const char *);
00372 
00373 #endif /* !XS_VERSION */
00374 
00375 #if defined(__cplusplus) || defined(c_plusplus)
00376 }
00377 #endif /* !C++ */
00378 
00379 #endif /* !_MAGICKCORE_NT_BASE_H */

Generated on Thu Jul 2 12:03:20 2009 for MagickCore by  doxygen 1.5.8