nsCSSSelector* nsCSSSelector::Clone(PRBool aDeepNext, PRBool aDeepNegations) const { nsCSSSelector *result = new nsCSSSelector(); if (!result) return nsnull; result->mNameSpace = mNameSpace; result->mTag = mTag; NS_IF_CLONE(mIDList); NS_IF_CLONE(mClassList); NS_IF_CLONE(mPseudoClassList); NS_IF_CLONE(mAttrList); // No need to worry about multiple levels of recursion since an // mNegations can't have an mNext. if (aDeepNegations) { NS_IF_DEEP_CLONE(nsCSSSelector, mNegations, (PR_TRUE, PR_FALSE)); } if (aDeepNext) { NS_IF_DEEP_CLONE(nsCSSSelector, mNext, (PR_FALSE, PR_TRUE)); } return result; }
nsAtomStringList* nsAtomStringList::Clone(PRBool aDeep) const { nsAtomStringList *result = new nsAtomStringList(mAtom, mString); if (aDeep) NS_IF_DEEP_CLONE(nsAtomStringList, mNext, (PR_FALSE)); return result; }
nsAttrSelector* nsAttrSelector::Clone(PRBool aDeep) const { nsAttrSelector *result = new nsAttrSelector(mNameSpace, mAttr, mFunction, mValue, mCaseSensitive); if (aDeep) NS_IF_DEEP_CLONE(nsAttrSelector, mNext, (PR_FALSE)); return result; }
nsAtomList* nsAtomList::Clone(PRBool aDeep) const { nsAtomList *result = new nsAtomList(mAtom); if (!result) return nsnull; if (aDeep) NS_IF_DEEP_CLONE(nsAtomList, mNext, (PR_FALSE)); return result; }
nsCSSSelectorList* nsCSSSelectorList::Clone(PRBool aDeep) const { nsCSSSelectorList *result = new nsCSSSelectorList(); result->mWeight = mWeight; NS_IF_CLONE(mSelectors); if (aDeep) { NS_IF_DEEP_CLONE(nsCSSSelectorList, mNext, (PR_FALSE)); } return result; }