nsAutoRefTraits<T> is a template class describing traits of resources held by objects of class nsAutoRef<T> and/or nsCountedRef<T>.

When the handle to the resource is a pointer to T the specialization may be derived from nsPointerRefTraits<T>, so that only definitions of the Release(T*) static method and possibly the AddRef(T*) static method need to be added. AddRef(T*) is necessary for nsCountedRef<T> but not for nsAutoRef<T>.

For example:

  NS_SPECIALIZE_TEMPLATE
  class nsAutoRefTraits<PRFileDesc> : public nsPointerRefTraits<PRFileDesc>
  {
  public:
      static void Release(PRFileDesc *ptr) { PR_Close(ptr); }
  };

or

  NS_SPECIALIZE_TEMPLATE
  class nsAutoRefTraits<FcPattern> : public nsPointerRefTraits<FcPattern>
  {
  public:
      static void Release(FcPattern *ptr) { FcPatternDestroy(ptr); }
      static void AddRef(FcPattern *ptr) { FcPatternReference(ptr); }
  };

nsAutoRefTraits is described in xpcom/base/nsAutoRef.h.

See Also

nsAutoRef, nsCountedRef