User: olegnitz
Date: 01/08/09 13:24:32
Modified: src/main/org/jboss/ejb/plugins/cmp/ejbql NumberState.java
Log:
0xffffffff, attempt two.
Previous attempt to merge changes was incorrect.
Revision Changes Path
1.3 +11 -25 jboss/src/main/org/jboss/ejb/plugins/cmp/ejbql/NumberState.java
Index: NumberState.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/ejbql/NumberState.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NumberState.java 2001/08/09 18:56:51 1.2
+++ NumberState.java 2001/08/09 20:24:32 1.3
@@ -44,7 +44,7 @@
// exponent part
readExponentPart(in, out);
-
+
// exponent part
readSuffix(in, out);
@@ -126,7 +126,7 @@
private void readNumber(PushbackReader in, CharArrayWriter out, int radix)
throws IOException {
// which the read character is a digit in the specified radix
- int c = in.read();
+ int c = in.read();
while(Character.digit((char)c, radix) != -1) {
out.write(c);
c = in.read();
@@ -162,26 +162,12 @@
if(number.endsWith("d") || number.endsWith("D")) {
return false;
}
-
+
return true;
}
- /**
- * This function is broken. It does not support bit field style
- * integers and longs 0xffffffff
- */
- private ExactNumericToken createExactNumericToken(String number) throws
IOException {
- // long suffix
- if(number.endsWith("l") || number.endsWith("L")) {
- // chop off the suffix
- number = number.substring(0, number.length()-1);
- System.out.println("decode long number ["+number+"]");
- return new ExactNumericToken(Long.decode(number).longValue());
- } else {
- return new
ExactNumericToken(Integer.decode(number.toUpperCase()).intValue());
- }
- }
- private ExactNumericLiteral createExactNumericLiteral(String number) throws
IOException {
+
+ private ExactNumericToken createExactNumericToken(String number) throws
IOException {
byte first; // first digit
// long suffix
@@ -196,7 +182,7 @@
first = Byte.decode(number.substring(0, 3)).byteValue();
if (first >= 8) {
number = "0x" + (first - 8) + number.substring(3);
- return new
ExactNumericLiteral(Long.decode(number).longValue() - Long.MAX_VALUE - 1);
+ return new
ExactNumericToken(Long.decode(number).longValue() - Long.MAX_VALUE - 1);
}
}
} else if (number.startsWith("0")) { // octal
@@ -205,14 +191,14 @@
if (number.length() == 23) {
if (number.charAt(1) == '1') {
number = "0" + number.substring(2);
- return new
ExactNumericLiteral(Long.decode(number).longValue() - Long.MAX_VALUE - 1);
+ return new
ExactNumericToken(Long.decode(number).longValue() - Long.MAX_VALUE - 1);
}
}
}
- return new ExactNumericLiteral(Long.decode(number).longValue());
+ return new ExactNumericToken(Long.decode(number).longValue());
} else {
// integer hex and octal literals like 0xffffffff are handled by
Long.decode()
- return new ExactNumericLiteral(Long.decode(number).intValue());
+ return new ExactNumericToken(Long.decode(number).intValue());
}
}
@@ -222,8 +208,8 @@
// chop off the suffix
number = number.substring(0, number.length()-1);
return new ApproximateNumericToken(Float.parseFloat(number));
- }
-
+ }
+
// ends with a d suffix, chop it off
if(number.endsWith("d") || number.endsWith("D")) {
number = number.substring(0, number.length()-1);
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development