blob: 8e9b2dddd7ad1ecc1c8de27e101bf0722bd14b8a [file] [log] [blame]
/**
********************************************************************************
* Copyright (c) 2018-2019 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
package org.eclipse.app4mc.amalthea.model.builder;
import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
import org.eclipse.app4mc.amalthea.model.Cache;
import org.eclipse.app4mc.amalthea.model.CacheDefinition;
import org.eclipse.app4mc.amalthea.model.ConnectionHandler;
import org.eclipse.app4mc.amalthea.model.ConnectionHandlerDefinition;
import org.eclipse.app4mc.amalthea.model.FrequencyDomain;
import org.eclipse.app4mc.amalthea.model.HWModel;
import org.eclipse.app4mc.amalthea.model.HwAccessElement;
import org.eclipse.app4mc.amalthea.model.HwAccessPath;
import org.eclipse.app4mc.amalthea.model.HwConnection;
import org.eclipse.app4mc.amalthea.model.HwFeature;
import org.eclipse.app4mc.amalthea.model.HwFeatureCategory;
import org.eclipse.app4mc.amalthea.model.HwPort;
import org.eclipse.app4mc.amalthea.model.HwStructure;
import org.eclipse.app4mc.amalthea.model.Memory;
import org.eclipse.app4mc.amalthea.model.MemoryDefinition;
import org.eclipse.app4mc.amalthea.model.PowerDomain;
import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
import org.eclipse.app4mc.amalthea.model.ProcessingUnitDefinition;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
public class HardwareBuilder {
public HWModel hardwareModelRoot(final Procedure1<HWModel> initializer) {
final HWModel obj = AmaltheaFactory.eINSTANCE.createHWModel();
initializer.apply(obj);
return obj;
}
// ********** Top level elements **********
//@SuppressWarnings("java:S100") // domain specific builder language
public void definition_Cache(final HWModel container, final Procedure1<CacheDefinition> initializer) {
final CacheDefinition obj = AmaltheaFactory.eINSTANCE.createCacheDefinition();
container.getDefinitions().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void definition_Memory(final HWModel container, final Procedure1<MemoryDefinition> initializer) {
final MemoryDefinition obj = AmaltheaFactory.eINSTANCE.createMemoryDefinition();
container.getDefinitions().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void definition_ProcessingUnit(final HWModel container, final Procedure1<ProcessingUnitDefinition> initializer) {
final ProcessingUnitDefinition obj = AmaltheaFactory.eINSTANCE.createProcessingUnitDefinition();
container.getDefinitions().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void definition_ConnectionHandler(final HWModel container, final Procedure1<ConnectionHandlerDefinition> initializer) {
final ConnectionHandlerDefinition obj = AmaltheaFactory.eINSTANCE.createConnectionHandlerDefinition();
container.getDefinitions().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void domain_Frequency(final HWModel container, final Procedure1<FrequencyDomain> initializer) {
final FrequencyDomain obj = AmaltheaFactory.eINSTANCE.createFrequencyDomain();
container.getDomains().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void domain_Power(final HWModel container, final Procedure1<PowerDomain> initializer) {
final PowerDomain obj = AmaltheaFactory.eINSTANCE.createPowerDomain();
container.getDomains().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void featureCategory(final HWModel container, final Procedure1<HwFeatureCategory> initializer) {
final HwFeatureCategory obj = AmaltheaFactory.eINSTANCE.createHwFeatureCategory();
container.getFeatureCategories().add(obj);
initializer.apply(obj);
}
public void structure(final HWModel container, final Procedure1<HwStructure> initializer) {
final HwStructure obj = AmaltheaFactory.eINSTANCE.createHwStructure();
container.getStructures().add(obj);
initializer.apply(obj);
}
// ********** Features **********
public void feature(final HwFeatureCategory container, final Procedure1<HwFeature> initializer) {
final HwFeature obj = AmaltheaFactory.eINSTANCE.createHwFeature();
container.getFeatures().add(obj);
initializer.apply(obj);
}
// ********** Structures **********
public void structure(final HwStructure container, final Procedure1<HwStructure> initializer) {
final HwStructure obj = AmaltheaFactory.eINSTANCE.createHwStructure();
container.getStructures().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void module_Memory(final HwStructure container, final Procedure1<Memory> initializer) {
final Memory obj = AmaltheaFactory.eINSTANCE.createMemory();
container.getModules().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void module_ProcessingUnit(final HwStructure container, final Procedure1<ProcessingUnit> initializer) {
final ProcessingUnit obj = AmaltheaFactory.eINSTANCE.createProcessingUnit();
container.getModules().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void module_Cache(final HwStructure container, final Procedure1<Cache> initializer) {
final Cache obj = AmaltheaFactory.eINSTANCE.createCache();
container.getModules().add(obj);
initializer.apply(obj);
}
//@SuppressWarnings("java:S100") // domain specific builder language
public void module_ConnectionHandler(final HwStructure container, final Procedure1<ConnectionHandler> initializer) {
final ConnectionHandler obj = AmaltheaFactory.eINSTANCE.createConnectionHandler();
container.getModules().add(obj);
initializer.apply(obj);
}
public void connection(final HwStructure container, final Procedure1<HwConnection> initializer) {
final HwConnection obj = AmaltheaFactory.eINSTANCE.createHwConnection();
container.getConnections().add(obj);
initializer.apply(obj);
}
public void port(final HwStructure container, final Procedure1<HwPort> initializer) {
final HwPort obj = AmaltheaFactory.eINSTANCE.createHwPort();
container.getPorts().add(obj);
initializer.apply(obj);
}
public void port(final Memory container, final Procedure1<HwPort> initializer) {
final HwPort obj = AmaltheaFactory.eINSTANCE.createHwPort();
container.getPorts().add(obj);
initializer.apply(obj);
}
public void port(final ProcessingUnit container, final Procedure1<HwPort> initializer) {
final HwPort obj = AmaltheaFactory.eINSTANCE.createHwPort();
container.getPorts().add(obj);
initializer.apply(obj);
}
public void port(final Cache container, final Procedure1<HwPort> initializer) {
final HwPort obj = AmaltheaFactory.eINSTANCE.createHwPort();
container.getPorts().add(obj);
initializer.apply(obj);
}
public void port(final ConnectionHandler container, final Procedure1<HwPort> initializer) {
final HwPort obj = AmaltheaFactory.eINSTANCE.createHwPort();
container.getPorts().add(obj);
initializer.apply(obj);
}
public void cache(final ProcessingUnit container, final Procedure1<Cache> initializer) {
final Cache obj = AmaltheaFactory.eINSTANCE.createCache();
container.getCaches().add(obj);
initializer.apply(obj);
}
public void access(final ProcessingUnit container, final Procedure1<HwAccessElement> initializer) {
final HwAccessElement obj = AmaltheaFactory.eINSTANCE.createHwAccessElement();
container.getAccessElements().add(obj);
initializer.apply(obj);
}
public void path(final HwAccessElement container, final Procedure1<HwAccessPath> initializer) {
final HwAccessPath obj = AmaltheaFactory.eINSTANCE.createHwAccessPath();
container.setAccessPath(obj);
initializer.apply(obj);
}
}