Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / jigsaw / src / org / w3c / www / http / HttpRangeList.java
diff --git a/JMCR-Stable/real-world application/jigsaw/src/org/w3c/www/http/HttpRangeList.java b/JMCR-Stable/real-world application/jigsaw/src/org/w3c/www/http/HttpRangeList.java
new file mode 100644 (file)
index 0000000..8f1392b
--- /dev/null
@@ -0,0 +1,72 @@
+// HttpRangeList.java\r
+// $Id: HttpRangeList.java,v 1.1 2010/06/15 12:19:56 smhuang Exp $\r
+// (c) COPYRIGHT MIT and INRIA, 1996.\r
+// Please first read the full copyright statement in file COPYRIGHT.html\r
+\r
+package org.w3c.www.http;\r
+\r
+import java.util.Vector;\r
+\r
+public class HttpRangeList extends BasicValue {\r
+    HttpRange ranges[] = null;\r
+\r
+    protected void parse() {\r
+       Vector     vr = new Vector(2);\r
+       ParseState ps = new ParseState(roff, rlen);\r
+       ps.separator  = (byte) ',';\r
+       ps.spaceIsSep = false;\r
+       while ( HttpParser.nextItem(raw, ps) >= 0 ) {\r
+           vr.addElement(new HttpRange(this, raw, ps.start, ps.end));\r
+           ps.prepare();\r
+       }\r
+       if ( vr.size() > 0 ) {\r
+           ranges = new HttpRange[vr.size()];\r
+           vr.copyInto(ranges);\r
+       }\r
+    }\r
+\r
+    protected void updateByteValue() {\r
+       HttpBuffer buf = new HttpBuffer();\r
+       for (int i = 0 ; i < ranges.length ; i++) {\r
+           if ( i > 0 )\r
+               buf.append(',');\r
+           ranges[i].appendValue(buf);\r
+       }\r
+       raw  = buf.getByteCopy();\r
+       roff = 0;\r
+       rlen = raw.length;\r
+    }\r
+\r
+    public Object getValue() {\r
+       validate();\r
+       return ranges;\r
+    }\r
+\r
+    /**\r
+     * Add a range to this list.\r
+     * @param range The range to add.\r
+     */\r
+\r
+    public void addRange(HttpRange range) {\r
+       if ( ranges == null ) {\r
+           ranges    = new HttpRange[1];\r
+           ranges[0] = range;\r
+       } else {\r
+           int len = ranges.length;\r
+           HttpRange nranges[] = new HttpRange[len+1];\r
+           System.arraycopy(ranges, 0, nranges, 0, len);\r
+           nranges[len] = range;\r
+           ranges = nranges;\r
+       }\r
+    }\r
+\r
+    HttpRangeList(HttpRange ranges[]) {\r
+       this.ranges  = ranges;\r
+       this.isValid = true;\r
+    }\r
+\r
+    HttpRangeList() {\r
+       this.isValid = false;\r
+    }\r
+\r
+}\r