intl/locale/nsLocaleConstructors.h
author Iain Ireland <iireland@mozilla.com>
Fri, 22 May 2020 01:49:41 +0000
changeset 595157 9ad767398b408a09b8ef9512b86fd3fc97832888
parent 571381 73820a049c644c3f3af58cece3bdb7cd0e4b2185
permissions -rw-r--r--
Bug 1639590: Finish removing unboxed objects code. r=mgaudet, a=dveditz Differential Revision: https://phabricator.services.mozilla.com/D76155

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 nsLocaleConstructors_h__
#define nsLocaleConstructors_h__

#include "nsCollation.h"
#include "nsCollationCID.h"
#include "mozilla/ModuleUtils.h"
#include "LocaleService.h"
#include "OSPreferences.h"

#define NSLOCALE_MAKE_CTOR(ctor_, iface_, func_)                              \
  static nsresult ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) { \
    *aResult = nullptr;                                                       \
    if (aOuter) return NS_ERROR_NO_AGGREGATION;                               \
    iface_* inst;                                                             \
    nsresult rv = func_(&inst);                                               \
    if (NS_SUCCEEDED(rv)) {                                                   \
      rv = inst->QueryInterface(aIID, aResult);                               \
      NS_RELEASE(inst);                                                       \
    }                                                                         \
    return rv;                                                                \
  }

NS_GENERIC_FACTORY_CONSTRUCTOR(nsCollationFactory)

namespace mozilla {
namespace intl {
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(LocaleService,
                                         LocaleService::GetInstanceAddRefed)
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(OSPreferences,
                                         OSPreferences::GetInstanceAddRefed)
}  // namespace intl
}  // namespace mozilla

#endif