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 */
39U_INTERNAL void * U_EXPORT2
40uplug_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 */
48U_INTERNAL void U_EXPORT2
49uplug_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 */
58U_INTERNAL char * U_EXPORT2
59uplug_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 */
72U_INTERNAL void U_EXPORT2
73uplug_init(UErrorCode *status);
74
75/**
76 * Get raw plug N
77 * @internal - Internal use only
78 */
79U_INTERNAL UPlugData* U_EXPORT2
80uplug_getPlugInternal(int32_t n);
81
82/**
83 * Get the name of the plugin file.
84 * @internal - Internal use only.
85 */
86U_INTERNAL const char* U_EXPORT2
87uplug_getPluginFile(void);
88
89/** @} */
90
91#endif
92
93#endif
94