else if (mClassID.Equals(kCClipboardHelper)) { inst = (nsISupports*)new nsClipboardHelper(); }
nsresult nsWidgetFactory::CreateInstance( nsISupports* aOuter,                                          const nsIID &aIID,                                            void **aResult)  {      if (aResult == NULL) {        return NS_ERROR_NULL_POINTER;      }      *aResult = NULL;      if (nsnull != aOuter) {      return NS_ERROR_NO_AGGREGATION;    }    nsISupports *inst = nsnull;    if (mClassID.Equals(kCWindow)) {        inst = (nsISupports*)(nsBaseWidget*)new nsWindow();    }    else if (mClassID.Equals(kCChild)) {        inst = (nsISupports*)(nsBaseWidget*)new ChildWindow();    }    else if (mClassID.Equals(kCFileOpen)) {        inst = (nsISupports*)new nsFileWidget();    }    else if (mClassID.Equals(kCFilePicker)) {        inst = (nsISupports*)(nsBaseFilePicker*)new nsFilePicker();    }    else if (mClassID.Equals(kCHorzScrollbar)) {        inst = (nsISupports*)(nsBaseWidget*)(nsWindow*)new nsScrollbar(PR_FALSE);    }    else if (mClassID.Equals(kCVertScrollbar)) {        inst = (nsISupports*)(nsBaseWidget*)(nsWindow*)new nsScrollbar(PR_TRUE);    }    else if (mClassID.Equals(kCAppShell)) {        inst = (nsISupports*)new nsAppShell();    }    else if (mClassID.Equals(kCToolkit)) {        inst = (nsISupports*)new nsToolkit();    }    else if (mClassID.Equals(kCLookAndFeel)) {        inst = (nsISupports*)new nsLookAndFeel();    }     else if (mClassID.Equals(kCSound)) {    	  inst = (nsISupports*)(nsISound*)new nsSound();    }     else if (mClassID.Equals(kCFileSpecWithUI)) {    	inst = (nsISupports*) (nsIFileSpecWithUI *) new nsFileSpecWithUIImpl;    }    else if (mClassID.Equals(kCTransferable)) {      inst = (nsISupports*)new nsTransferable();    }    else if (mClassID.Equals(kCHTMLFormatConverter)) {        inst = (nsISupports*)new nsHTMLFormatConverter();    }    else if (mClassID.Equals(kCClipboard)) {        inst = (nsISupports*)(nsBaseClipboard *)new nsClipboard();    }    else if (mClassID.Equals(kCDragService)) {        inst = (nsISupports*)(nsIDragService *)new nsDragService();    }    else if (mClassID.Equals(kCFontRetrieverService)) {        inst = (nsISupports*)(nsIFontRetrieverService *)new nsFontRetrieverService();    }    else if (mClassID.Equals(kCTimer)) {        inst = (nsISupports*)(nsITimer*) new nsTimer();    }    else if (mClassID.Equals(kCTimerManager)) {        inst = (nsISupports*)(nsITimerQueue*) new nsTimerManager();    }#ifdef IBMBIDI    else if (mClassID.Equals(kCBidiKeyboard)) {        inst = (nsISupports*)(nsIBidiKeyboard*) new nsBidiKeyboard();    }#endif // IBMBIDI    if (inst == NULL) {          return NS_ERROR_OUT_OF_MEMORY;      }      NS_ADDREF(inst);  // Stabilize    nsresult res = inst->QueryInterface(aIID, aResult);    NS_RELEASE(inst); // Destabilize and avoid leaks. Avoid calling delete <interface pointer>      return res;  }  