/**
*
*/
package com.sap.furcas.parsergenerator.tcs.t2m.grammar.handlerStub;
import static com.sap.furcas.test.testutils.StringListHelper.list;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import org.eclipse.emf.ecore.EObject;
import com.sap.furcas.metamodel.FURCAS.TCS.ClassTemplate;
import com.sap.furcas.metamodel.FURCAS.TCS.Keyword;
import com.sap.furcas.metamodel.FURCAS.TCS.OperatorList;
import com.sap.furcas.metamodel.FURCAS.TCS.PrimitiveTemplate;
import com.sap.furcas.metamodel.FURCAS.TCS.Template;
import com.sap.furcas.metamodel.FURCAS.TCS.stubs.PrimitiveTemplateStub;
import com.sap.furcas.runtime.common.interfaces.IMetaModelLookup;
import com.sap.furcas.runtime.common.interfaces.ResolvedNameAndReferenceBean;
import com.sap.furcas.runtime.tcs.SyntaxLookup;
/**
*
*/
public class SyntaxLookupStub extends SyntaxLookup {
public int highestIndex;
public Template typeTemplate=null;
public HashMap<String, Template> subtemplates;
public Template enclosingName;
public Set<Keyword> keywords;
public List<ClassTemplate> nonPrimaries = new ArrayList<ClassTemplate>();
public List<ClassTemplate> primaries = new ArrayList<ClassTemplate>();
public PrimitiveTemplate defaultPrimitiveTemplate;
/**
* @param syntax
* @param keywordSet
*/
public SyntaxLookupStub() {
super(null, null);
subtemplates = new HashMap<String, Template>();
}
@Override
public OperatorList getAnonymousOperatorList() {
return null;
}
@Override
public PrimitiveTemplate getDefaultPrimitiveTemplateRule(ResolvedNameAndReferenceBean<?> bean) {
return defaultPrimitiveTemplate;
}
@Override
public String getSymbolRule(String literal) {
return "Rule-" + literal;
}
@Override
public Template getEnclosingQualifiedElement(EObject syntaxElement) {
return enclosingName;
}
@Override
public Set<Keyword> getAllKeywords() {
return keywords;
}
@Override
public Collection<Template> getTCSTemplate(ResolvedNameAndReferenceBean<?> refBean, String mode) {
return Collections.singleton(typeTemplate);
}
@Override
public boolean hasPrimitiveRule(String templateName) {
if(typeTemplate instanceof PrimitiveTemplateStub) {
return ((PrimitiveTemplateStub)typeTemplate).names.equals(list(templateName));
} else {
return false;
}
}
@Override
public <Type> List<ClassTemplate> getNonPrimaries(
List<ResolvedNameAndReferenceBean<Type>> subtypes) {
return nonPrimaries;
}
@Override
public <Type> List<ClassTemplate> getPrimaries(
List<ResolvedNameAndReferenceBean<Type>> subtypes, IMetaModelLookup<Type> metaLookup) {
return primaries;
}
public void addSubtemplate(String name, Template tmpl) {
subtemplates.put(name, tmpl);
}
}