nt-base.h

Go to the documentation of this file.
00001 /*
00002   Copyright 1999-2008 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 #if !defined(chsize)
00060 # if defined(__BORLANDC__)
00061 #   define chsize(file,length)  chsize(file,length)
00062 # else
00063 #   define chsize(file,length)  _chsize(file,length)
00064 # endif
00065 #endif
00066 
00067 #if !defined(access)
00068 #  define access(path,mode)  _access(path,mode)
00069 #endif
00070 #if !defined(chdir)
00071 #  define chdir  _chdir
00072 #endif
00073 #if !defined(close)
00074 #  define close  _close
00075 #endif
00076 #if !defined(closedir)
00077 #  define closedir(directory)  NTCloseDirectory(directory)
00078 #endif
00079 #if !defined(fdopen)
00080 #  define fdopen  _fdopen
00081 #endif
00082 #if !defined(fileno)
00083 #  define fileno  _fileno
00084 #endif
00085 #if !defined(fsync)
00086 #  define fsync  _commit
00087 #endif
00088 #if !defined(ftruncate)
00089 #  define ftruncate(file,length)  NTTruncateFile(file,length)
00090 #endif
00091 #if !defined(getcwd)
00092 #  define getcwd  _getcwd
00093 #endif
00094 #if !defined(getpid)
00095 #  define getpid  _getpid
00096 #endif
00097 #if !defined(hypot)
00098 #  define hypot  _hypot
00099 #endif
00100 #if !defined(inline)
00101 #  define inline __inline
00102 #endif
00103 #if !defined(isatty)
00104 #  define isatty _isatty
00105 #endif
00106 #if !defined(MAGICKCORE_LTDL_DELEGATE)
00107 #if !defined(lt_dlclose)
00108 #  define lt_dlclose(handle)  NTCloseLibrary(handle)
00109 #endif
00110 #if !defined(lt_dlerror)
00111 #  define lt_dlerror()  NTGetLibraryError()
00112 #endif
00113 #if !defined(lt_dlexit)
00114 #  define lt_dlexit()  NTExitLibrary()
00115 #endif
00116 #if !defined(lt_dlinit)
00117 #  define lt_dlinit()  NTInitializeLibrary()
00118 #endif
00119 #if !defined(lt_dlopen)
00120 #  define lt_dlopen(filename)  NTOpenLibrary(filename)
00121 #endif
00122 #if !defined(lt_dlsetsearchpath)
00123 #  define lt_dlsetsearchpath(path)  NTSetSearchPath(path)
00124 #endif
00125 #if !defined(lt_dlsym)
00126 #  define lt_dlsym(handle,name)  NTGetLibrarySymbol(handle,name)
00127 #endif
00128 #endif
00129 #if !defined(mkdir)
00130 #  define mkdir  _mkdir
00131 #endif
00132 #if !defined(mmap)
00133 #  define mmap(address,length,protection,access,file,offset) \
00134   NTMapMemory(address,length,protection,access,file,offset)
00135 #endif
00136 #if !defined(msync)
00137 #  define msync(address,length,flags)  NTSyncMemory(address,length,flags)
00138 #endif
00139 #if !defined(munmap)
00140 #  define munmap(address,length)  NTUnmapMemory(address,length)
00141 #endif
00142 #if !defined(opendir)
00143 #  define opendir(directory)  NTOpenDirectory(directory)
00144 #endif
00145 #if !defined(open)
00146 #  define open  _open
00147 #endif
00148 #if !defined(pclose)
00149 #  define pclose  _pclose
00150 #endif
00151 #if !defined(popen)
00152 #  define popen  _popen
00153 #endif
00154 #if !defined(read)
00155 #  define read  _read
00156 #endif
00157 #if !defined(readdir)
00158 #  define readdir(directory)  NTReadDirectory(directory)
00159 #endif
00160 #if !defined(seekdir)
00161 #  define seekdir(directory,offset)  NTSeekDirectory(directory,offset)
00162 #endif
00163 #if !defined(setmode)
00164 #  define setmode  _setmode
00165 #endif
00166 #if !defined(strcasecmp)
00167 #  define strcasecmp  _strcmpi
00168 #endif
00169 #if !defined(strncasecmp)
00170 #  define strncasecmp  _strnicmp
00171 #endif
00172 #if !defined(sysconf)
00173 #  define sysconf(name)  NTSystemConfiguration(name)
00174 #endif
00175 #if !defined(telldir)
00176 #  define telldir(directory)  NTTellDirectory(directory)
00177 #endif
00178 #if !defined(tempnam)
00179 #  define tempnam  _tempnam
00180 #endif
00181 #if !defined(vsnprintf)
00182 #if !defined(_MSC_VER) || (defined(_MSC_VER) && _MSC_VER < 1500)
00183 #define vsnprintf _vsnprintf 
00184 #endif
00185 #endif
00186 #if !defined(write)
00187 #  define write  _write
00188 #endif
00189 
00190 #if defined(_MT) && defined(__WINDOWS__)
00191 #  define SAFE_GLOBAL  __declspec(thread)
00192 #else
00193 #  define SAFE_GLOBAL
00194 #endif
00195 
00196 #if defined(__BORLANDC__)
00197 #undef _O_RANDOM
00198 #define _O_RANDOM 0
00199 #undef _O_SEQUENTIAL
00200 #define _O_SEQUENTIAL 0
00201 #undef _O_SHORT_LIVED
00202 #define _O_SHORT_LIVED 0
00203 #undef _O_TEMPORARY
00204 #define _O_TEMPORARY 0
00205 #endif
00206 
00207 #if !defined(XS_VERSION)
00208 struct dirent
00209 {
00210   char
00211     d_name[2048];
00212 
00213   int
00214     d_namlen;
00215 };
00216 
00217 typedef struct _DIR
00218 {
00219   HANDLE
00220     hSearch;
00221 
00222   WIN32_FIND_DATA
00223     Win32FindData;
00224 
00225   BOOL
00226     firsttime;
00227 
00228   struct dirent
00229     file_info;
00230 } DIR;
00231 
00232 typedef struct _NTMEMORYSTATUSEX
00233 {
00234   DWORD
00235     dwLength,
00236     dwMemoryLoad;
00237 
00238   DWORDLONG
00239     ullTotalPhys,
00240     ullAvailPhys,
00241     ullTotalPageFile,
00242     ullAvailPageFile,
00243     ullTotalVirtual,
00244     ullAvailVirtual,
00245     ullAvailExtendedVirtual;
00246 } NTMEMORYSTATUSEX;
00247 
00248 typedef UINT
00249   (CALLBACK *LPFNDLLFUNC1)(DWORD,UINT);
00250 
00251 typedef UINT
00252   (CALLBACK *LPFNDLLFUNC2)(NTMEMORYSTATUSEX *);
00253 
00254 #endif
00255 
00256 #if !defined(ssize_t) && !defined(__MINGW32__)
00257 typedef long ssize_t;
00258 #endif
00259 
00260 #if defined(MAGICKCORE_BZLIB_DELEGATE)
00261 #  if defined(_WIN32)
00262 #    define BZ_IMPORT 1
00263 #  endif
00264 #endif
00265 
00266 extern MagickExport char
00267   *NTGetLastError(void);
00268 
00269 extern MagickExport const GhostscriptVectors
00270   *NTGhostscriptDLLVectors(void);
00271 
00272 #if !defined(MAGICKCORE_LTDL_DELEGATE)
00273 extern MagickExport const char
00274   *NTGetLibraryError(void);
00275 #endif
00276 
00277 #if !defined(XS_VERSION)
00278 extern MagickExport const char
00279   *NTGetLibraryError(void);
00280 
00281 extern MagickExport DIR
00282   *NTOpenDirectory(const char *);
00283 
00284 extern MagickExport double
00285   NTElapsedTime(void),
00286   NTUserTime(void);
00287 
00288 extern MagickExport int
00289   Exit(int),
00290   IsWindows95(),
00291   NTCloseDirectory(DIR *),
00292   NTCloseLibrary(void *),
00293   NTControlHandler(void),
00294   NTExitLibrary(void),
00295   NTTruncateFile(int,off_t),
00296   NTGhostscriptDLL(char *,int),
00297   NTGhostscriptEXE(char *,int),
00298   NTGhostscriptFonts(char *,int),
00299   NTGhostscriptLoadDLL(void),
00300   NTGhostscriptUnLoadDLL(void),
00301   NTInitializeLibrary(void),
00302   NTSetSearchPath(const char *),
00303   NTSyncMemory(void *,size_t,int),
00304   NTUnmapMemory(void *,size_t),
00305   NTSystemCommand(const char *);
00306 
00307 extern MagickExport long
00308   NTSystemConfiguration(int),
00309   NTTellDirectory(DIR *);
00310 
00311 extern MagickExport MagickBooleanType
00312   NTGatherRandomData(const size_t,unsigned char *),
00313   NTGetExecutionPath(char *,const size_t),
00314   NTGetModulePath(const char *,char *),
00315   NTReportEvent(const char *,const MagickBooleanType),
00316   NTReportException(const char *,const MagickBooleanType);
00317 
00318 extern MagickExport struct dirent
00319   *NTReadDirectory(DIR *);
00320 
00321 extern MagickExport unsigned char
00322   *NTRegistryKeyLookup(const char *),
00323   *NTResourceToBlob(const char *);
00324 
00325 extern MagickExport void
00326   NTErrorHandler(const ExceptionType,const char *,const char *),
00327   *NTGetLibrarySymbol(void *,const char *),
00328   *NTMapMemory(char *,size_t,int,int,int,MagickOffsetType),
00329   *NTOpenLibrary(const char *),
00330   NTSeekDirectory(DIR *,long),
00331   NTWarningHandler(const ExceptionType,const char *,const char *);
00332 
00333 #endif /* !XS_VERSION */
00334 
00335 #if defined(__cplusplus) || defined(c_plusplus)
00336 }
00337 #endif /* !C++ */
00338 
00339 #endif /* !_MAGICKCORE_NT_BASE_H */

Generated on Sat Nov 22 23:45:17 2008 for MagickCore by  doxygen 1.5.7.1