Exemplo n.º 1
0
def einit(init, domain):
  def mixInitWithLoc(loc):
    newInit = copy.deepcopy(init)
    checkForAlgebraicExpressions(newInit["expression"],["%loc"],[locations[loc]],str(0))
    solveAlgebraicExpressions(newInit["expression"])
    newInit["expression"] = checkForChains(newInit["expression"])
    insertLocInExpression(newInit["expression"], loc)
    newInit["quantity"] = substituteDataArrayElementInString("%loc", newInit["quantity"], locations[loc])
    newInit["quantity"] = str(int(aeParser.parse(newInit["quantity"],lexer=aeLexer)))
    return newInit
  
  def mixInitWithOrgDst(matrixCell):
    (org, dst, r) = matrixCell
    if (options.fullMatrix == False and r == 0):
      return nullInstruction
    if (org != dst):
      newInit = copy.deepcopy(init)
      checkForAlgebraicExpressions(newInit["expression"],["%org","%dst"],[locations[org],locations[dst]],str(r))
      solveAlgebraicExpressions(newInit["expression"])
      newInit["expression"] = checkForChains(newInit["expression"])
      insertOrgInExpression(newInit["expression"],org)
      insertDstInExpression(newInit["expression"],dst)
      newInit["quantity"] = substituteDataArrayElementInString("%org", newInit["quantity"], locations[org])
      newInit["quantity"] = substituteDataArrayElementInString("%dst", newInit["quantity"], locations[dst])
      newInit["quantity"] = newInit["quantity"].replace("%cell", str(r))
      newInit["quantity"] = str(int(aeParser.parse(newInit["quantity"],lexer=aeLexer)))
      return newInit
    else:
      return nullInstruction

  initBuilder = None
  if (domain[0].__class__ == "".__class__): #if it is string, it is just loc
    initBuilder = mixInitWithLoc
  else: #the type is tuple, it is a matrix
    initBuilder = mixInitWithOrgDst
  for i in map(initBuilder, domain):
    printing.printInit(i)