Bug 1079787 - Switch txMozillaXSLTProcessor to NS_IMPL_CYCLE_COLLECTION. r=mccr8.

--HG--
extra : rebase_source : d32b38d515a33e1f8d79571907407ccf273fc552
This commit is contained in:
Peter Van der Beken 2014-10-01 20:43:09 +02:00
parent 87f1a03168
commit 668e85296b

View File

@ -281,6 +281,11 @@ public:
mTxValue = aValue;
}
friend void ImplCycleCollectionUnlink(txVariable& aVariable);
friend void ImplCycleCollectionTraverse(
nsCycleCollectionTraversalCallback& aCallback, txVariable& aVariable,
const char* aName, uint32_t aFlags);
private:
static nsresult Convert(nsIVariant *aValue, txAExprResult** aResult);
@ -288,25 +293,41 @@ private:
nsRefPtr<txAExprResult> mTxValue;
};
inline void
ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& aCallback,
txVariable& aVariable, const char* aName,
uint32_t aFlags)
{
ImplCycleCollectionTraverse(aCallback, aVariable.mValue, aName, aFlags);
}
inline void
ImplCycleCollectionUnlink(txOwningExpandedNameMap<txIGlobalParameter>& aMap)
{
aMap.clear();
}
inline void
ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& aCallback,
txOwningExpandedNameMap<txIGlobalParameter>& aMap,
const char* aName,
uint32_t aFlags = 0)
{
aFlags |= CycleCollectionEdgeNameArrayFlag;
txOwningExpandedNameMap<txIGlobalParameter>::iterator iter(aMap);
while (iter.next()) {
ImplCycleCollectionTraverse(aCallback,
*static_cast<txVariable*>(iter.value()),
aName, aFlags);
}
}
/**
* txMozillaXSLTProcessor
*/
NS_IMPL_CYCLE_COLLECTION_CLASS(txMozillaXSLTProcessor)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(txMozillaXSLTProcessor)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mEmbeddedStylesheetRoot)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mSource)
tmp->mVariables.clear();
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(txMozillaXSLTProcessor)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mEmbeddedStylesheetRoot)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSource)
txOwningExpandedNameMap<txIGlobalParameter>::iterator iter(tmp->mVariables);
while (iter.next()) {
cb.NoteXPCOMChild(static_cast<txVariable*>(iter.value())->getValue());
}
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION(txMozillaXSLTProcessor, mEmbeddedStylesheetRoot,
mSource, mVariables)
NS_IMPL_CYCLE_COLLECTING_ADDREF(txMozillaXSLTProcessor)
NS_IMPL_CYCLE_COLLECTING_RELEASE(txMozillaXSLTProcessor)