/*
 * generated by Xtext 2.11.0
 */
package org.eclipse.osbp.xtext.gridsource.validation;

import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.xtext.xbase.validation.XtypeValidator;

public abstract class AbstractGridSourceValidator extends XtypeValidator {
	
	@Override
	protected List<EPackage> getEPackages() {
		List<EPackage> result = new ArrayList<EPackage>(super.getEPackages());
		result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/gridsource/v1/core"));
		result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/gridsource/v1/core/style"));
		result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/common/JavaVMTypes"));
		result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xtype"));
		return result;
	}
	
}
