package com.robotoworks.mechanoid.sharedprefs.serializer;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.robotoworks.mechanoid.sharedprefs.services.SharedPreferencesModelGrammarAccess;
import com.robotoworks.mechanoid.sharedprefs.sharedPreferencesModel.BooleanLiteral;
import com.robotoworks.mechanoid.sharedprefs.sharedPreferencesModel.Model;
import com.robotoworks.mechanoid.sharedprefs.sharedPreferencesModel.NumericLiteral;
import com.robotoworks.mechanoid.sharedprefs.sharedPreferencesModel.Preference;
import com.robotoworks.mechanoid.sharedprefs.sharedPreferencesModel.PreferencesBlock;
import com.robotoworks.mechanoid.sharedprefs.sharedPreferencesModel.SharedPreferencesModelPackage;
import com.robotoworks.mechanoid.sharedprefs.sharedPreferencesModel.StringLiteral;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor;
import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
import org.eclipse.xtext.serializer.diagnostic.ISemanticSequencerDiagnosticProvider;
import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer;
import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider;
import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
@SuppressWarnings("all")
public class SharedPreferencesModelSemanticSequencer extends AbstractDelegatingSemanticSequencer {
@Inject
private SharedPreferencesModelGrammarAccess grammarAccess;
public void createSequence(EObject context, EObject semanticObject) {
if(semanticObject.eClass().getEPackage() == SharedPreferencesModelPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
case SharedPreferencesModelPackage.BOOLEAN_LITERAL:
if(context == grammarAccess.getLiteralRule()) {
sequence_Literal(context, (BooleanLiteral) semanticObject);
return;
}
else break;
case SharedPreferencesModelPackage.MODEL:
if(context == grammarAccess.getModelRule()) {
sequence_Model(context, (Model) semanticObject);
return;
}
else break;
case SharedPreferencesModelPackage.NUMERIC_LITERAL:
if(context == grammarAccess.getLiteralRule()) {
sequence_Literal(context, (NumericLiteral) semanticObject);
return;
}
else break;
case SharedPreferencesModelPackage.PREFERENCE:
if(context == grammarAccess.getPreferenceRule()) {
sequence_Preference(context, (Preference) semanticObject);
return;
}
else break;
case SharedPreferencesModelPackage.PREFERENCES_BLOCK:
if(context == grammarAccess.getPreferencesBlockRule()) {
sequence_PreferencesBlock(context, (PreferencesBlock) semanticObject);
return;
}
else break;
case SharedPreferencesModelPackage.STRING_LITERAL:
if(context == grammarAccess.getLiteralRule()) {
sequence_Literal(context, (StringLiteral) semanticObject);
return;
}
else break;
}
if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Constraint:
* literal=BooleanValue
*/
protected void sequence_Literal(EObject context, BooleanLiteral semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SharedPreferencesModelPackage.Literals.BOOLEAN_LITERAL__LITERAL) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SharedPreferencesModelPackage.Literals.BOOLEAN_LITERAL__LITERAL));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getLiteralAccess().getLiteralBooleanValueEnumRuleCall_0_1_0(), semanticObject.getLiteral());
feeder.finish();
}
/**
* Constraint:
* literal=SignedNumber
*/
protected void sequence_Literal(EObject context, NumericLiteral semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SharedPreferencesModelPackage.Literals.NUMERIC_LITERAL__LITERAL) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SharedPreferencesModelPackage.Literals.NUMERIC_LITERAL__LITERAL));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getLiteralAccess().getLiteralSignedNumberParserRuleCall_2_1_0(), semanticObject.getLiteral());
feeder.finish();
}
/**
* Constraint:
* literal=STRING
*/
protected void sequence_Literal(EObject context, StringLiteral semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SharedPreferencesModelPackage.Literals.STRING_LITERAL__LITERAL) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SharedPreferencesModelPackage.Literals.STRING_LITERAL__LITERAL));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getLiteralAccess().getLiteralSTRINGTerminalRuleCall_1_1_0(), semanticObject.getLiteral());
feeder.finish();
}
/**
* Constraint:
* (packageName=FQN preferencesBlock=PreferencesBlock)
*/
protected void sequence_Model(EObject context, Model semanticObject) {
if(errorAcceptor != null) {
if(transientValues.isValueTransient(semanticObject, SharedPreferencesModelPackage.Literals.MODEL__PACKAGE_NAME) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SharedPreferencesModelPackage.Literals.MODEL__PACKAGE_NAME));
if(transientValues.isValueTransient(semanticObject, SharedPreferencesModelPackage.Literals.MODEL__PREFERENCES_BLOCK) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SharedPreferencesModelPackage.Literals.MODEL__PREFERENCES_BLOCK));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getModelAccess().getPackageNameFQNParserRuleCall_1_0(), semanticObject.getPackageName());
feeder.accept(grammarAccess.getModelAccess().getPreferencesBlockPreferencesBlockParserRuleCall_2_0(), semanticObject.getPreferencesBlock());
feeder.finish();
}
/**
* Constraint:
* (name=ID type=PreferenceType defaultValue=Literal?)
*/
protected void sequence_Preference(EObject context, Preference semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Constraint:
* (name=ID prefs+=Preference*)
*/
protected void sequence_PreferencesBlock(EObject context, PreferencesBlock semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}