ICU 49.1.1  49.1.1
icuplug.h
Go to the documentation of this file.
00001 /*
00002 ******************************************************************************
00003 *
00004 *   Copyright (C) 2009-2011, International Business Machines
00005 *   Corporation and others.  All Rights Reserved.
00006 *
00007 ******************************************************************************
00008 *
00009 *  FILE NAME : icuplug.h
00010 *
00011 *   Date         Name        Description
00012 *   10/29/2009   sl          New.
00013 ******************************************************************************
00014 */
00015 
00105 #ifndef ICUPLUG_H
00106 #define ICUPLUG_H
00107 
00108 #include "unicode/utypes.h"
00109 
00110 
00111 /* === Basic types === */
00112 
00113 #ifndef U_HIDE_INTERNAL_API
00114 
00121 struct UPlugData;
00122 typedef struct UPlugData UPlugData;
00123 
00131 #define UPLUG_TOKEN 0x54762486
00132 
00137 #define UPLUG_NAME_MAX              100
00138 
00139 
00146 typedef uint32_t UPlugTokenReturn;
00147 
00152 typedef enum {
00153     UPLUG_REASON_QUERY = 0,     
00154     UPLUG_REASON_LOAD = 1,     
00155     UPLUG_REASON_UNLOAD = 2,   
00156     UPLUG_REASON_COUNT         
00157 } UPlugReason;
00158 
00159 
00167 typedef enum {
00168     UPLUG_LEVEL_INVALID = 0,     
00169     UPLUG_LEVEL_UNKNOWN = 1,     
00170     UPLUG_LEVEL_LOW     = 2,     
00171     UPLUG_LEVEL_HIGH    = 3,     
00172     UPLUG_LEVEL_COUNT         
00173 } UPlugLevel;
00174 
00182 typedef UPlugTokenReturn (U_EXPORT2 UPlugEntrypoint) (
00183                   UPlugData *plug,
00184                   UPlugReason reason,
00185                   UErrorCode *status);
00186 
00187 /* === Needed for Implementing === */
00188 
00197 U_CAPI void U_EXPORT2 
00198 uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload);
00199 
00206 U_CAPI void U_EXPORT2
00207 uplug_setPlugLevel(UPlugData *plug, UPlugLevel level);
00208 
00215 U_CAPI UPlugLevel U_EXPORT2
00216 uplug_getPlugLevel(UPlugData *plug);
00217 
00225 U_CAPI UPlugLevel U_EXPORT2
00226 uplug_getCurrentLevel(void);
00227 
00228 
00234 U_CAPI UErrorCode U_EXPORT2
00235 uplug_getPlugLoadStatus(UPlugData *plug); 
00236 
00243 U_CAPI void U_EXPORT2
00244 uplug_setPlugName(UPlugData *plug, const char *name);
00245 
00252 U_CAPI const char * U_EXPORT2
00253 uplug_getPlugName(UPlugData *plug);
00254 
00261 U_CAPI const char * U_EXPORT2
00262 uplug_getSymbolName(UPlugData *plug);
00263 
00271 U_CAPI const char * U_EXPORT2
00272 uplug_getLibraryName(UPlugData *plug, UErrorCode *status);
00273 
00281 U_CAPI void * U_EXPORT2
00282 uplug_getLibrary(UPlugData *plug);
00283 
00290 U_CAPI void * U_EXPORT2
00291 uplug_getContext(UPlugData *plug);
00292 
00299 U_CAPI void U_EXPORT2
00300 uplug_setContext(UPlugData *plug, void *context);
00301 
00302 
00310 U_CAPI const char * U_EXPORT2
00311 uplug_getConfiguration(UPlugData *plug);
00312 
00328 U_CAPI UPlugData* U_EXPORT2
00329 uplug_nextPlug(UPlugData *prior);
00330 
00343 U_CAPI UPlugData* U_EXPORT2
00344 uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status);
00345 
00346 
00357 U_CAPI UPlugData* U_EXPORT2
00358 uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status);
00359 
00367 U_CAPI void U_EXPORT2
00368 uplug_removePlug(UPlugData *plug, UErrorCode *status);
00369 #endif  /* U_HIDE_INTERNAL_API */
00370 
00371 #endif