<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--

/******************************************************************************
 * Copyright (c) 2007 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v20.html
 *
 * Contributors:
 *    IBM Corporation - initial API and implementation 
 ****************************************************************************/

-->
</head>
<body>

Implementation of an OCL binding for the <tt>Ecore</tt> metamodel.

<h2>Package Specification</h2>
<p>
This package defines an OCL {@linkplain org.eclipse.ocl.Environment environment}
implementation for the <tt>Ecore</tt> metamodel.  Clients can use an
{@link org.eclipse.ocl.ecore.EcoreEnvironmentFactory} in conjunction with the
{@link org.eclipse.ocl.ecore.OCL} class to parse and evaluated OCL constraints
on Ecore models.
</p>
</p>
Clients may extend the environment implementation to support custom requirements,
such as overriding the
{@link org.eclipse.ocl.Environment#lookupOperation} and
{@link org.eclipse.ocl.EvaluationEnvironment#callOperation}
methods to inject custom operations into existing metaclasses (to provide
Java implementations, rather than defining additional operations using OCL).
</p>
<p>
This package also extends the types of the OCL {@link org.eclipse.ocl.types.TypesPackage Types}
package to define the generalization relationships to the Ecore metamodel's
counterparts to the UML Classifier ({@link org.eclipse.emf.ecore.EClassifier})
and DataType ({@link org.eclipse.emf.ecore.EDataType}) metaclasses.  This
ensures a consistent type system in the OCL binding for Ecore, so that all
types are represented as <tt>EClassifier</tt>s.
</p>
<p>
Clients may assume that any types referenced by OCL constraints parsed against
an Ecore model are instances of the interfaces in this package.
</p>


@see org.eclipse.ocl.ecore.OCL
@see org.eclipse.ocl.ecore.EcoreEnvironmentFactory
@see org.eclipse.ocl.ecore.EcoreEnvironment
@see org.eclipse.ocl.ecore.EcoreEvaluationEnvironment
@see org.eclipse.ocl.types

</body>
</html>
