Lines Matching refs:plug

264 static void uplug_callPlug(UPlugData *plug, UPlugReason reason, UErrorCode *status) {
266 if(plug==NULL||U_FAILURE(*status)) {
269 token = (*(plug->entrypoint))(plug, reason, status);
276 static void uplug_unloadPlug(UPlugData *plug, UErrorCode *status) {
277 if(plug->awaitingLoad) { /* shouldn't happen. Plugin hasn'tbeen loaded yet.*/
281 if(U_SUCCESS(plug->pluginStatus)) {
282 /* Don't unload a plug which has a failing load status - means it didn't actually load. */
283 uplug_callPlug(plug, UPLUG_REASON_UNLOAD, status);
287 static void uplug_queryPlug(UPlugData *plug, UErrorCode *status) {
288 if(!plug->awaitingLoad || !(plug->level == UPLUG_LEVEL_UNKNOWN) ) { /* shouldn't happen. Plugin hasn'tbeen loaded yet.*/
292 plug->level = UPLUG_LEVEL_INVALID;
293 uplug_callPlug(plug, UPLUG_REASON_QUERY, status);
295 if(plug->level == UPLUG_LEVEL_INVALID) {
296 plug->pluginStatus = U_PLUGIN_DIDNT_SET_LEVEL;
297 plug->awaitingLoad = FALSE;
300 plug->pluginStatus = U_INTERNAL_PROGRAM_ERROR;
301 plug->awaitingLoad = FALSE;
306 static void uplug_loadPlug(UPlugData *plug, UErrorCode *status) {
307 if(!plug->awaitingLoad || (plug->level < UPLUG_LEVEL_LOW) ) { /* shouldn't happen. Plugin hasn'tbeen loaded yet.*/
311 uplug_callPlug(plug, UPLUG_REASON_LOAD, status);
312 plug->awaitingLoad = FALSE;
314 plug->pluginStatus = U_INTERNAL_PROGRAM_ERROR;
320 UPlugData *plug = NULL;
331 plug = &pluginList[pluginCount++];
333 plug->token = UPLUG_TOKEN;
334 plug->structSize = sizeof(UPlugData);
335 plug->name[0]=0;
336 plug->level = UPLUG_LEVEL_UNKNOWN; /* initialize to null state */
337 plug->awaitingLoad = TRUE;
338 plug->dontUnload = FALSE;
339 plug->pluginStatus = U_ZERO_ERROR;
340 plug->libName[0] = 0;
341 plug->config[0]=0;
342 plug->sym[0]=0;
343 plug->lib=NULL;
344 plug->entrypoint=NULL;
347 return plug;
352 UPlugData *plug;
358 plug = uplug_allocateEmptyPlug(status);
360 uprv_strncpy(plug->config, config, UPLUG_NAME_MAX);
362 plug->config[0] = 0;
366 uprv_strncpy(plug->sym, symName, UPLUG_NAME_MAX);
368 plug->sym[0] = 0;
371 plug->entrypoint = entrypoint;
372 plug->lib = lib;
373 uplug_queryPlug(plug, status);
375 return plug;
378 static void uplug_deallocatePlug(UPlugData *plug, UErrorCode *status) {
380 if(!plug->dontUnload) {
382 uplug_closeLibrary(plug->lib, &subStatus);
385 plug->lib = NULL;
392 pluginCount = uplug_removeEntryAt(pluginList, pluginCount, sizeof(plug[0]), uplug_pluginNumber(plug));
395 plug->awaitingLoad=FALSE;
396 plug->entrypoint=0;
397 plug->dontUnload=TRUE;
409 uplug_removePlug(UPlugData *plug, UErrorCode *status) {
415 if(cursor==plug) {
416 plugToRemove = plug;
510 uplug_getPlugLoadStatus(UPlugData *plug) {
511 return plug->pluginStatus;
522 UPlugData *plug = NULL;
524 plug = uplug_allocatePlug(entrypoint, config, lib, sym, status);
527 return plug;
529 uplug_deallocatePlug(plug, status);
536 UPlugData* plug = uplug_initPlugFromEntrypointAndLibrary(entrypoint, config, NULL, NULL, status);
537 uplug_loadPlug(plug, status);
538 return plug;
546 UPlugData *plug = uplug_allocateEmptyPlug(status);
549 plug->pluginStatus = loadStatus;
550 plug->awaitingLoad = FALSE; /* Won't load. */
551 plug->dontUnload = TRUE; /* cannot unload. */
554 uprv_strncpy(plug->sym, sym, UPLUG_NAME_MAX);
558 uprv_strncpy(plug->libName, libName, UPLUG_NAME_MAX);
562 uprv_strncpy(plug->name, nameOrError, UPLUG_NAME_MAX);
566 uprv_strncpy(plug->config, config, UPLUG_NAME_MAX);
569 return plug;
578 UPlugData *plug = NULL;
586 plug = uplug_initPlugFromEntrypointAndLibrary(entrypoint, config, lib, sym, status);
587 if(plug!=NULL&&U_SUCCESS(*status)) {
588 plug->lib = lib; /* plug takes ownership of library */
593 plug = uplug_initErrorPlug(libName,sym,config,"ERROR: Could not load entrypoint",(lib==NULL)?U_MISSING_RESOURCE_ERROR:*status,&subStatus);
601 plug = uplug_initErrorPlug(libName,sym,config,"ERROR: could not load library",(lib==NULL)?U_MISSING_RESOURCE_ERROR:*status,&subStatus);
603 return plug;
608 UPlugData *plug = NULL;
610 plug = uplug_initPlugFromLibrary(libName, sym, config, status);
611 uplug_loadPlug(plug, status);
613 return plug;
820 UPlugData *plug = uplug_initPlugFromLibrary(libName, symName, config, &subStatus);
826 DBG((stderr, " -> %p, %s\n", (void*)plug, u_errorName(subStatus)));
828 (void)plug; /* unused */