/**
* Copyright (c) 2016 committers of YAKINDU and others.
* 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:
* committers of YAKINDU - initial API and implementation
*
*/
package org.yakindu.sct.generator.c;
import java.util.List;
import com.google.inject.ImplementedBy;
/**
* Holds the configuration of generation artifacts. A configuration comprises
* the artifact's name, its output configuration name and a template defining
* the artifact's contents.
*
* @author thomas kutz - Initial API and contribution
*
*/
@ImplementedBy(DefaultGenArtifactConfigurations.class)
public interface IGenArtifactConfigurations {
/**
* Adds a configuration for a generation artifact.
*/
void configure(String artifactName, String outputConfigName, IContentTemplate contentTemplate);
/**
* @return all stored configurations
*/
List<GenArtifactConfiguration> getConfigurations();
/**
* Computes the relative path from a base artifact to a target which can be
* an artifact name or an absolute path. For the former case, the artifact
* configuration needs to be stored beforehand.
*/
String relativeTo(String target, String fromArtifact);
public static class GenArtifactConfiguration {
private String outputName;
private String name;
private IContentTemplate contentTemplate;
public GenArtifactConfiguration(String name, String outputConfigName, IContentTemplate contentTemplate) {
this.name = name;
this.outputName = outputConfigName;
this.contentTemplate = contentTemplate;
}
public String getName() {
return name;
}
public String getOutputName() {
return outputName;
}
public IContentTemplate getContentTemplate() {
return contentTemplate;
}
}
}