CreateInstanceL()Consider a hypothetical CAnimDll derived class CExampleAnimDll, declared in a header file as follows:
class CExampleAnimDll : public CAnimDll
{
public:
virtual CAnim* CreateInstanceL(TInt aType);
};
A convenient way to implement CreateInstanceL() is to switch on the TInt aType argument, with each switch constructing a different CAnim derived animation class identified by an aType enum, for example if DShapesAnims is one of those classes:
switch(aType)
{
// cases
case EShapesAnims:
return new(ELeave) DShapesAnims;
...
default:
iFunctions -> Panic();
return NULL; // dummy return to prevent compiler error
}
}
It is up to the implementer to decide whether receiving a bad parameter should cause a panic, as here, or a leave. The approach shown is recommended.
The Panic() function is a CAnimFunctions helper function, to which CAnim provides the iFunctions pointer. These functions are implemented by the window server and are available to any CAnim derived class.