| /******************************************************************************* |
| * Copyright (c) 2006, 2018 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 - Initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ocl.types; |
| |
| import org.eclipse.ocl.Environment; |
| |
| |
| |
| /** |
| * A representation of the OCL Standard Library, which is the set of singleton |
| * instances of the OCL-defined metatypes, including the generic collection |
| * types (e.g., <tt>Set(T)</tt>). |
| * <p> |
| * See the {@link Environment} class for a description of the |
| * generic type parameters of this class. |
| * </p> |
| * |
| * @author Christian W. Damus (cdamus) |
| */ |
| public interface OCLStandardLibrary<C> { |
| |
| /** |
| * Obtains the single instance of the {@link AnyType} metatype, named |
| * <tt>OclAny</tt>. |
| * |
| * @return the <tt>OclAny</tt> type (an instance of {@link AnyType}) |
| */ |
| C getOclAny(); |
| |
| /** |
| * Obtains the single instance of the {@link VoidType} metatype, named |
| * <tt>OclVoid</tt>. |
| * |
| * @return the <tt>OclVoid</tt> type (an instance of {@link VoidType}) |
| */ |
| C getOclVoid(); |
| |
| /** |
| * Obtains the single instance of the {@link InvalidType} metatype, named |
| * <tt>OclInvalid</tt>. |
| * |
| * @return the <tt>OclInvalid</tt> type (an instance of {@link InvalidType}) |
| */ |
| C getOclInvalid(); |
| |
| /** |
| * Obtains the single instance of the {@link #getOclInvalid() OclInvalid} type, |
| * identified by the token <tt>invalid</tt>. |
| * |
| * @return the <tt>invalid</tt> instance |
| * (an instance of {@link #getInvalid() invalid}) |
| */ |
| Object getInvalid(); |
| |
| /** |
| * Obtains the instance of the {@link PrimitiveType} metatype, named |
| * <tt>Boolean</tt>. |
| * |
| * @return the <tt>Boolean</tt> type (an instance of {@link PrimitiveType}) |
| */ |
| C getBoolean(); |
| |
| /** |
| * Obtains the instance of the {@link PrimitiveType} metatype, named |
| * <tt>String</tt>. |
| * |
| * @return the <tt>String</tt> type (an instance of {@link PrimitiveType}) |
| */ |
| C getString(); |
| |
| /** |
| * Obtains the instance of the {@link PrimitiveType} metatype, named |
| * <tt>Real</tt>. |
| * |
| * @return the <tt>Real</tt> type (an instance of {@link PrimitiveType}) |
| */ |
| C getReal(); |
| |
| /** |
| * Obtains the instance of the {@link PrimitiveType} metatype, named |
| * <tt>Integer</tt>. |
| * |
| * @return the <tt>Integer</tt> type (an instance of {@link PrimitiveType}) |
| */ |
| C getInteger(); |
| |
| /** |
| * Obtains the instance of the {@link PrimitiveType} metatype, |
| * named <tt>UnlimitedNatural</tt>. |
| * |
| * @return the <tt>UnlimitedNatural</tt> type (an instance of |
| * {@link PrimitiveType}) |
| */ |
| C getUnlimitedNatural(); |
| |
| /** |
| * Obtains the generic instance of the {@link TypeType} metatype, named |
| * <tt>OclType</tt>. |
| * |
| * @return the <tt>OclType</tt> type (an instance of {@link TypeType}) |
| */ |
| C getOclType(); |
| |
| /** |
| * Obtains the generic instance of the {@link ElementType} metatype, named |
| * <tt>OclElement</tt>. |
| * |
| * @return the <tt>OclElement</tt> type (an instance of {@link ElementType}) |
| */ |
| C getOclElement(); |
| |
| /** |
| * Obtains the generic instance of the {@link MessageType} metatype, named |
| * <tt>OclMessage</tt>. |
| * |
| * @return the <tt>OclMessage</tt> type (an instance of {@link MessageType}) |
| */ |
| C getOclMessage(); |
| |
| /** |
| * Obtains the generic instance of the {@link SetType} metatype, named |
| * <tt>Set(T)</tt>. |
| * |
| * @return the <tt>Set(T)</tt> type (an instance of {@link SetType}) |
| */ |
| C getSet(); |
| |
| /** |
| * Obtains the generic instance of the {@link OrderedSetType} metatype, named |
| * <tt>OrderedSet(T)</tt>. |
| * |
| * @return the <tt>OrderedSet(T)</tt> type (an instance of {@link OrderedSetType}) |
| */ |
| C getOrderedSet(); |
| |
| /** |
| * Obtains the generic instance of the {@link BagType} metatype, named |
| * <tt>Bag(T)</tt>. |
| * |
| * @return the <tt>Bag(T)</tt> type (an instance of {@link BagType}) |
| */ |
| C getBag(); |
| |
| /** |
| * Obtains the generic instance of the {@link SequenceType} metatype, named |
| * <tt>Sequence(T)</tt>. |
| * |
| * @return the <tt>Sequence(T)</tt> type (an instance of {@link SequenceType}) |
| */ |
| C getSequence(); |
| |
| /** |
| * Obtains the generic instance of the {@link CollectionType} metatype, named |
| * <tt>Collection(T)</tt>. |
| * |
| * @return the <tt>Collection(T)</tt> type (an instance of {@link CollectionType}) |
| */ |
| C getCollection(); |
| |
| /** |
| * Obtains the instance of the {@link ElementType} metatype that represents |
| * the type of states in the model, named <tt>State</tt>. |
| * |
| * @return the <tt>State</tt> type (an instance of {@link ElementType}) |
| */ |
| C getState(); |
| |
| /** |
| * Obtains the instance of the {@link ElementType} metatype that represents |
| * the type of OCL expressions in the model, named <tt>OclExpression</tt>. |
| * |
| * @return the <tt>OclExpression</tt> type (an instance of {@link ElementType}) |
| */ |
| C getOclExpression(); |
| |
| /** |
| * Obtains a generic instance of the {@link AnyType} metatype that represents |
| * the type parameter of generic types and operations, named <tt>T</tt>. |
| * |
| * @return the <tt>T</tt> type parameter (an instance of {@link AnyType}) |
| */ |
| C getT(); |
| |
| /** |
| * Obtains a generic instance of the {@link AnyType} metatype that represents |
| * another type parameter of generic operations (particularly certain |
| * OCL {@link #getCollection() Collection} operations), named <tt>T2</tt>. |
| * |
| * @return the <tt>T2</tt> type parameter (an instance of {@link AnyType}) |
| */ |
| C getT2(); |
| } |