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.
