1 package edu.berkeley.fleet.doc;
6 public class Constant {
10 boolean signExtend = false;
14 public Constant(String s) {
15 if (s.startsWith("0x")) {
16 setbits = Long.parseLong(s.substring(2), 16);
18 } else if (s.length() == 37) {
19 for(int i=0; i<37; i++) {
20 char c = s.charAt(36-i);
22 case '0': clearbits |= (1<<i); break;
23 case '1': setbits |= (1<<i); break;
25 case 's': signExtend = true; numberOffset = i; numberWidth++; break;
26 case 'u': signExtend = false; numberOffset = i; numberWidth++; break;
30 setbits = Long.parseLong(s);
35 public static long resolveConstant(String exp, BenkoBoxDescription bbd) {
37 for(StringTokenizer st = new StringTokenizer(exp, ",");
38 st.hasMoreTokens();) {
39 String s = st.nextToken();
41 if (s.indexOf('=') != -1) {
42 val = Long.parseLong(s.substring(s.indexOf('=')+1));
43 s = s.substring(0, s.indexOf('='));
45 Constant c = bbd.getConstant(s);
47 if (s.startsWith("0x")) ret |= Long.parseLong(s, 16);
48 else ret |= Long.parseLong(s);