/** * Creates an ArrayType parametrized by a given Type and dimension count. * * @param baseType * a Type to parametrize the ArrayType * @param numDimensions * the dimension count to parametrize the ArrayType. * @return an ArrayType parametrized accrodingly. */ public static ArrayType v(Type baseType, int numDimensions) { if (numDimensions < 0) { throw new RuntimeException("Invalid number of array dimensions: " + numDimensions); } int orgDimensions = numDimensions; Type elementType = baseType; while (numDimensions > 0) { ArrayType ret = elementType.getArrayType(); if (ret == null) { ret = new ArrayType(baseType, orgDimensions - numDimensions + 1); elementType.setArrayType(ret); } elementType = ret; numDimensions--; } return (ArrayType) elementType; }
/** * Creates an ArrayType parametrized by a given Type and dimension count. * @param baseType a Type to parametrize the ArrayType * @param numDimensions the dimension count to parametrize the ArrayType. * @return an ArrayType parametrized accrodingly. */ public static ArrayType v(Type baseType, int numDimensions) { if( numDimensions < 1 ) throw new RuntimeException( "attempt to create array with "+numDimensions+" dimensions" ); ArrayType ret; Type elementType; if( numDimensions == 1 ) { elementType = baseType; } else { elementType = ArrayType.v( baseType, numDimensions-1 ); } ret = elementType.getArrayType(); if( ret == null ) { ret = new ArrayType(baseType, numDimensions); elementType.setArrayType( ret ); } return ret; }
/** * Creates an ArrayType parametrized by a given Type and dimension count. * @param baseType a Type to parametrize the ArrayType * @param numDimensions the dimension count to parametrize the ArrayType. * @return an ArrayType parametrized accrodingly. */ public static ArrayType v(Type baseType, int numDimensions) { if( numDimensions < 1 ) throw new RuntimeException( "attempt to create array with "+numDimensions+" dimensions" ); ArrayType ret; Type elementType; if( numDimensions == 1 ) { elementType = baseType; } else { elementType = ArrayType.v( baseType, numDimensions-1 ); } ret = elementType.getArrayType(); if( ret == null ) { ret = new ArrayType(baseType, numDimensions); elementType.setArrayType( ret ); } return ret; }