Rename nsAtomStringList to nsPseudoClassList, since that's what it's for, and we want to make it more than just atoms and strings. Also remove an unused constructor. b=75375 r+sr=bzbarsky

This commit is contained in:
L. David Baron 2008-06-02 20:17:35 -07:00
Родитель becc8f7cf3
Коммит 1eef72cec5
5 изменённых файлов: 28 добавлений и 54 удалений

Просмотреть файл

@ -1927,8 +1927,8 @@ PRBool CSSParserImpl::ParseSelectorGroup(nsresult& aErrorCode,
nsCSSSelector* listSel = list->mSelectors;
// pull out pseudo elements here
nsAtomStringList* prevList = nsnull;
nsAtomStringList* pseudoClassList = listSel->mPseudoClassList;
nsPseudoClassList* prevList = nsnull;
nsPseudoClassList* pseudoClassList = listSel->mPseudoClassList;
while (nsnull != pseudoClassList) {
if (! nsCSSPseudoClasses::IsPseudoClass(pseudoClassList->mAtom)) {
havePseudoElement = PR_TRUE;

Просмотреть файл

@ -1076,7 +1076,7 @@ static PRBool SelectorMatches(RuleProcessorData &data,
// test for pseudo class match
// first-child, root, lang, active, focus, hover, link, visited...
// XXX disabled, enabled, selected, selection
for (nsAtomStringList* pseudoClass = aSelector->mPseudoClassList;
for (nsPseudoClassList* pseudoClass = aSelector->mPseudoClassList;
pseudoClass && result; pseudoClass = pseudoClass->mNext) {
PRInt32 stateToCheck = 0;
if ((nsCSSPseudoClasses::firstChild == pseudoClass->mAtom) ||
@ -1929,7 +1929,7 @@ nsCSSRuleProcessor::ClearRuleCascades()
inline
PRBool IsStateSelector(nsCSSSelector& aSelector)
{
for (nsAtomStringList* pseudoClass = aSelector.mPseudoClassList;
for (nsPseudoClassList* pseudoClass = aSelector.mPseudoClassList;
pseudoClass; pseudoClass = pseudoClass->mNext) {
if ((pseudoClass->mAtom == nsCSSPseudoClasses::active) ||
(pseudoClass->mAtom == nsCSSPseudoClasses::checked) ||

Просмотреть файл

@ -158,45 +158,33 @@ nsAtomList::~nsAtomList(void)
NS_IF_DEEP_DELETE(nsAtomList, mNext);
}
nsAtomStringList::nsAtomStringList(nsIAtom* aAtom, const PRUnichar* aString)
nsPseudoClassList::nsPseudoClassList(nsIAtom* aAtom, const PRUnichar* aString)
: mAtom(aAtom),
mString(nsnull),
mNext(nsnull)
{
MOZ_COUNT_CTOR(nsAtomStringList);
MOZ_COUNT_CTOR(nsPseudoClassList);
if (aString)
mString = NS_strdup(aString);
}
nsAtomStringList::nsAtomStringList(const nsString& aAtomValue,
const PRUnichar* aString)
: mAtom(nsnull),
mString(nsnull),
mNext(nsnull)
nsPseudoClassList*
nsPseudoClassList::Clone(PRBool aDeep) const
{
MOZ_COUNT_CTOR(nsAtomStringList);
mAtom = do_GetAtom(aAtomValue);
if (aString)
mString = NS_strdup(aString);
}
nsAtomStringList*
nsAtomStringList::Clone(PRBool aDeep) const
{
nsAtomStringList *result = new nsAtomStringList(mAtom, mString);
nsPseudoClassList *result = new nsPseudoClassList(mAtom, mString);
if (aDeep)
NS_IF_DEEP_CLONE(nsAtomStringList, mNext, (PR_FALSE));
NS_IF_DEEP_CLONE(nsPseudoClassList, mNext, (PR_FALSE));
return result;
}
nsAtomStringList::~nsAtomStringList(void)
nsPseudoClassList::~nsPseudoClassList(void)
{
MOZ_COUNT_DTOR(nsAtomStringList);
MOZ_COUNT_DTOR(nsPseudoClassList);
if (mString)
NS_Free(mString);
NS_IF_DEEP_DELETE(nsAtomStringList, mNext);
NS_IF_DEEP_DELETE(nsPseudoClassList, mNext);
}
nsAttrSelector::nsAttrSelector(PRInt32 aNameSpace, const nsString& aAttr)
@ -359,27 +347,15 @@ void nsCSSSelector::AddClass(const nsString& aClass)
}
}
void nsCSSSelector::AddPseudoClass(const nsString& aPseudoClass,
const PRUnichar* aString)
{
if (!aPseudoClass.IsEmpty()) {
nsAtomStringList** list = &mPseudoClassList;
while (nsnull != *list) {
list = &((*list)->mNext);
}
*list = new nsAtomStringList(aPseudoClass, aString);
}
}
void nsCSSSelector::AddPseudoClass(nsIAtom* aPseudoClass,
const PRUnichar* aString)
{
if (nsnull != aPseudoClass) {
nsAtomStringList** list = &mPseudoClassList;
nsPseudoClassList** list = &mPseudoClassList;
while (nsnull != *list) {
list = &((*list)->mNext);
}
*list = new nsAtomStringList(aPseudoClass, aString);
*list = new nsPseudoClassList(aPseudoClass, aString);
}
}
@ -428,7 +404,7 @@ PRInt32 nsCSSSelector::CalcWeight(void) const
weight += 0x000100;
list = list->mNext;
}
nsAtomStringList *plist = mPseudoClassList;
nsPseudoClassList *plist = mPseudoClassList;
while (nsnull != plist) {
weight += 0x000100;
plist = plist->mNext;
@ -648,7 +624,7 @@ void nsCSSSelector::ToStringInternal(nsAString& aString,
// Append each pseudo-class in the linked list
if (mPseudoClassList) {
nsAtomStringList* list = mPseudoClassList;
nsPseudoClassList* list = mPseudoClassList;
while (list != nsnull) {
list->mAtom->ToString(temp);
aString.Append(temp);

Просмотреть файл

@ -75,24 +75,23 @@ private:
nsAtomList& operator=(const nsAtomList& aCopy);
};
struct nsAtomStringList {
struct nsPseudoClassList {
public:
nsAtomStringList(nsIAtom* aAtom, const PRUnichar *aString = nsnull);
nsAtomStringList(const nsString& aAtomValue, const PRUnichar *aString = nsnull);
~nsAtomStringList(void);
nsPseudoClassList(nsIAtom* aAtom, const PRUnichar *aString = nsnull);
~nsPseudoClassList(void);
/** Do a deep clone. Should be used only on the first in the linked list. */
nsAtomStringList* Clone() const { return Clone(PR_TRUE); }
nsPseudoClassList* Clone() const { return Clone(PR_TRUE); }
nsCOMPtr<nsIAtom> mAtom;
PRUnichar* mString;
nsAtomStringList* mNext;
nsPseudoClassList* mNext;
private:
nsAtomStringList* Clone(PRBool aDeep) const;
nsPseudoClassList* Clone(PRBool aDeep) const;
// These are not supported and are not implemented!
nsAtomStringList(const nsAtomStringList& aCopy);
nsAtomStringList& operator=(const nsAtomStringList& aCopy);
nsPseudoClassList(const nsPseudoClassList& aCopy);
nsPseudoClassList& operator=(const nsPseudoClassList& aCopy);
};
#define NS_ATTR_FUNC_SET 0 // [attr]
@ -142,7 +141,6 @@ public:
void SetTag(const nsString& aTag);
void AddID(const nsString& aID);
void AddClass(const nsString& aClass);
void AddPseudoClass(const nsString& aPseudoClass, const PRUnichar* aString = nsnull);
void AddPseudoClass(nsIAtom* aPseudoClass, const PRUnichar* aString = nsnull);
void AddAttribute(PRInt32 aNameSpace, const nsString& aAttr);
void AddAttribute(PRInt32 aNameSpace, const nsString& aAttr, PRUint8 aFunc,
@ -167,8 +165,8 @@ public:
nsCOMPtr<nsIAtom> mTag;
nsAtomList* mIDList;
nsAtomList* mClassList;
nsAtomStringList* mPseudoClassList; // atom for the pseudo, string for
// the argument to functional pseudos
nsPseudoClassList* mPseudoClassList; // atom for the pseudo, string for
// the argument to functional pseudos
nsAttrSelector* mAttrList;
PRUnichar mOperator;
nsCSSSelector* mNegations;

Просмотреть файл

@ -4119,7 +4119,7 @@ nsTreeBodyFrame::PseudoMatches(nsIAtom* aTag, nsCSSSelector* aSelector, PRBool*
// it is contained in our scratch array. If we have a miss, then
// we aren't a match. If all items in the pseudoclass list are
// present in the scratch array, then we have a match.
nsAtomStringList* curr = aSelector->mPseudoClassList;
nsPseudoClassList* curr = aSelector->mPseudoClassList;
while (curr) {
PRInt32 index;
mScratchArray->GetIndexOf(curr->mAtom, &index);