gecko-dev/xpcom/glue/nsComponentManagerUtils.cpp
Nathan Froyd b0e24f4d55 Bug 1262400 - remove outer pointers from nsCreateInstance* classes; r=erahm
Outer pointers for object aggregation never get used.  Having these
always-null pointers around means extra space to store them and extra
instructions to deal with them.  Let's just remove them.
2016-04-14 11:30:59 -04:00

302 lines
7.7 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nsXPCOM_h__
#include "nsXPCOM.h"
#endif
#ifndef nsCOMPtr_h__
#include "nsCOMPtr.h"
#endif
#include "nsComponentManagerUtils.h"
#include "nsServiceManagerUtils.h"
#include "nsIComponentManager.h"
#ifndef MOZILLA_INTERNAL_API
nsresult
CallGetService(const nsCID& aCID, const nsIID& aIID, void** aResult)
{
nsCOMPtr<nsIServiceManager> servMgr;
nsresult status = NS_GetServiceManager(getter_AddRefs(servMgr));
if (servMgr) {
status = servMgr->GetService(aCID, aIID, aResult);
}
return status;
}
nsresult
CallGetService(const char* aContractID, const nsIID& aIID, void** aResult)
{
nsCOMPtr<nsIServiceManager> servMgr;
nsresult status = NS_GetServiceManager(getter_AddRefs(servMgr));
if (servMgr) {
status = servMgr->GetServiceByContractID(aContractID, aIID, aResult);
}
return status;
}
#else
#include "nsComponentManager.h"
nsresult
CallGetService(const nsCID& aCID, const nsIID& aIID, void** aResult)
{
nsComponentManagerImpl* compMgr = nsComponentManagerImpl::gComponentManager;
if (NS_WARN_IF(!compMgr)) {
return NS_ERROR_NOT_INITIALIZED;
}
return compMgr->nsComponentManagerImpl::GetService(aCID, aIID, aResult);
}
nsresult
CallGetService(const char* aContractID, const nsIID& aIID, void** aResult)
{
nsComponentManagerImpl* compMgr = nsComponentManagerImpl::gComponentManager;
if (NS_WARN_IF(!compMgr)) {
return NS_ERROR_NOT_INITIALIZED;
}
return compMgr->nsComponentManagerImpl::GetServiceByContractID(aContractID,
aIID,
aResult);
}
#endif
#ifndef MOZILLA_INTERNAL_API
nsresult
CallCreateInstance(const nsCID& aCID, nsISupports* aDelegate,
const nsIID& aIID, void** aResult)
{
nsCOMPtr<nsIComponentManager> compMgr;
nsresult status = NS_GetComponentManager(getter_AddRefs(compMgr));
if (compMgr) {
status = compMgr->CreateInstance(aCID, aDelegate, aIID, aResult);
}
return status;
}
nsresult
CallCreateInstance(const char* aContractID, nsISupports* aDelegate,
const nsIID& aIID, void** aResult)
{
nsCOMPtr<nsIComponentManager> compMgr;
nsresult status = NS_GetComponentManager(getter_AddRefs(compMgr));
if (compMgr)
status = compMgr->CreateInstanceByContractID(aContractID, aDelegate,
aIID, aResult);
return status;
}
nsresult
CallGetClassObject(const nsCID& aCID, const nsIID& aIID, void** aResult)
{
nsCOMPtr<nsIComponentManager> compMgr;
nsresult status = NS_GetComponentManager(getter_AddRefs(compMgr));
if (compMgr) {
status = compMgr->GetClassObject(aCID, aIID, aResult);
}
return status;
}
nsresult
CallGetClassObject(const char* aContractID, const nsIID& aIID, void** aResult)
{
nsCOMPtr<nsIComponentManager> compMgr;
nsresult status = NS_GetComponentManager(getter_AddRefs(compMgr));
if (compMgr)
status = compMgr->GetClassObjectByContractID(aContractID, aIID,
aResult);
return status;
}
#else
#include "nsComponentManager.h"
nsresult
CallCreateInstance(const nsCID& aCID, nsISupports* aDelegate,
const nsIID& aIID, void** aResult)
{
nsComponentManagerImpl* compMgr = nsComponentManagerImpl::gComponentManager;
if (NS_WARN_IF(!compMgr)) {
return NS_ERROR_NOT_INITIALIZED;
}
return compMgr->nsComponentManagerImpl::CreateInstance(aCID, aDelegate, aIID,
aResult);
}
nsresult
CallCreateInstance(const char* aContractID, nsISupports* aDelegate,
const nsIID& aIID, void** aResult)
{
nsComponentManagerImpl* compMgr = nsComponentManagerImpl::gComponentManager;
if (NS_WARN_IF(!compMgr)) {
return NS_ERROR_NOT_INITIALIZED;
}
return
compMgr->nsComponentManagerImpl::CreateInstanceByContractID(aContractID,
aDelegate, aIID,
aResult);
}
nsresult
CallGetClassObject(const nsCID& aCID, const nsIID& aIID, void** aResult)
{
nsComponentManagerImpl* compMgr = nsComponentManagerImpl::gComponentManager;
if (NS_WARN_IF(!compMgr)) {
return NS_ERROR_NOT_INITIALIZED;
}
return compMgr->nsComponentManagerImpl::GetClassObject(aCID, aIID, aResult);
}
nsresult
CallGetClassObject(const char* aContractID, const nsIID& aIID, void** aResult)
{
nsComponentManagerImpl* compMgr = nsComponentManagerImpl::gComponentManager;
if (NS_WARN_IF(!compMgr)) {
return NS_ERROR_NOT_INITIALIZED;
}
return
compMgr->nsComponentManagerImpl::GetClassObjectByContractID(aContractID,
aIID, aResult);
}
#endif
nsresult
nsCreateInstanceByCID::operator()(const nsIID& aIID, void** aInstancePtr) const
{
nsresult status = CallCreateInstance(mCID, nullptr, aIID, aInstancePtr);
if (NS_FAILED(status)) {
*aInstancePtr = 0;
}
if (mErrorPtr) {
*mErrorPtr = status;
}
return status;
}
nsresult
nsCreateInstanceByContractID::operator()(const nsIID& aIID,
void** aInstancePtr) const
{
nsresult status = CallCreateInstance(mContractID, nullptr, aIID, aInstancePtr);
if (NS_FAILED(status)) {
*aInstancePtr = 0;
}
if (mErrorPtr) {
*mErrorPtr = status;
}
return status;
}
nsresult
nsCreateInstanceFromFactory::operator()(const nsIID& aIID,
void** aInstancePtr) const
{
nsresult status = mFactory->CreateInstance(nullptr, aIID, aInstancePtr);
if (NS_FAILED(status)) {
*aInstancePtr = 0;
}
if (mErrorPtr) {
*mErrorPtr = status;
}
return status;
}
nsresult
nsGetClassObjectByCID::operator()(const nsIID& aIID, void** aInstancePtr) const
{
nsresult status = CallGetClassObject(mCID, aIID, aInstancePtr);
if (NS_FAILED(status)) {
*aInstancePtr = 0;
}
if (mErrorPtr) {
*mErrorPtr = status;
}
return status;
}
nsresult
nsGetClassObjectByContractID::operator()(const nsIID& aIID,
void** aInstancePtr) const
{
nsresult status = CallGetClassObject(mContractID, aIID, aInstancePtr);
if (NS_FAILED(status)) {
*aInstancePtr = 0;
}
if (mErrorPtr) {
*mErrorPtr = status;
}
return status;
}
nsresult
nsGetServiceByCID::operator()(const nsIID& aIID, void** aInstancePtr) const
{
nsresult status = CallGetService(mCID, aIID, aInstancePtr);
if (NS_FAILED(status)) {
*aInstancePtr = 0;
}
return status;
}
nsresult
nsGetServiceByCIDWithError::operator()(const nsIID& aIID,
void** aInstancePtr) const
{
nsresult status = CallGetService(mCID, aIID, aInstancePtr);
if (NS_FAILED(status)) {
*aInstancePtr = 0;
}
if (mErrorPtr) {
*mErrorPtr = status;
}
return status;
}
nsresult
nsGetServiceByContractID::operator()(const nsIID& aIID,
void** aInstancePtr) const
{
nsresult status = CallGetService(mContractID, aIID, aInstancePtr);
if (NS_FAILED(status)) {
*aInstancePtr = 0;
}
return status;
}
nsresult
nsGetServiceByContractIDWithError::operator()(const nsIID& aIID,
void** aInstancePtr) const
{
nsresult status = CallGetService(mContractID, aIID, aInstancePtr);
if (NS_FAILED(status)) {
*aInstancePtr = 0;
}
if (mErrorPtr) {
*mErrorPtr = status;
}
return status;
}