home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.debug;
-
- public class RemoteArray extends RemoteObject {
- private int size;
-
- RemoteArray(RemoteAgent var1, int var2, RemoteClass var3, int var4) {
- super(var1, 9, var2, var3);
- this.size = var4;
- }
-
- public final int getSize() {
- return this.size;
- }
-
- public String typeName() {
- return new String("array");
- }
-
- public String arrayTypeName(int var1) {
- switch (var1) {
- case 0:
- return new String("boolean");
- case 1:
- return new String("byte");
- case 2:
- return new String("char");
- case 3:
- return new String("short");
- case 4:
- return new String("int");
- case 5:
- return new String("long");
- case 6:
- return new String("float");
- case 7:
- return new String("double");
- case 9:
- return new String("array");
- case 10:
- case 17:
- return new String("Object");
- case 11:
- return new String("void");
- case 16:
- return new String("Class");
- case 18:
- return new String("String");
- case 19:
- return new String("Thread");
- default:
- return new String("unknown type");
- }
- }
-
- public final int getElementType() throws Exception {
- String var1 = ((RemoteObject)this).getClazz().getName();
- switch (var1.charAt(1)) {
- case 'B':
- return 1;
- case 'C':
- return 2;
- case 'D':
- return 7;
- case 'F':
- return 6;
- case 'I':
- return 4;
- case 'J':
- return 5;
- case 'L':
- return 10;
- case 'S':
- return 3;
- case 'V':
- return 11;
- case 'Z':
- return 0;
- case '[':
- return 9;
- default:
- super.agent.error("Invalid array type: '" + (new Character(var1.charAt(1))).toString() + "'");
- return -1;
- }
- }
-
- public final RemoteValue getElement(int var1) throws Exception {
- if (var1 >= 0 && var1 < this.size) {
- RemoteValue[] var2 = super.agent.getElements(super.id, this.getElementType(), var1, var1);
- return var2[0];
- } else {
- throw new ArrayIndexOutOfBoundsException(var1);
- }
- }
-
- public final RemoteValue[] getElements() throws Exception {
- return super.agent.getElements(super.id, this.getElementType(), 0, this.size - 1);
- }
-
- public final RemoteValue[] getElements(int var1, int var2) throws Exception {
- if (var1 >= 0 && var1 < this.size) {
- if (var2 >= 0 && var2 < this.size && var1 <= var2) {
- return super.agent.getElements(super.id, this.getElementType(), var1, var2);
- } else {
- throw new ArrayIndexOutOfBoundsException(var2);
- }
- } else {
- throw new ArrayIndexOutOfBoundsException(var1);
- }
- }
-
- public String description() {
- return this.toString();
- }
-
- public String toString() {
- try {
- String var1 = new String();
- if (this.size > 0) {
- if (this.getElementType() == 2) {
- var1 = var1.concat("\"");
- RemoteValue[] var2 = this.getElements();
-
- for(int var3 = 0; var3 < this.size; ++var3) {
- var1 = var1.concat(var2[var3].toString());
- }
-
- var1 = var1.concat("\"");
- } else {
- int var8 = this.size < 3 ? this.size : 3;
- RemoteValue[] var9 = this.getElements(0, var8 - 1);
- var1 = "{ ";
-
- for(int var4 = 0; var4 < var8; ++var4) {
- var1 = var1.concat(var9[var4] == null ? "null" : var9[var4].toString());
- var1 = var1.concat(var4 < var8 - 1 ? ", " : (var8 < this.size ? ", ... }" : " }"));
- }
- }
- }
-
- return var1;
- } catch (Exception var5) {
- return "<communication error>";
- }
- }
- }
-