001 package org.mesopotamia.lang.java; 002 003 import org.mesopotamia.MesopotamiaException; 004 import org.mesopotamia.NodeData; 005 import org.mesopotamia.RepositoryLanguage; 006 import org.mesopotamia.Scan; 007 import org.mesopotamia.lang.java.ref.TypeInfo; 008 import org.mesopotamia.lang.java.ref.TypeSpecInfo; 009 010 public class IntegerConstant extends Constant { 011 012 public IntegerConstant(NodeData xData, Class<?> context, Scan scan, 013 RepositoryLanguage language, Object environment) throws MesopotamiaException { 014 super(xData, context, scan, language, environment); 015 } 016 017 018 public int getValue() { 019 if (getText().toLowerCase().startsWith("0x")) { 020 int ret=0; 021 String digits=getText().substring(2); 022 for (int i=0; i<digits.length(); i++) { 023 ret <<= 4; 024 ret |= java.lang.Character.digit(digits.charAt(i), 16); 025 } 026 return ret; 027 } else { 028 return java.lang.Integer.parseInt(getText()); 029 } 030 } 031 032 @Override 033 public TypeSpecInfo getTypeSpecInfo() { 034 return new TypeSpecInfo() { 035 036 public int getDimensions() { 037 return 0; 038 } 039 040 public TypeInfo getTypeInfo() { 041 return Int.INT_INFO; 042 043 } 044 045 }; 046 } 047 }