Skip to content
Snippets Groups Projects
Select Git revision
  • labcomm2014
  • labcomm2006
  • master default
  • 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
20 results

ArrayTypeRewrite.jrag

Blame
  • ArrayTypeRewrite.jrag 1.04 KiB
    aspect ArrayRewrite {
    
      syn boolean Dim.isVariable() {
        for (int i = 0 ; i < getNumExp() ; i++) {
          if (getExp(i) instanceof VariableSize) {
    	return true;
          }	
        }
        return false;
      }
    
      rewrite ParseArrayType {
        when (! getDim(0).isVariable()) 
        to FixedArrayType  { 
          if (getNumDim() == 1) {
            return new FixedArrayType(getType(), 
    				  getDim(0).getExpList());
          } else {
            List l = new List();
            for (int i = 1 ; i < getNumDim() ; i++) {
    	  l.add(getDim(i));
            }
            return new FixedArrayType(new ParseArrayType(getType(), l), 
    				  getDim(0).getExpList());
          }
        }
        when (getDim(0).isVariable()) 
        to VariableArrayType  { 
          if (getNumDim() == 1) {
            return new VariableArrayType(getType(), 
    				     getDim(0).getExpList());
          } else {
            List l = new List();
            for (int i = 1 ; i < getNumDim() ; i++) {
    	  l.add(getDim(i));
            }
            return new VariableArrayType(new ParseArrayType(getType(), l), 
    				     getDim(0).getExpList());
          }
        }
      }
    
    }