/* * #%~ * VDM Code Generator * %% * Copyright (C) 2008 - 2014 Overture * %% * This program 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 of the * License, or (at your option) any later version. * * This program 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. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #~% */ package org.overture.codegen.visitor; import org.overture.codegen.ir.SBindIR; import org.overture.codegen.ir.SDeclIR; import org.overture.codegen.ir.SExpIR; import org.overture.codegen.ir.SExportIR; import org.overture.codegen.ir.SExportsIR; import org.overture.codegen.ir.SImportIR; import org.overture.codegen.ir.SImportsIR; import org.overture.codegen.ir.SModifierIR; import org.overture.codegen.ir.SMultipleBindIR; import org.overture.codegen.ir.SObjectDesignatorIR; import org.overture.codegen.ir.SPatternIR; import org.overture.codegen.ir.SStateDesignatorIR; import org.overture.codegen.ir.SStmIR; import org.overture.codegen.ir.STermIR; import org.overture.codegen.ir.STraceCoreDeclIR; import org.overture.codegen.ir.STraceDeclIR; import org.overture.codegen.ir.STypeIR; import org.overture.codegen.ir.declarations.AModuleDeclIR; import org.overture.codegen.ir.declarations.SClassDeclIR; import org.overture.codegen.traces.TermVisitorIR; import org.overture.codegen.traces.TraceCoreDeclVisitorIR; import org.overture.codegen.traces.TraceDeclVisitorIR; public class VisitorManager { private IRVisitor<SClassDeclIR> classVisitor; private IRVisitor<AModuleDeclIR> moduleVisitor; private IRVisitor<SImportsIR> importsVisitor; private IRVisitor<SImportIR> importVisitor; private IRVisitor<SExportsIR> exportsVisitor; private IRVisitor<SExportIR> exportVisitor; private IRVisitor<SDeclIR> declVisitor; private IRVisitor<SExpIR> expVisitor; private IRVisitor<STypeIR> typeVisitor; private IRVisitor<SStmIR> stmVisitor; private IRVisitor<SStateDesignatorIR> stateDesignatorVisitor; private IRVisitor<SObjectDesignatorIR> objectDesignatorVisitor; private IRVisitor<SMultipleBindIR> multipleBindVisitor; private IRVisitor<SBindIR> bindVisitor; private IRVisitor<SPatternIR> patternVisitor; private IRVisitor<SModifierIR> modifierVisitor; private IRVisitor<STermIR> termVisitor; private IRVisitor<STraceDeclIR> traceDeclVisitor; private IRVisitor<STraceCoreDeclIR> traceCoreDeclVisitor; public VisitorManager() { this.classVisitor = new IRVisitor<SClassDeclIR>(new ClassVisitorIR()); this.moduleVisitor = new IRVisitor<AModuleDeclIR>(new ModuleVisitorIR()); this.importsVisitor = new IRVisitor<SImportsIR>(new ImportsVisitorIR()); this.importVisitor = new IRVisitor<SImportIR>(new ImportVisitorIR()); this.exportsVisitor = new IRVisitor<SExportsIR>(new ExportsVisitorIR()); this.exportVisitor = new IRVisitor<SExportIR>(new ExportVisitorIR()); this.declVisitor = new IRVisitor<SDeclIR>(new DeclVisitorIR()); this.expVisitor = new IRVisitor<SExpIR>(new ExpVisitorIR()); this.typeVisitor = new IRVisitorRecursiveTypeHandler(new TypeVisitorIR()); this.stmVisitor = new IRVisitor<SStmIR>(new StmVisitorIR()); this.stateDesignatorVisitor = new IRVisitor<SStateDesignatorIR>(new StateDesignatorVisitorIR()); this.objectDesignatorVisitor = new IRVisitor<SObjectDesignatorIR>(new ObjectDesignatorVisitorIR()); this.multipleBindVisitor = new IRVisitor<SMultipleBindIR>(new MultipleBindVisitorIR()); this.bindVisitor = new IRVisitor<SBindIR>(new BindVisitorIR()); this.patternVisitor = new IRVisitor<SPatternIR>(new PatternVisitorIR()); this.modifierVisitor = new IRVisitor<SModifierIR>(new ModifierVisitorIR()); this.termVisitor = new IRVisitor<STermIR>(new TermVisitorIR()); this.traceDeclVisitor = new IRVisitor<STraceDeclIR>(new TraceDeclVisitorIR()); this.traceCoreDeclVisitor = new IRVisitor<STraceCoreDeclIR>(new TraceCoreDeclVisitorIR()); } public IRVisitor<SClassDeclIR> getClassVisitor() { return classVisitor; } public IRVisitor<AModuleDeclIR> getModuleVisitor() { return moduleVisitor; } public IRVisitor<SImportsIR> getImportsVisitor() { return importsVisitor; } public IRVisitor<SImportIR> getImportVisitor() { return importVisitor; } public IRVisitor<SExportsIR> getExportsVisitor() { return exportsVisitor; } public IRVisitor<SExportIR> getExportVisitor() { return exportVisitor; } public IRVisitor<SDeclIR> getDeclVisitor() { return declVisitor; } public IRVisitor<SExpIR> getExpVisitor() { return expVisitor; } public IRVisitor<STypeIR> getTypeVisitor() { return typeVisitor; } public IRVisitor<SStmIR> getStmVisitor() { return stmVisitor; } public IRVisitor<SStateDesignatorIR> getStateDesignatorVisitor() { return stateDesignatorVisitor; } public IRVisitor<SObjectDesignatorIR> getObjectDesignatorVisitor() { return objectDesignatorVisitor; } public IRVisitor<SMultipleBindIR> getMultipleBindVisitor() { return multipleBindVisitor; } public IRVisitor<SBindIR> getBindVisitor() { return bindVisitor; } public IRVisitor<SPatternIR> getPatternVisitor() { return patternVisitor; } public IRVisitor<SModifierIR> getModifierVisitor() { return modifierVisitor; } public IRVisitor<STermIR> getTermVisitor() { return termVisitor; } public IRVisitor<STraceDeclIR> getTraceDeclVisitor() { return traceDeclVisitor; } public IRVisitor<STraceCoreDeclIR> getTraceCoreDeclVisitor() { return traceCoreDeclVisitor; } }