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