예제 #1
0
파일: np_entry.cpp 프로젝트: diocles/gnash
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;
}
예제 #2
0
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;
}