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
.