/**
 * generated by Xtext 2.14.0
 */
package com.minres.rdl.rdl;

import org.eclipse.emf.ecore.EFactory;

/**
 * <!-- begin-user-doc -->
 * The <b>Factory</b> for the model.
 * It provides a create method for each non-abstract class of the model.
 * <!-- end-user-doc -->
 * @see com.minres.rdl.rdl.RdlPackage
 * @generated
 */
public interface RdlFactory extends EFactory
{
  /**
   * The singleton instance of the factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  RdlFactory eINSTANCE = com.minres.rdl.rdl.impl.RdlFactoryImpl.init();

  /**
   * Returns a new object of class '<em>Root</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Root</em>'.
   * @generated
   */
  Root createRoot();

  /**
   * Returns a new object of class '<em>Include</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Include</em>'.
   * @generated
   */
  Include createInclude();

  /**
   * Returns a new object of class '<em>Property Definition</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Property Definition</em>'.
   * @generated
   */
  PropertyDefinition createPropertyDefinition();

  /**
   * Returns a new object of class '<em>Property Default</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Property Default</em>'.
   * @generated
   */
  PropertyDefault createPropertyDefault();

  /**
   * Returns a new object of class '<em>Property Usage</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Property Usage</em>'.
   * @generated
   */
  PropertyUsage createPropertyUsage();

  /**
   * Returns a new object of class '<em>Component Definition</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Component Definition</em>'.
   * @generated
   */
  ComponentDefinition createComponentDefinition();

  /**
   * Returns a new object of class '<em>Instantiation</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Instantiation</em>'.
   * @generated
   */
  Instantiation createInstantiation();

  /**
   * Returns a new object of class '<em>Component Instance</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Component Instance</em>'.
   * @generated
   */
  ComponentInstance createComponentInstance();

  /**
   * Returns a new object of class '<em>Range</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Range</em>'.
   * @generated
   */
  Range createRange();

  /**
   * Returns a new object of class '<em>Property Assignment</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Property Assignment</em>'.
   * @generated
   */
  PropertyAssignment createPropertyAssignment();

  /**
   * Returns a new object of class '<em>Default Propery Assignment</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Default Propery Assignment</em>'.
   * @generated
   */
  DefaultProperyAssignment createDefaultProperyAssignment();

  /**
   * Returns a new object of class '<em>Explicit Property Assignment</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Explicit Property Assignment</em>'.
   * @generated
   */
  ExplicitPropertyAssignment createExplicitPropertyAssignment();

  /**
   * Returns a new object of class '<em>Post Property Assignment</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Post Property Assignment</em>'.
   * @generated
   */
  PostPropertyAssignment createPostPropertyAssignment();

  /**
   * Returns a new object of class '<em>Instance Property Ref</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Instance Property Ref</em>'.
   * @generated
   */
  InstancePropertyRef createInstancePropertyRef();

  /**
   * Returns a new object of class '<em>Entity</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Entity</em>'.
   * @generated
   */
  Entity createEntity();

  /**
   * Returns a new object of class '<em>Instance Ref</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Instance Ref</em>'.
   * @generated
   */
  InstanceRef createInstanceRef();

  /**
   * Returns a new object of class '<em>Property Assignment Rhs</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Property Assignment Rhs</em>'.
   * @generated
   */
  PropertyAssignmentRhs createPropertyAssignmentRhs();

  /**
   * Returns a new object of class '<em>Concat</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Concat</em>'.
   * @generated
   */
  Concat createConcat();

  /**
   * Returns a new object of class '<em>Concat Elem</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Concat Elem</em>'.
   * @generated
   */
  ConcatElem createConcatElem();

  /**
   * Returns a new object of class '<em>RValue</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>RValue</em>'.
   * @generated
   */
  RValue createRValue();

  /**
   * Returns a new object of class '<em>Enum Definition</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Enum Definition</em>'.
   * @generated
   */
  EnumDefinition createEnumDefinition();

  /**
   * Returns a new object of class '<em>Enum Body</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Enum Body</em>'.
   * @generated
   */
  EnumBody createEnumBody();

  /**
   * Returns a new object of class '<em>Enum Entry</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Enum Entry</em>'.
   * @generated
   */
  EnumEntry createEnumEntry();

  /**
   * Returns a new object of class '<em>Enum Property</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Enum Property</em>'.
   * @generated
   */
  EnumProperty createEnumProperty();

  /**
   * Returns a new object of class '<em>Enum Instance Type</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Enum Instance Type</em>'.
   * @generated
   */
  EnumInstanceType createEnumInstanceType();

  /**
   * Returns the package supported by this factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the package supported by this factory.
   * @generated
   */
  RdlPackage getRdlPackage();

} //RdlFactory
