Skip to content
Snippets Groups Projects
Select Git revision
  • 8973c6d7e360de81fa25b08d19029f7f60cbb611
  • master default
  • labcomm2014
  • labcomm2006
  • python_sig_hash
  • typedefs
  • anders.blomdell
  • typeref
  • pragma
  • compiler-refactoring
  • labcomm2013
  • v2014.6
  • v2015.0
  • v2014.5
  • v2014.4
  • v2006.0
  • v2014.3
  • v2014.2
  • v2014.1
  • v2014.0
  • v2013.0
21 results

ArrayTypeRewrite.jrag

Blame
  • Signature.jrag 4.83 KiB
    import java.util.*;
    
    aspect Signature {  
    
      public class SignatureLine {
      
        private int indent;
        private byte[] data;
        private String comment;
    
        public SignatureLine(int indent, byte[] data, String comment) {
          this.indent = indent;
          this.data = data;
          this.comment = comment;
        }
    
        public int getIndent() {
          return indent;
        }
    
        public byte[] getData() {
          return data;
        }
    
        public String getComment() {
          return comment;
        }
    
      }
    
      public class SignatureList {
    
        private int indent;
        private ArrayList list = new ArrayList();
        
        public void add(byte[] data, String comment) {
          list.add(new SignatureLine(indent, data, comment));
        }
    
        public void addInt(int value, String comment) {
    	byte[] tmp = new byte[5];
     	long v = value & 0xffffffff;
            int i, j;
    
            for (i = 0 ; i == 0 || v != 0 ; i++, v = (v >> 7)) {
              tmp[i] = (byte)(v & 0x7f);
            }
     	byte[] packed = new byte[i];
            for (i = i - 1, j = 0 ; i >= 0 ; i--, j++) {
    	  packed[j] = (byte)(tmp[i] | (i!=0?0x80:0x00));
            }
    	add(packed, comment);
        }
    
        public void addString(String value, String comment) {
          addInt(value.length(), comment);
          byte[] data = new byte[value.length()];
          for (int i = 0 ; i < value.length() ; i++) {
            data[i] = (byte)(value.charAt(i) & 0xff);
          }
          add(data, null);
        }
    
        public int size() {
          return list.size();
        }
    
        public String getIndent(int i) {
          StringBuffer result = new StringBuffer();
          int indent = ((SignatureLine)list.get(i)).getIndent();