// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: packimports(3) fieldsfirst lnc // Source File Name: StringValue.java package com.icl.saxon.expr; import java.io.PrintStream; // Referenced classes of package com.icl.saxon.expr: // Value, XPathException, Expression public final class StringValue extends Value { private String value; public StringValue(String s) { /* 18*/ value = s != null ? s : ""; } public String asString() { /* 26*/ return value; } public double asNumber() { /* 34*/ return Value.stringToNumber(value); } public boolean asBoolean() { /* 43*/ return value.length() > 0; } public int getDataType() { /* 52*/ return 3; } public int getLength() { /* 61*/ return getLength(value); } public static int getLength(String s) { /* 71*/ int i = 0; /* 72*/ for(int j = 0; j < s.length(); j++) { /* 73*/ char c = s.charAt(j); /* 74*/ if(c < '\uD800' || c > '\uDBFF') /* 74*/ i++; } /* 76*/ return i; } public static int[] expand(String s) { /* 84*/ int ai[] = new int[getLength(s)]; /* 85*/ int i = 0; /* 86*/ for(int j = 0; j < s.length(); j++) { /* 88*/ char c = s.charAt(j); int k; /* 89*/ if(c >= '\uD800' && c <= '\uDBFF') { /* 91*/ k = (c - 55296) * 1024 + (s.charAt(j + 1) - 56320) + 0x10000; /* 92*/ j++; } else { /* 94*/ k = c; } /* 96*/ ai[i++] = k; } /* 98*/ return ai; } public boolean equals(StringValue stringvalue) { /* 106*/ return value.equals(stringvalue.value); } public int conversionPreference(Class class1) { /* 116*/ if(class1 == (java.lang.Object.class)) /* 116*/ return 50; /* 117*/ if(class1.isAssignableFrom(com.icl.saxon.expr.StringValue.class)) /* 117*/ return 0; /* 119*/ if(class1 == Boolean.TYPE) /* 119*/ return 6; /* 120*/ if(class1 == (java.lang.Boolean.class)) /* 120*/ return 7; /* 121*/ if(class1 == Byte.TYPE) /* 121*/ return 4; /* 122*/ if(class1 == (java.lang.Byte.class)) /* 122*/ return 5; /* 123*/ if(class1 == Character.TYPE) /* 123*/ return 2; /* 124*/ if(class1 == (java.lang.Character.class)) /* 124*/ return 3; /* 125*/ if(class1 == Double.TYPE) /* 125*/ return 4; /* 126*/ if(class1 == (java.lang.Double.class)) /* 126*/ return 5; /* 127*/ if(class1 == Float.TYPE) /* 127*/ return 4; /* 128*/ if(class1 == (java.lang.Float.class)) /* 128*/ return 5; /* 129*/ if(class1 == Integer.TYPE) /* 129*/ return 4; /* 130*/ if(class1 == (java.lang.Integer.class)) /* 130*/ return 5; /* 131*/ if(class1 == Long.TYPE) /* 131*/ return 4; /* 132*/ if(class1 == (java.lang.Long.class)) /* 132*/ return 5; /* 133*/ if(class1 == Short.TYPE) /* 133*/ return 4; /* 134*/ if(class1 == (java.lang.Short.class)) /* 134*/ return 5; /* 135*/ return class1 != (java.lang.String.class) ? 0x7fffffff : 0; } public Object convertToJava(Class class1) throws XPathException { /* 145*/ if(class1 == (java.lang.Object.class)) /* 146*/ return value; /* 147*/ if(class1.isAssignableFrom(com.icl.saxon.expr.StringValue.class)) /* 148*/ return this; /* 149*/ if(class1 == Boolean.TYPE) /* 150*/ return new Boolean(asBoolean()); /* 151*/ if(class1 == (java.lang.Boolean.class)) /* 152*/ return new Boolean(asBoolean()); /* 153*/ if(class1 == (java.lang.String.class)) /* 154*/ return value; /* 155*/ if(class1 == Double.TYPE) /* 156*/ return new Double(asNumber()); /* 157*/ if(class1 == (java.lang.Double.class)) /* 158*/ return new Double(asNumber()); /* 159*/ if(class1 == Float.TYPE) /* 160*/ return new Float(asNumber()); /* 161*/ if(class1 == (java.lang.Float.class)) /* 162*/ return new Float(asNumber()); /* 163*/ if(class1 == Long.TYPE) /* 164*/ return new Long((long)asNumber()); /* 165*/ if(class1 == (java.lang.Long.class)) /* 166*/ return new Long((long)asNumber()); /* 167*/ if(class1 == Integer.TYPE) /* 168*/ return new Integer((int)asNumber()); /* 169*/ if(class1 == (java.lang.Integer.class)) /* 170*/ return new Integer((int)asNumber()); /* 171*/ if(class1 == Short.TYPE) /* 172*/ return new Short((short)(int)asNumber()); /* 173*/ if(class1 == (java.lang.Short.class)) /* 174*/ return new Short((short)(int)asNumber()); /* 175*/ if(class1 == Byte.TYPE) /* 176*/ return new Byte((byte)(int)asNumber()); /* 177*/ if(class1 == (java.lang.Byte.class)) /* 178*/ return new Byte((byte)(int)asNumber()); /* 179*/ if(class1 == Character.TYPE || class1 == (java.lang.Character.class)) { /* 180*/ if(value.length() == 1) /* 181*/ return new Character(value.charAt(0)); /* 183*/ else /* 183*/ throw new XPathException("Cannot convert string to Java char unless length is 1"); } else { /* 186*/ throw new XPathException("Conversion of string to " + class1.getName() + " is not supported"); } } public void display(int i) { /* 196*/ System.err.println(Expression.indent(i) + "string (\"" + value + "\")"); } }