diff options
Diffstat (limited to 'plugins/org.eclipse.etrice.dctools/src/org/eclipse/etrice/dctools/GenModelAccess.xtend')
-rw-r--r-- | plugins/org.eclipse.etrice.dctools/src/org/eclipse/etrice/dctools/GenModelAccess.xtend | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/plugins/org.eclipse.etrice.dctools/src/org/eclipse/etrice/dctools/GenModelAccess.xtend b/plugins/org.eclipse.etrice.dctools/src/org/eclipse/etrice/dctools/GenModelAccess.xtend new file mode 100644 index 000000000..340b069b8 --- /dev/null +++ b/plugins/org.eclipse.etrice.dctools/src/org/eclipse/etrice/dctools/GenModelAccess.xtend @@ -0,0 +1,36 @@ +/******************************************************************************* + * Copyright (c) 2011 protos software gmbh (http://www.protos.de). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * CONTRIBUTORS: + * Henrik Rentz-Reichert (initial contribution) + * + *******************************************************************************/ + +package org.eclipse.etrice.dctools + +import java.util.Map +import org.eclipse.etrice.core.RoomStandaloneSetup +import org.eclipse.etrice.core.fsm.fSM.ModelComponent +import org.eclipse.etrice.core.genmodel.fsm.ExtendedFsmGenBuilder +import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer + +class GenModelAccess { + + Map<ModelComponent, GraphContainer> cache = newHashMap + + def public GraphContainer get(ModelComponent mc) { + if(!cache.containsKey(mc)) { + val injector = new RoomStandaloneSetup().createInjector + val builder = new ExtendedFsmGenBuilder(injector); + val gc = builder.createTransformedModel(mc) + builder.withCommonData(gc) + cache.put(mc, gc) + } + + return cache.get(mc) + } +}
\ No newline at end of file |