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