| 1 | // © 2016 and later: Unicode, Inc. and others. | 
|---|
| 2 | // License & terms of use: http://www.unicode.org/copyright.html | 
|---|
| 3 | /* | 
|---|
| 4 | ****************************************************************************** | 
|---|
| 5 | * | 
|---|
| 6 | *   Copyright (C) 1999-2011, International Business Machines | 
|---|
| 7 | *   Corporation and others.  All Rights Reserved. | 
|---|
| 8 | * | 
|---|
| 9 | ******************************************************************************/ | 
|---|
| 10 |  | 
|---|
| 11 | /*---------------------------------------------------------------------------------- | 
|---|
| 12 | * | 
|---|
| 13 | *       Memory mapped file wrappers for use by the ICU Data Implementation | 
|---|
| 14 | * | 
|---|
| 15 | *           Porting note:  The implementation of these functions is very platform specific. | 
|---|
| 16 | *             Not all platforms can do real memory mapping.  Those that can't | 
|---|
| 17 | *             still must implement these functions, getting the data into memory using | 
|---|
| 18 | *             whatever means are available. | 
|---|
| 19 | * | 
|---|
| 20 | *            These functions are part of the ICU internal implementation, and | 
|---|
| 21 | *            are not intended to be used directly by applications. | 
|---|
| 22 | * | 
|---|
| 23 | *----------------------------------------------------------------------------------*/ | 
|---|
| 24 |  | 
|---|
| 25 | #ifndef __UMAPFILE_H__ | 
|---|
| 26 | #define __UMAPFILE_H__ | 
|---|
| 27 |  | 
|---|
| 28 | #include "unicode/putil.h" | 
|---|
| 29 | #include "unicode/udata.h" | 
|---|
| 30 | #include "putilimp.h" | 
|---|
| 31 |  | 
|---|
| 32 | U_CAPI  UBool U_EXPORT2 uprv_mapFile(UDataMemory *pdm, const char *path, UErrorCode *status); | 
|---|
| 33 | U_CFUNC void  uprv_unmapFile(UDataMemory *pData); | 
|---|
| 34 |  | 
|---|
| 35 | /* MAP_NONE: no memory mapping, no file access at all */ | 
|---|
| 36 | #define MAP_NONE        0 | 
|---|
| 37 | #define MAP_WIN32       1 | 
|---|
| 38 | #define MAP_POSIX       2 | 
|---|
| 39 | #define MAP_STDIO       3 | 
|---|
| 40 | #define MAP_390DLL      4 | 
|---|
| 41 |  | 
|---|
| 42 | #if UCONFIG_NO_FILE_IO | 
|---|
| 43 | #   define MAP_IMPLEMENTATION MAP_NONE | 
|---|
| 44 | #elif U_PLATFORM_USES_ONLY_WIN32_API | 
|---|
| 45 | #   define MAP_IMPLEMENTATION MAP_WIN32 | 
|---|
| 46 | #elif U_HAVE_MMAP || U_PLATFORM == U_PF_OS390 | 
|---|
| 47 | #   if U_PLATFORM == U_PF_OS390 && defined (OS390_STUBDATA) | 
|---|
| 48 | /*   No memory mapping for 390 batch mode.  Fake it using dll loading.  */ | 
|---|
| 49 | #       define MAP_IMPLEMENTATION MAP_390DLL | 
|---|
| 50 | #   else | 
|---|
| 51 | #       define MAP_IMPLEMENTATION MAP_POSIX | 
|---|
| 52 | #   endif | 
|---|
| 53 | #else /* unknown platform, no memory map implementation: use stdio.h and uprv_malloc() instead */ | 
|---|
| 54 | #   define MAP_IMPLEMENTATION MAP_STDIO | 
|---|
| 55 | #endif | 
|---|
| 56 |  | 
|---|
| 57 | #endif | 
|---|
| 58 |  | 
|---|