- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 20 Mar 2008 12:15:07 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/parser
In directory hutz:/tmp/cvs-serv17450
Modified Files:
CssSelectors.java
Log Message:
optimizations in toString generation (along with org.w3c.css.selectors.SelectorsList)
Index: CssSelectors.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/CssSelectors.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- CssSelectors.java 13 Sep 2007 10:04:54 -0000 1.21
+++ CssSelectors.java 20 Mar 2008 12:15:05 -0000 1.22
@@ -81,6 +81,8 @@
// see isEmpty and addProperty
private boolean Init;
+ private String cachedRepresentation = null;
+
/**
* Create a new CssSelectors with no previous selector.
*/
@@ -155,14 +157,14 @@
*
* @return the value of the attribute
*/
- public AtRule getAtRule() {
+ public final AtRule getAtRule() {
return atRule;
}
/**
* Get the element.
*/
- public String getElement() {
+ public final String getElement() {
return element;
}
@@ -170,7 +172,7 @@
* Returns <code>true</code> if the element is a block level element (HTML
* only)
*/
- public boolean isBlockLevelElement() {
+ public final boolean isBlockLevelElement() {
return isBlock;
}
@@ -311,7 +313,8 @@
public void addAttribute(AttributeSelector attribute)
throws InvalidParamException {
- for(int i = 0; i < size(); i++) {
+ int _s = size();
+ for(int i = 0; i < _s; i++) {
Selector s = (Selector) getSelector(i);
// add warnings if some selectors are incompatible
// e.g. [lang=en][lang=fr]
@@ -350,12 +353,26 @@
*/
public String toString() {
// I'm in reverse order, so compute the next before the current
- StringBuffer sbrep = new StringBuffer();
+ if (isToStringCached()) {
+ return cachedRepresentation;
+ }
+ StringBuilder sbrep = new StringBuilder();
if (next != null) {
sbrep.append(next.toString());
}
sbrep.append(super.toString());
- return sbrep.toString();
+ cachedRepresentation = sbrep.toString();
+ return cachedRepresentation;
+ }
+
+ public boolean isToStringCached() {
+ if (cachedRepresentation == null) {
+ return false;
+ }
+ if (next != null) {
+ return super.isToStringCached() && next.isToStringCached();
+ }
+ return super.isToStringCached();
}
/**
@@ -456,15 +473,15 @@
}
}
- final boolean canApply(ArrayList attrs, ArrayList attrs2) {
+ final boolean canApply(ArrayList<Selector> attrs, ArrayList<Selector> attrs2) {
if(attrs.size() > 0) {
for(int i = 0; i < attrs.size(); i++) {
- Selector selector = (Selector) attrs.get(i);
+ Selector selector = attrs.get(i);
Selector other = null;
int j = 0;
for(; j < attrs2.size(); j++) {
- other = (Selector) attrs2.get(j);
+ other = attrs2.get(j);
if(!other.equals(selector)) {
other = null;
}
Received on Thursday, 20 March 2008 12:15:43 UTC