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) 2009-2015, International Business Machines
7 *   Corporation and others.  All Rights Reserved.
8 *
9 ******************************************************************************
10 *
11 *  FILE NAME : icuplugimp.h
12 *
13 *  Internal functions for the ICU plugin system
14 *
15 *   Date         Name        Description
16 *   10/29/2009   sl          New.
17 ******************************************************************************
18 */
19 
20 
21 #ifndef ICUPLUGIMP_H
22 #define ICUPLUGIMP_H
23 
24 #include "unicode/icuplug.h"
25 
26 #if UCONFIG_ENABLE_PLUGINS
27 
28 /*========================*/
29 /** @{ Library Manipulation
30  */
31 
32 /**
33  * Open a library, adding a reference count if needed.
34  * @param libName library name to load
35  * @param status error code
36  * @return the library pointer, or NULL
37  * @internal internal use only
38  */
39 U_CAPI void * U_EXPORT2
40 uplug_openLibrary(const char *libName, UErrorCode *status);
41 
42 /**
43  * Close a library, if its reference count is 0
44  * @param lib the library to close
45  * @param status error code
46  * @internal internal use only
47  */
48 U_CAPI void U_EXPORT2
49 uplug_closeLibrary(void *lib, UErrorCode *status);
50 
51 /**
52  * Get a library's name, or NULL if not found.
53  * @param lib the library's name
54  * @param status error code
55  * @return the library name, or NULL if not found.
56  * @internal internal use only
57  */
58 U_CAPI  char * U_EXPORT2
59 uplug_findLibrary(void *lib, UErrorCode *status);
60 
61 /** @} */
62 
63 /*========================*/
64 /** {@ ICU Plugin internal interfaces
65  */
66 
67 /**
68  * Initialize the plugins
69  * @param status error result
70  * @internal - Internal use only.
71  */
72 U_CAPI void U_EXPORT2
73 uplug_init(UErrorCode *status);
74 
75 /**
76  * Get raw plug N
77  * @internal - Internal use only
78  */
79 U_CAPI UPlugData* U_EXPORT2
80 uplug_getPlugInternal(int32_t n);
81 
82 /**
83  * Get the name of the plugin file.
84  * @internal - Internal use only.
85  */
86 U_CAPI const char* U_EXPORT2
87 uplug_getPluginFile(void);
88 
89 /** @} */
90 
91 #endif
92 
93 #endif
94