diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2014-02-16 21:10:29 +0100 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2014-02-16 21:10:29 +0100 |
commit | cff615c76c1283cc75dae8a1e27ad2a1021f264a (patch) | |
tree | c1c9bf211e4757ac3b108550f51826cb7581ead2 | |
parent | 4f763163081130c6df8fbe1aa2e4e025addf2348 (diff) |
css: embed selectorList in CssSelector
-rw-r--r-- | src/css.cc | 33 | ||||
-rw-r--r-- | src/css.hh | 8 |
2 files changed, 19 insertions, 22 deletions
@@ -109,19 +109,16 @@ CssSelector::CssSelector () { refCount = 0; matchCacheOffset = -1; - selectorList = new lout::misc::SimpleVector - <struct CombinatorAndSelector> (1); - selectorList->increase (); - cs = selectorList->getRef (selectorList->size () - 1); + selectorList.increase (); + cs = selectorList.getRef (selectorList.size () - 1); cs->combinator = COMB_NONE; cs->selector = new CssSimpleSelector (); } CssSelector::~CssSelector () { - for (int i = selectorList->size () - 1; i >= 0; i--) - delete selectorList->getRef (i)->selector; - delete selectorList; + for (int i = selectorList.size () - 1; i >= 0; i--) + delete selectorList.getRef (i)->selector; } /** @@ -135,7 +132,7 @@ bool CssSelector::match (Doctree *docTree, const DoctreeNode *node, if (i < 0) return true; - struct CombinatorAndSelector *cs = selectorList->getRef (i); + struct CombinatorAndSelector *cs = selectorList.getRef (i); CssSimpleSelector *sel = cs->selector; switch (comb) { @@ -177,16 +174,16 @@ void CssSelector::addSimpleSelector (Combinator c) { struct CombinatorAndSelector *cs; assert (matchCacheOffset == -1); - selectorList->increase (); - cs = selectorList->getRef (selectorList->size () - 1); + selectorList.increase (); + cs = selectorList.getRef (selectorList.size () - 1); cs->combinator = c; cs->selector = new CssSimpleSelector (); } bool CssSelector::checksPseudoClass () { - for (int i = 0; i < selectorList->size (); i++) - if (selectorList->getRef (i)->selector->getPseudoClass ()) + for (int i = 0; i < selectorList.size (); i++) + if (selectorList.getRef (i)->selector->getPseudoClass ()) return true; return false; } @@ -200,18 +197,18 @@ bool CssSelector::checksPseudoClass () { int CssSelector::specificity () { int spec = 0; - for (int i = 0; i < selectorList->size (); i++) - spec += selectorList->getRef (i)->selector->specificity (); + for (int i = 0; i < selectorList.size (); i++) + spec += selectorList.getRef (i)->selector->specificity (); return spec; } void CssSelector::print () { - for (int i = 0; i < selectorList->size (); i++) { - selectorList->getRef (i)->selector->print (); + for (int i = 0; i < selectorList.size (); i++) { + selectorList.getRef (i)->selector->print (); - if (i < selectorList->size () - 1) { - switch (selectorList->getRef (i + 1)->combinator) { + if (i < selectorList.size () - 1) { + switch (selectorList.getRef (i + 1)->combinator) { case COMB_CHILD: fprintf (stderr, "> "); break; @@ -390,7 +390,7 @@ class CssSelector { }; int refCount, matchCacheOffset; - lout::misc::SimpleVector <struct CombinatorAndSelector> *selectorList; + lout::misc::SimpleVector <struct CombinatorAndSelector> selectorList; bool match (Doctree *dt, const DoctreeNode *node, int i, Combinator comb, MatchCache *matchCache); @@ -400,12 +400,12 @@ class CssSelector { ~CssSelector (); void addSimpleSelector (Combinator c); inline CssSimpleSelector *top () { - return selectorList->getRef (selectorList->size () - 1)->selector; + return selectorList.getRef (selectorList.size () - 1)->selector; }; - inline int size () { return selectorList->size (); }; + inline int size () { return selectorList.size (); }; inline bool match (Doctree *dt, const DoctreeNode *node, MatchCache *matchCache) { - return match (dt, node, selectorList->size () - 1, COMB_NONE, + return match (dt, node, selectorList.size () - 1, COMB_NONE, matchCache); }; inline void setMatchCacheOffset (int mo) { |