EnumSyntax.java, [...]: New files.
authorMichael Koch <konqueror@gmx.de>
Sun, 21 Dec 2003 15:56:38 +0000 (15:56 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Sun, 21 Dec 2003 15:56:38 +0000 (15:56 +0000)
2003-12-21  Michael Koch  <konqueror@gmx.de>

* javax/print/attribute/EnumSyntax.java,
javax/print/attribute/SetOfIntegerSyntax.java: New files.
* Makefile.am (ordinary_java_source_files):
Added javax/print/attribute/EnumSyntax.java
and javax/print/attribute/SetOfIntegerSyntax.java.
* Makefile.in: Regenerated.

From-SVN: r74908

libjava/ChangeLog
libjava/Makefile.am
libjava/Makefile.in
libjava/javax/print/attribute/EnumSyntax.java [new file with mode: 0644]
libjava/javax/print/attribute/SetOfIntegerSyntax.java [new file with mode: 0644]

index 89acdb1..e993c56 100644 (file)
@@ -1,5 +1,14 @@
 2003-12-21  Michael Koch  <konqueror@gmx.de>
 
+       * javax/print/attribute/EnumSyntax.java,
+       javax/print/attribute/SetOfIntegerSyntax.java: New files.
+       * Makefile.am (ordinary_java_source_files):
+       Added javax/print/attribute/EnumSyntax.java
+       and javax/print/attribute/SetOfIntegerSyntax.java.
+       * Makefile.in: Regenerated.
+
+2003-12-21  Michael Koch  <konqueror@gmx.de>
+
        * javax/print/attribute/PrintJobAttribute.java,
        javax/print/attribute/PrintJobAttributeSet.java,
        javax/print/attribute/PrintRequestAttribute.java,
index fbd3d7e..4aeb63f 100644 (file)
@@ -1746,6 +1746,7 @@ javax/print/attribute/AttributeSet.java \
 javax/print/attribute/DateTimeSyntax.java \
 javax/print/attribute/DocAttribute.java \
 javax/print/attribute/DocAttributeSet.java \
+javax/print/attribute/EnumSyntax.java \
 javax/print/attribute/IntegerSyntax.java \
 javax/print/attribute/PrintJobAttribute.java \
 javax/print/attribute/PrintJobAttributeSet.java \
@@ -1754,6 +1755,7 @@ javax/print/attribute/PrintRequestAttributeSet.java \
 javax/print/attribute/PrintServiceAttribute.java \
 javax/print/attribute/PrintServiceAttributeSet.java \
 javax/print/attribute/ResolutionSyntax.java \
+javax/print/attribute/SetOfIntegerSyntax.java \
 javax/print/attribute/Size2DSyntax.java \
 javax/print/attribute/SupportedValuesAttribute.java \
 javax/print/attribute/TextSyntax.java \
index f0be267..acf9abc 100644 (file)
@@ -1462,6 +1462,7 @@ javax/print/attribute/AttributeSet.java \
 javax/print/attribute/DateTimeSyntax.java \
 javax/print/attribute/DocAttribute.java \
 javax/print/attribute/DocAttributeSet.java \
+javax/print/attribute/EnumSyntax.java \
 javax/print/attribute/IntegerSyntax.java \
 javax/print/attribute/PrintJobAttribute.java \
 javax/print/attribute/PrintJobAttributeSet.java \
@@ -1470,6 +1471,7 @@ javax/print/attribute/PrintRequestAttributeSet.java \
 javax/print/attribute/PrintServiceAttribute.java \
 javax/print/attribute/PrintServiceAttributeSet.java \
 javax/print/attribute/ResolutionSyntax.java \
+javax/print/attribute/SetOfIntegerSyntax.java \
 javax/print/attribute/Size2DSyntax.java \
 javax/print/attribute/SupportedValuesAttribute.java \
 javax/print/attribute/TextSyntax.java \
@@ -4069,6 +4071,7 @@ DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
 .deps/javax/print/attribute/DateTimeSyntax.P \
 .deps/javax/print/attribute/DocAttribute.P \
 .deps/javax/print/attribute/DocAttributeSet.P \
+.deps/javax/print/attribute/EnumSyntax.P \
 .deps/javax/print/attribute/IntegerSyntax.P \
 .deps/javax/print/attribute/PrintJobAttribute.P \
 .deps/javax/print/attribute/PrintJobAttributeSet.P \
@@ -4077,6 +4080,7 @@ DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
 .deps/javax/print/attribute/PrintServiceAttribute.P \
 .deps/javax/print/attribute/PrintServiceAttributeSet.P \
 .deps/javax/print/attribute/ResolutionSyntax.P \
+.deps/javax/print/attribute/SetOfIntegerSyntax.P \
 .deps/javax/print/attribute/Size2DSyntax.P \
 .deps/javax/print/attribute/SupportedValuesAttribute.P \
 .deps/javax/print/attribute/TextSyntax.P \
diff --git a/libjava/javax/print/attribute/EnumSyntax.java b/libjava/javax/print/attribute/EnumSyntax.java
new file mode 100644 (file)
index 0000000..c5a096c
--- /dev/null
@@ -0,0 +1,146 @@
+/* EnumSyntax.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.print.attribute;
+
+import java.io.Serializable;
+
+/**
+ * @author Michael Koch
+ */
+public abstract class EnumSyntax implements Cloneable, Serializable
+{
+  private static final long serialVersionUID = -2739521845085831642L;
+  
+  private int value;
+
+  /**
+   * Creates a <code>EnumSyntax</code> object.
+   *
+   * @param value the value to set
+   */
+  protected EnumSyntax(int value)
+  {
+    this.value = value;
+  }
+
+  /**
+   * Returns the value of this object.
+   *
+   * @return the value
+   */
+  public int getValue()
+  {
+    return value;
+  }
+
+  /**
+   * Clones this object.
+   *
+   * @return a clone of this object
+   */
+  public Object clone()
+  {
+    try
+      {
+        return super.clone();
+      }
+    catch (CloneNotSupportedException e)
+      {
+        // Cannot happen as we implement java.lang.Cloneable.
+        return null;
+      }
+  }
+
+  /**
+   * Returns the hashcode for this object.
+   *
+   * @return the hashcode
+   */
+  public int hashCode()
+  {
+    return value;
+  }
+
+  /**
+   * Returns the string representation for this object.
+   *
+   * @return the string representation
+   */
+  public String toString()
+  {
+    int index = value - getOffset();
+    String[] table = getStringTable();
+
+    if (table != null
+        && index >= 0
+        && index < table.length)
+      return table[index];
+    
+    return "" + value;
+  }
+
+  /**
+   * Returns a table with the enumeration values represented as strings
+   * for this object.
+   *
+   * The default implementation just returns null.
+   *
+   * @return the enumeration values as strings
+   */
+  public String[] getStringTable()
+  {
+    return null;
+  }
+
+  /**
+   * Returns a table with the enumeration values for this object.
+   *
+   * The default implementation just returns null.
+   *
+   * @return the enumeration values
+   */
+  public EnumSyntax[] getEnumValueTable()
+  {
+    return null;
+  }
+
+  public int getOffset()
+  {
+    return 0;
+  }
+}
diff --git a/libjava/javax/print/attribute/SetOfIntegerSyntax.java b/libjava/javax/print/attribute/SetOfIntegerSyntax.java
new file mode 100644 (file)
index 0000000..3204187
--- /dev/null
@@ -0,0 +1,253 @@
+/* SetOfIntegerSyntax.java -- 
+   Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.print.attribute;
+
+import java.io.Serializable;
+import java.util.Vector;
+
+/**
+ * @author Michael Koch
+ */
+public abstract class SetOfIntegerSyntax
+  implements Cloneable, Serializable
+{
+  private static final long serialVersionUID = 3666874174847632203L;
+
+  private int[][] members;
+
+  private static int[][] normalize(Vector vecMembers)
+  {
+    // XXX: Perhaps we should merge ranges that overlap.
+    
+    int current = 0;
+    int[][] members = new int[vecMembers.size()][];
+
+    while (vecMembers.size() > 0)
+      {
+        // Search the lowest range.
+        int[] range = (int[]) vecMembers.elementAt(0);
+
+        for (int index = 1; index < vecMembers.size(); index++)
+          {
+            int[] tmp = (int[]) vecMembers.elementAt(index);
+
+            if (range[0] > tmp[0]
+                || (range[0] == tmp[0]
+                    && range[0] > tmp[0]))
+              range = tmp;
+          }
+
+        members[current] = range;
+        current++;
+      }
+    
+    return members;
+  }
+  
+  /**
+   * Creates a <code>SetOfIntegerSyntax</code> object.
+   *
+   * @param member the member value
+   *
+   * @exception IllegalArgumentException if member is < 0
+   */
+  protected SetOfIntegerSyntax(int member)
+  {
+    if (member < 0)
+      throw new IllegalArgumentException("member may not be less then 0");
+
+    this.members = new int[][]{{member, member}};
+  }
+
+  /**
+   * Creates a <code>SetOfIntegerSyntax</code> object.
+   *
+   * @param members the members to use in this set
+   *
+   * @exception IllegalArgumentException if any element is invalid
+   * @exception NullPointerException if any element of members is null
+   */
+  protected SetOfIntegerSyntax(int[][] members)
+  {
+    Vector vecMembers = new Vector();
+    
+    if (members != null)
+      {
+        for (int index = 0; index < members.length; index++)
+          {
+            int lower;
+            int upper;
+
+            if (members[index].length == 1)
+              {
+                lower = members[index][0];
+                upper = members[index][0];
+              }
+            else if (members[index].length == 2)
+              {
+                lower = members[index][0];
+                upper = members[index][1];
+              }
+            else
+              throw new IllegalArgumentException("invalid member element");
+
+            if (lower <= upper && lower < 0)
+              throw new IllegalArgumentException("invalid member element");
+
+            if (lower <= upper)
+              {
+                int[] range = new int[2];
+                range[0] = lower;
+                range[1] = upper;
+                vecMembers.add(range);
+              }
+          }
+      }
+    
+    this.members = normalize(vecMembers);
+  }
+
+  /**
+   * Creates a <code>SetOfIntegerSyntax</code> object.
+   *
+   * @param lowerBound the lower bound value
+   * @param upperBound the upper bound value
+   *
+   * @exception IllegalArgumentException if lowerBound <= uppbound
+   * and lowerBound < 0
+   */
+  protected SetOfIntegerSyntax(int lowerBound, int upperBound)
+  {
+    if (lowerBound <= upperBound
+        && lowerBound < 0)
+      throw new IllegalArgumentException();
+
+    members = (lowerBound <= upperBound ? new int[][]{{lowerBound, upperBound}}
+                                        : new int[0][]);
+  }
+
+  /**
+   * Checks if this set contains value.
+   *
+   * @param value the value to test for
+   *
+   * @return true if this set contains value, false otherwise
+   */
+  public boolean contains(int value)
+  {
+    // This only works on a normalized member array.
+    for (int index = 0; index < members.length; index++)
+      {
+        if (value < members[index][0])
+          return false;
+        else if (value < members[index][1])
+          return true;
+      }
+
+    return false;
+  }
+
+  /**
+   * Checks if this set contains value.
+   *
+   * @param value the value to test for
+   *
+   * @return true if this set contains value, false otherwise
+   */
+  public boolean contains(IntegerSyntax value)
+  {
+    return contains(value.getValue());
+  }
+
+  /**
+   * Tests of obj is equal to this object.
+   *
+   * @param obj the object to test
+   *
+   * @returns true if both objects are equal, false otherwise.
+   */
+  public boolean equals(Object obj)
+  {
+    if (! (obj instanceof SetOfIntegerSyntax))
+      return false;
+
+    throw new Error("not implemented");
+  }
+
+  /**
+   * Returns an array describing the members included in this set.
+   *
+   * @return the array with the members
+   */
+  public int[][] getMembers()
+  {
+    throw new Error("not implemented");
+  }
+
+  /**
+   * Returns the hashcode for this object.
+   *
+   * @return the hashcode
+   */
+  public int hashCode()
+  {
+    throw new Error("not implemented");
+  }
+
+  /**
+   * Returns the smallest value that is greater then x.
+   *
+   * @param x an integer value
+   *
+   * @return the next value
+   */
+  public int next(int x)
+  {
+    throw new Error("not implemented");
+  }
+
+  /**
+   * Returns the string representation for this object.
+   *
+   * @return the string representation
+   */
+  public String toString()
+  {
+    throw new Error("not implemented");
+  }
+}