Java tutorial
/* * moco, the Monty Compiler * Copyright (c) 2013-2014, Monty's Coconut, All rights reserved. * * This file is part of moco, the Monty Compiler. * * moco is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. * * moco is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * Linking this program and/or its accompanying libraries statically or * dynamically with other modules is making a combined work based on this * program. Thus, the terms and conditions of the GNU General Public License * cover the whole combination. * * As a special exception, the copyright holders of moco give * you permission to link this programm and/or its accompanying libraries * with independent modules to produce an executable, regardless of the * license terms of these independent modules, and to copy and distribute the * resulting executable under terms of your choice, provided that you also meet, * for each linked independent module, the terms and conditions of the * license of that module. * * An independent module is a module which is not * derived from or based on this program and/or its accompanying libraries. * If you modify this library, you may extend this exception to your version of * the program or library, but you are not obliged to do so. If you do not wish * to do so, delete this exception statement from your version. * * You should have received a copy of the GNU General Public * License along with this library. */ package de.uni.bremen.monty.moco.codegeneration; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import de.uni.bremen.monty.moco.util.Params; public class CodeWriter { private final OutputStream llOutputStream; public CodeWriter(Params params) throws IOException { this.llOutputStream = initLlvmOutput(params); IOUtils.copy(getClass().getResourceAsStream("/std_llvm_include.ll"), this.llOutputStream); } private OutputStream initLlvmOutput(Params params) throws FileNotFoundException { OutputStream llOutputStream; if (params.isGenerateOnlyLLVM()) { if (params.getOutputFile() == null) { //llOutputStream = System.out; llOutputStream = new NopOutputStream(); } else { llOutputStream = new FileOutputStream(params.getOutputFile()); } } else { String llFile; if (params.getInputFile() != null) { llFile = FilenameUtils.removeExtension(params.getInputFile()) + ".ll"; } else { llFile = params.getInputFolder() + "/Main.ll"; } llOutputStream = new FileOutputStream(llFile); params.setLlFile(llFile); } return llOutputStream; } public void write(String data) throws IOException { this.llOutputStream.write(data.getBytes()); this.llOutputStream.flush(); } }