NPError fillPluginFunctionTable(NPPluginFuncs* aNPPFuncs) { if(aNPPFuncs == NULL) { return NPERR_INVALID_FUNCTABLE_ERROR; } // Set up the plugin function table that Netscape will use to // call us. Netscape needs to know about our version and size // and have a UniversalProcPointer for every function we implement. aNPPFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR; #ifdef XP_MAC aNPPFuncs->newp = NewNPP_NewProc(Private_New); aNPPFuncs->destroy = NewNPP_DestroyProc(Private_Destroy); aNPPFuncs->setwindow = NewNPP_SetWindowProc(Private_SetWindow); aNPPFuncs->newstream = NewNPP_NewStreamProc(Private_NewStream); aNPPFuncs->destroystream = NewNPP_DestroyStreamProc(Private_DestroyStream); aNPPFuncs->asfile = NewNPP_StreamAsFileProc(Private_StreamAsFile); aNPPFuncs->writeready = NewNPP_WriteReadyProc(Private_WriteReady); aNPPFuncs->write = NewNPP_WriteProc(Private_Write); aNPPFuncs->print = NewNPP_PrintProc(Private_Print); aNPPFuncs->event = NewNPP_HandleEventProc(Private_HandleEvent); aNPPFuncs->urlnotify = NewNPP_URLNotifyProc(Private_URLNotify); aNPPFuncs->getvalue = NewNPP_GetValueProc(Private_GetValue); aNPPFuncs->setvalue = NewNPP_SetValueProc(Private_SetValue); #else aNPPFuncs->newp = NPP_New; aNPPFuncs->destroy = NPP_Destroy; aNPPFuncs->setwindow = NPP_SetWindow; aNPPFuncs->newstream = NPP_NewStream; aNPPFuncs->destroystream = NPP_DestroyStream; aNPPFuncs->asfile = NPP_StreamAsFile; aNPPFuncs->writeready = NPP_WriteReady; aNPPFuncs->write = NPP_Write; aNPPFuncs->print = NPP_Print; aNPPFuncs->event = NPP_HandleEvent; aNPPFuncs->urlnotify = NPP_URLNotify; aNPPFuncs->getvalue = NPP_GetValue; aNPPFuncs->setvalue = NPP_SetValue; #endif #ifdef OJI aNPPFuncs->javaClass = NULL; #endif return NPERR_NO_ERROR; }
int main(NPNetscapeFuncs* nsTable, NPPluginFuncs* pluginFuncs, NPP_ShutdownUPP* unloadUpp) { int err=noErr; int navMinorVers = nsTable->version & 0xFF; gRememberOldgNetscapeFuncsForSafariIssue = *nsTable; gWhere = LoadLibViaPath("NPSqueak.bundle"); if (gWhere == nil) return -1; GetMain = (void *) ioFindExternalFunctionIn("npmain",(int) gWhere); if (GetMain == NULL) GetMain = (void *) ioFindExternalFunctionIn("main",(int) gWhere); err = GetMain(nsTable, pluginFuncs, unloadUpp); // // Set up the plugin function table that Netscape will use to // call us. Netscape needs to know about our version and size // and have a UniversalProcPointer for every function we implement. // pluginFuncs->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR; pluginFuncs->size = sizeof(NPPluginFuncs); pluginFuncs->newp = NewNPP_NewProc(Private_New); pluginFuncs->destroy = NewNPP_DestroyProc(Private_Destroy); pluginFuncs->setwindow = NewNPP_SetWindowProc(Private_SetWindow); pluginFuncs->newstream = NewNPP_NewStreamProc(Private_NewStream); pluginFuncs->destroystream = NewNPP_DestroyStreamProc(Private_DestroyStream); pluginFuncs->asfile = NewNPP_StreamAsFileProc(Private_StreamAsFile); pluginFuncs->writeready = NewNPP_WriteReadyProc(Private_WriteReady); pluginFuncs->write = NewNPP_WriteProc(Private_Write); pluginFuncs->print = NewNPP_PrintProc(Private_Print); pluginFuncs->event = NewNPP_HandleEventProc(Private_HandleEvent); if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) { pluginFuncs->urlnotify = NewNPP_URLNotifyProc(Private_URLNotify); } if( navMinorVers >= NPVERS_HAS_LIVECONNECT ) { pluginFuncs->javaClass = (JRIGlobalRef) Private_GetJavaClass(); } *unloadUpp = NewNPP_ShutdownProc(Private_Shutdown); return err; }
NPError OSCALL NP_Initialize(NPNetscapeFuncs* pFuncs #ifdef XP_UNIX , NPPluginFuncs* pluginFuncs #endif ) { if(pFuncs == NULL) return NPERR_INVALID_FUNCTABLE_ERROR; if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR) return NPERR_INCOMPATIBLE_VERSION_ERROR; if(pFuncs->size < sizeof(NPNetscapeFuncs)) return NPERR_INVALID_FUNCTABLE_ERROR; NPNFuncs.size = pFuncs->size; NPNFuncs.version = pFuncs->version; NPNFuncs.geturlnotify = pFuncs->geturlnotify; NPNFuncs.geturl = pFuncs->geturl; NPNFuncs.posturlnotify = pFuncs->posturlnotify; NPNFuncs.posturl = pFuncs->posturl; NPNFuncs.requestread = pFuncs->requestread; NPNFuncs.newstream = pFuncs->newstream; NPNFuncs.write = pFuncs->write; NPNFuncs.destroystream = pFuncs->destroystream; NPNFuncs.status = pFuncs->status; NPNFuncs.uagent = pFuncs->uagent; NPNFuncs.memalloc = pFuncs->memalloc; NPNFuncs.memfree = pFuncs->memfree; NPNFuncs.memflush = pFuncs->memflush; NPNFuncs.reloadplugins = pFuncs->reloadplugins; NPNFuncs.getJavaEnv = pFuncs->getJavaEnv; NPNFuncs.getJavaPeer = pFuncs->getJavaPeer; NPNFuncs.getvalue = pFuncs->getvalue; NPNFuncs.setvalue = pFuncs->setvalue; NPNFuncs.invalidaterect = pFuncs->invalidaterect; NPNFuncs.invalidateregion = pFuncs->invalidateregion; NPNFuncs.forceredraw = pFuncs->forceredraw; NPNFuncs.getstringidentifier = pFuncs->getstringidentifier; NPNFuncs.getstringidentifiers = pFuncs->getstringidentifiers; NPNFuncs.getintidentifier = pFuncs->getintidentifier; NPNFuncs.identifierisstring = pFuncs->identifierisstring; NPNFuncs.utf8fromidentifier = pFuncs->utf8fromidentifier; NPNFuncs.intfromidentifier = pFuncs->intfromidentifier; NPNFuncs.createobject = pFuncs->createobject; NPNFuncs.retainobject = pFuncs->retainobject; NPNFuncs.releaseobject = pFuncs->releaseobject; NPNFuncs.invoke = pFuncs->invoke; NPNFuncs.invokeDefault = pFuncs->invokeDefault; NPNFuncs.evaluate = pFuncs->evaluate; NPNFuncs.getproperty = pFuncs->getproperty; NPNFuncs.setproperty = pFuncs->setproperty; NPNFuncs.removeproperty = pFuncs->removeproperty; NPNFuncs.hasproperty = pFuncs->hasproperty; NPNFuncs.hasmethod = pFuncs->hasmethod; NPNFuncs.releasevariantvalue = pFuncs->releasevariantvalue; NPNFuncs.setexception = pFuncs->setexception; #ifdef XP_UNIX /* * Set up the plugin function table that Netscape will use to * call us. Netscape needs to know about our version and size * and have a UniversalProcPointer for every function we * implement. */ pluginFuncs->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR; pluginFuncs->size = sizeof(NPPluginFuncs); pluginFuncs->newp = NewNPP_NewProc(NPP_New); pluginFuncs->destroy = NewNPP_DestroyProc(NPP_Destroy); pluginFuncs->setwindow = NewNPP_SetWindowProc(NPP_SetWindow); pluginFuncs->newstream = NewNPP_NewStreamProc(NPP_NewStream); pluginFuncs->destroystream = NewNPP_DestroyStreamProc(NPP_DestroyStream); pluginFuncs->asfile = NewNPP_StreamAsFileProc(NPP_StreamAsFile); pluginFuncs->writeready = NewNPP_WriteReadyProc(NPP_WriteReady); pluginFuncs->write = NewNPP_WriteProc(NPP_Write); pluginFuncs->print = NewNPP_PrintProc(NPP_Print); pluginFuncs->urlnotify = NewNPP_URLNotifyProc(NPP_URLNotify); pluginFuncs->event = NULL; pluginFuncs->getvalue = NewNPP_GetValueProc(NPP_GetValue); #ifdef OJI pluginFuncs->javaClass = NPP_GetJavaClass(); #endif NPP_Initialize(); #endif return NPERR_NO_ERROR; }