Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  nsIWeakReferenceUtils.h   Sprache: 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 nsIWeakReferenceUtils_h__
#define nsIWeakReferenceUtils_h__

#include "nsCOMPtr.h"
#include "nsIWeakReference.h"

typedef nsCOMPtr<nsIWeakReference> nsWeakPtr;

/**
 *
 */


// a type-safe shortcut for calling the |QueryReferent()| member function
// T must inherit from nsIWeakReference, but the cast may be ambiguous.
template <class T, class DestinationType>
inline nsresult CallQueryReferent(T* aSource, DestinationType** aDestination) {
  MOZ_ASSERT(aSource, "null parameter");
  MOZ_ASSERT(aDestination, "null parameter");

  return aSource->QueryReferent(NS_GET_TEMPLATE_IID(DestinationType),
                                reinterpret_cast<void**>(aDestination));
}

inline const nsQueryReferent do_QueryReferent(nsIWeakReference* aRawPtr,
                                              nsresult* aError = 0) {
  return nsQueryReferent(aRawPtr, aError);
}

/**
 * Deprecated, use |do_GetWeakReference| instead.
 */

extern nsIWeakReference* NS_GetWeakReference(nsISupports*,
                                             nsresult* aResult = 0);
extern nsIWeakReference* NS_GetWeakReference(nsISupportsWeakReference*,
                                             nsresult* aResult = 0);

/**
 * |do_GetWeakReference| is a convenience function that bundles up all the work
 * needed to get a weak reference to an arbitrary object, i.e., the
 * |QueryInterface|, test, and call through to |GetWeakReference|, and put it
 * into your |nsCOMPtr|. It is specifically designed to cooperate with
 * |nsCOMPtr| (or |nsWeakPtr|) like so: |nsWeakPtr myWeakPtr =
 * do_GetWeakReference(aPtr);|.
 */

inline already_AddRefed<nsIWeakReference> do_GetWeakReference(
    nsISupports* aRawPtr, nsresult* aError = 0) {
  return dont_AddRef(NS_GetWeakReference(aRawPtr, aError));
}

inline already_AddRefed<nsIWeakReference> do_GetWeakReference(
    nsISupportsWeakReference* aRawPtr, nsresult* aError = 0) {
  return dont_AddRef(NS_GetWeakReference(aRawPtr, aError));
}

inline void do_GetWeakReference(nsIWeakReference* aRawPtr,
                                nsresult* aError = 0) {
  // This signature exists solely to _stop_ you from doing a bad thing.
  //  Saying |do_GetWeakReference()| on a weak reference itself,
  //  is very likely to be a programmer error.
}

template <class T>
inline void do_GetWeakReference(already_AddRefed<T>&) {
  // This signature exists solely to _stop_ you from doing the bad thing.
  //  Saying |do_GetWeakReference()| on a pointer that is not otherwise owned by
  //  someone else is an automatic leak.  See
  //  <http://bugzilla.mozilla.org/show_bug.cgi?id=8221>.
}

template <class T>
inline void do_GetWeakReference(already_AddRefed<T>&, nsresult*) {
  // This signature exists solely to _stop_ you from doing the bad thing.
  //  Saying |do_GetWeakReference()| on a pointer that is not otherwise owned by
  //  someone else is an automatic leak.  See
  //  <http://bugzilla.mozilla.org/show_bug.cgi?id=8221>.
}

#endif

100%


¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge