blob: 456586439ce9b4d893ade97368d780a922cb48e6 [file] [log] [blame]
/*******************************************************************************
* 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();
}