implement am26 support for constants
[fleet.git] / src / edu / berkeley / fleet / doc / Constant.java
1 package edu.berkeley.fleet.doc;
2
3 import java.io.*;
4 import java.util.*;
5
6 public class Constant {
7
8     long setbits   = 0;
9     long clearbits = 0;
10     boolean signExtend = false;
11     int numberOffset = 0;
12     int numberWidth = 0;
13
14     public Constant(String s) {
15         if (s.startsWith("0x")) {
16             setbits = Long.parseLong(s.substring(2), 16);
17             clearbits = ~setbits;
18         } else if (s.length() == 37) {
19             for(int i=0; i<37; i++) {
20                 char c = s.charAt(36-i);
21                 switch(c) {
22                     case '0': clearbits |= (1<<i); break;
23                     case '1': setbits   |= (1<<i); break;
24                     case '.': break;
25                     case 's': signExtend = true;  numberOffset = i; numberWidth++; break;
26                     case 'u': signExtend = false; numberOffset = i; numberWidth++; break;
27                 }
28             }
29         } else {
30             setbits = Long.parseLong(s);
31             clearbits = ~setbits;
32         }
33     }
34
35
36 }