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    }