/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package net.opengis.gml;

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 net.opengis.gml.GmlPackage
 * @generated
 */
public interface GmlFactory extends EFactory {
	/**
	 * The singleton instance of the factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	GmlFactory eINSTANCE = net.opengis.gml.impl.GmlFactoryImpl.init();

	/**
	 * Returns a new object of class '<em>Abstract Ring Property Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Abstract Ring Property Type</em>'.
	 * @generated
	 */
	AbstractRingPropertyType createAbstractRingPropertyType();

	/**
	 * Returns a new object of class '<em>Abstract Surface Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Abstract Surface Type</em>'.
	 * @generated
	 */
	AbstractSurfaceType createAbstractSurfaceType();

	/**
	 * Returns a new object of class '<em>Bounding Shape Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Bounding Shape Type</em>'.
	 * @generated
	 */
	BoundingShapeType createBoundingShapeType();

	/**
	 * Returns a new object of class '<em>Code List Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Code List Type</em>'.
	 * @generated
	 */
	CodeListType createCodeListType();

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

	/**
	 * Returns a new object of class '<em>Direct Position Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Direct Position Type</em>'.
	 * @generated
	 */
	DirectPositionType createDirectPositionType();

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

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

	/**
	 * Returns a new object of class '<em>Envelope With Time Period Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Envelope With Time Period Type</em>'.
	 * @generated
	 */
	EnvelopeWithTimePeriodType createEnvelopeWithTimePeriodType();

	/**
	 * Returns a new object of class '<em>Grid Envelope Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Grid Envelope Type</em>'.
	 * @generated
	 */
	GridEnvelopeType createGridEnvelopeType();

	/**
	 * Returns a new object of class '<em>Grid Limits Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Grid Limits Type</em>'.
	 * @generated
	 */
	GridLimitsType createGridLimitsType();

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

	/**
	 * Returns a new object of class '<em>Linear Ring Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Linear Ring Type</em>'.
	 * @generated
	 */
	LinearRingType createLinearRingType();

	/**
	 * Returns a new object of class '<em>Meta Data Property Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Meta Data Property Type</em>'.
	 * @generated
	 */
	MetaDataPropertyType createMetaDataPropertyType();

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

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

	/**
	 * Returns a new object of class '<em>Rectified Grid Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Rectified Grid Type</em>'.
	 * @generated
	 */
	RectifiedGridType createRectifiedGridType();

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

	/**
	 * Returns a new object of class '<em>String Or Ref Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>String Or Ref Type</em>'.
	 * @generated
	 */
	StringOrRefType createStringOrRefType();

	/**
	 * Returns a new object of class '<em>Time Position Type</em>'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return a new object of class '<em>Time Position Type</em>'.
	 * @generated
	 */
	TimePositionType createTimePositionType();

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

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

} //GmlFactory
