+++ /dev/null
-package ofc.codegen
-
-class ArrayRange private(name: String, count: Expression, statements: List[Statement]) extends Statement {
- val index = UniqueUnboundVarSymbol(name)
-
- def getIndex = index
- def this(name: String, start: Expression, count: Expression) = this(name, start, count, List.empty)
- def +(stat: Statement) = new ArrayRange(name, start, count, statements :+ stat)
-}
case class DeclaredVarSymbol(name: String) extends VarSymbol(name)
abstract class UnboundVarSymbol(name: String) extends VarSymbol(name)
case class NamedUnboundVarSymbol(name: String) extends UnboundVarSymbol(name)
-case class UniqueUnboundVarSymbol(name: String) extends UnboundVarSymbol(name)
+class IterationSymbol(name: String, count: Expression) extends UnboundVarSymbol(name)
class PPDFunctionSet(val basisName: String, dataName: String) extends FunctionSet {
val basis = NamedUnboundVarSymbol(basisName)
val data = NamedUnboundVarSymbol(dataName)
+ val pubCell = NamedUnboundVarSymbol("pub_cell")
+
val numSpheres = basis % FieldSymbol("num");
+ val ppdWidths = for(dim <- 1 to 3) yield pubCell % FieldSymbol("n_ppds_a"+dim)
def getReader = {
- var sphereLoop = new ArrayRange("sphere_index", 1, numSpheres)
- val sphereIndex = sphereLoop.getIndex
-
- var numPPDs = (basis % FieldSymbol("n_ppds_sphere"))(sphereIndex)
- var ppdLoop = new ArrayRange("ppd_index", 1, numPPDs)
+ var sphereIndex = new IterationSymbol("sphere_index", numSpheres)
+ val numPPDs = (basis % FieldSymbol("n_ppds_sphere"))(sphereIndex)
+ val ppdIndex = new IterationSymbol("ppd_index", numPPDs)
+ val ppdRanges = for(dim <- 1 to 3) yield new IterationSymbol("point"+dim, ppdWidths(dim))
new IterationTemplate(sphereLoop)
}
def generateIterationFooter(names: NameManager) = "end do"
def getDeclarations(names: NameManager) = List("integer :: "+names(this))
}
-
+
class PPDIndex(parent: PPDFunctionSet) extends DiscreteIndex {
var denseIndexNames : List[String] = Nil
var startNames : List[String] = Nil