private void printMultivector(String name, Multivector mv) { for (int bladeIndex = 0; bladeIndex < mv.entries.length; bladeIndex++) if (Math.abs(mv.entries[bladeIndex]) > EPSILON) System.out.println(name + "(" + bladeIndex + ") = "+mv.entries[bladeIndex]+" // "+graph.getAlgebraDefinitionFile().getBladeString(bladeIndex)); }
code.append(component.getName()); code.append(' '); String bladeStr = graph.getAlgebraDefinitionFile().getBladeString(component.getBladeIndex()); bladeStr = bladeStr.replaceAll("\\(", "").replaceAll("\\)", "").replaceAll(" ", ""); code.append(bladeStr);
int bladeCount = node.getGraph().getAlgebraDefinitionFile().getBladeCount(); for (int i = 0; i < bladeCount; ++i) { if (!var.contains(i)) { Expression blade = node.getGraph().getAlgebraDefinitionFile().getBladeExpression(i);
@Override public Set<OutputFile> generate(ControlFlowGraph in) throws CodeGeneratorException { UI ui = new UI(); ui.controller = new Controller(ui); ui.setVisible(true); ui.controller.loadSource(in); ui.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); String[] base = in.getAlgebraDefinitionFile().base; ui.controller.setAlgebraBlades(Arrays.copyOfRange(base, 1, base.length)); ui.controller.restart(); return new HashSet<OutputFile>(); }
@Override public void visit(StartNode startNode) { CluCalcFileHeader header = CluCalcFileHeader.get(startNode); if (header != null) { if (header.getNullSpace() != null) { switch (header.getNullSpace()) { case IPNS: code.append(":IPNS;\n"); break; case OPNS: code.append(":OPNS;\n"); break; } } code.append("\n"); } // TODO add "Generated by" header etc. // Generate the local variables for all local variables for (Variable localVariable : startNode.getGraph().getLocalVariables()) { code.append(localVariable.getName() + codeSuffix); code.append(" = List("); code.append(startNode.getGraph().getAlgebraDefinitionFile().getBladeCount()); code.append(");\n"); } code.append("\n"); startNode.getSuccessor().accept(this); }
@Override public void visit(StartNode node) { graph = node.getGraph(); int bladeCount = graph.getAlgebraDefinitionFile().getBladeCount();
@Override public void visit(AssignmentNode node) { String variable = node.getVariable().getName(); if (assigned.contains(variable)) { String message = "Variable " + variable + " has been reset for reuse."; log.warn(message); Notifications.addWarning(message); code.append("\n"); appendIndentation(); code.append("memset("); code.append(variable); code.append(", 0, sizeof("); code.append(variable); code.append(")); // Reset variable for reuse.\n"); assigned.remove(variable); } appendIndentation(); node.getVariable().accept(this); code.append(" = "); node.getValue().accept(this); code.append(";"); if (node.getVariable() instanceof MultivectorComponent) { code.append(" // "); MultivectorComponent component = (MultivectorComponent) node.getVariable(); code.append(node.getGraph().getAlgebraDefinitionFile().getBladeString(component.getBladeIndex())); } code.append('\n'); node.getSuccessor().accept(this); }
try { AlgebraDefinitionFile alFile = graph.getAlgebraDefinitionFile(); alFile.setUsePrecalculatedTable(plugin.usePrecalulatedTables); alFile.setUseAsRessource(graph.asRessource);
code.append(assignmentNode.getGraph().getAlgebraDefinitionFile().getBladeString(component.getBladeIndex()));
@Override public void visit(AssignmentNode node) { appendIndentation(); declaredLocal.add(getVarName(node.getVariable())); node.getVariable().accept(this); append(" = "); node.getValue().accept(this); if (node.getVariable() instanceof MultivectorComponent) { append(';'); append(" // "); MultivectorComponent component = (MultivectorComponent) node.getVariable(); append(node.getGraph().getAlgebraDefinitionFile().getBladeString(component.getBladeIndex())); } append(";\n"); node.getSuccessor().accept(this); }
usedAlgebra = new UseAlgebra(graph.getAlgebraDefinitionFile()); CFGImporter builder = new CFGImporter(usedAlgebra, plugin.isScalarFunctions(), graph.getAlgebraDefinitionFile()); graph.accept(builder);