1 20 21 package JFlex; 22 23 29 public class HiLowEmitter extends PackEmitter { 30 31 32 private int numEntries; 33 34 39 public HiLowEmitter(String name) { 40 super(name); 41 } 42 43 48 public void emitUnpack() { 49 println("\";"); 51 nl(); 52 println(" private static int [] zzUnpack"+name+"() {"); 53 println(" int [] result = new int["+numEntries+"];"); 54 println(" int offset = 0;"); 55 56 for (int i = 0; i < chunks; i++) { 57 println(" offset = zzUnpack"+name+"("+constName()+"_PACKED_"+i+", offset, result);"); 58 } 59 60 println(" return result;"); 61 println(" }"); 62 63 nl(); 64 println(" private static int zzUnpack"+name+"(String packed, int offset, int [] result) {"); 65 println(" int i = 0; /* index in packed string */"); 66 println(" int j = offset; /* index in unpacked array */"); 67 println(" int l = packed.length();"); 68 println(" while (i < l) {"); 69 println(" int high = packed.charAt(i++) << 16;"); 70 println(" result[j++] = high | packed.charAt(i++);"); 71 println(" }"); 72 println(" return j;"); 73 println(" }"); 74 } 75 76 82 public void emit(int val) { 83 numEntries+= 1; 84 breaks(); 85 emitUC(val >> 16); 86 emitUC(val & 0xFFFF); 87 } 88 } 89 | Popular Tags |