/*=========================================================================== Function: AEEMod_CreateInstance() Description: This function is invoked so as to create the individual classes belonging to this module. It is invoked once for each class this module contains. This function invokes the AEEClsCreateInstance() function that the module implementer must provide. Prototype: int AEEMod_CreateInstance(IModule *pIModule,IShell *pIShell,AEECLSID ClsId,void **ppObj) Parameters: pIModule: [in]: Pointer to this module pIShell: [in]: Pointer to the AEE Shell interface ClsID: [in]: ClassId of the class that needs to be created. ppobj: [out]: If ClsID points to an applet, then *ppobj must point to a valid structure that implemetns the IApplet interface. If ClsID points to a class that is not an applet, *ppobj must point to a valid IBase*. Return Value: SUCCESS: If successful Error code: If failed Comments: None Side Effects: None ==============================================================================*/ static int AEEMod_CreateInstance(IModule *pIModule,IShell *pIShell, AEECLSID ClsId,void **ppObj) { AEEMod *pme = (AEEMod *)pIModule; AEEModObj *poObj; int nErr = 0; // See if we already have the module in memory...If yes, just increment // the reference count and return. poObj = AEEMod_FindObj(pme, ClsId, NULL); if (poObj) { IBASE_AddRef((IBase *)poObj); *ppObj = poObj; return SUCCESS; } // For a dynamic module, they must supply the AEEClsCreateInstance() // function. Hence, invoke it. For a static app, they will have // registered the create Instance function. Invoke it. if (pme->pfnModCrInst) { nErr = pme->pfnModCrInst(ClsId, pIShell, pIModule, ppObj); #if !defined(AEE_STATIC) } else { nErr = AEEClsCreateInstance(ClsId, pIShell, pIModule, ppObj); #endif } return nErr; }
static int AEEMod_CreateInstance(IModule *pIModule,IShell *pIShell, AEECLSID ClsId,void **ppObj) { AEEMod *pme = (AEEMod *)pIModule; int nErr = EFAILED; if (pme->pfnModCrInst) { nErr = pme->pfnModCrInst(ClsId, pIShell, pIModule, ppObj); #if !defined(AEE_STATIC) } else { nErr = AEEClsCreateInstance(ClsId, pIShell, pIModule, ppObj); #endif } return nErr; }
/*=========================================================================== Function: AEEMod_CreateInstance() Description: This function is invoked so as to create the individual classes belonging to this module. It is invoked once for each class this module contains. This function invokes the AEEClsCreateInstance() function that the module implementer must provide. Prototype: int AEEMod_CreateInstance(IModule *pIModule,IShell *pIShell,AEECLSID ClsId,void **ppObj) Parameters: pIModule: [in]: Pointer to this module pIShell: [in]: Pointer to the AEE Shell interface ClsID: [in]: ClassId of the class that needs to be created. ppobj: [out]: If ClsID points to an applet, then *ppobj must point to a valid structure that implemetns the IApplet interface. If ClsID points to a class that is not an applet, *ppobj must point to a valid IBase*. Return Value: SUCCESS: If successful Error code: If failed Comments: None Side Effects: None ==============================================================================*/ static int AEEMod_CreateInstance(IModule *pIModule,IShell *pIShell, AEECLSID ClsId,void **ppObj) { AEEMod *pme = (AEEMod *)pIModule; int nErr = EFAILED; // For a dynamic module, they must supply the AEEClsCreateInstance() // function. Hence, invoke it. For a static app, they will have // registered the create Instance function. Invoke it. if (pme->pfnModCrInst) { nErr = pme->pfnModCrInst(ClsId, pIShell, pIModule, ppObj); #if !defined(AEE_STATIC) } else { nErr = AEEClsCreateInstance(ClsId, pIShell, pIModule, ppObj); #endif } return nErr; }