/******************************************************************************* * Copyright © 2011, 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * *******************************************************************************/ package org.eclipse.edt.mof.egl; import org.eclipse.edt.mof.MofSerializable; /** * <code>Type</code> is the abstract super type for all EGL types * All Types are either an instance of a <code>Classifier</code> directly or * is a type that is a combination of a Classifier and some type parameter. */ public interface Type extends Element, MofSerializable { public String EGL_KeyScheme = "egl"; public String KeySchemeDelimiter = ":"; public String TypeArgDelimiter = ";"; public String PrimArgDelimiter = ":"; public String NestedPartDelimiter = "#"; public String PrimArgsStartDelimiter = "("; public String PrimArgsEndDelimiter = ")"; public String TypeArgsStartDelimiter = "<"; public String TypeArgsEndDelimiter = ">"; public char NullableIndicator = '?'; /** * All Types have a base <code>Classifier</code> that defines the API to * instances of the given type. * * @see Classifier * @return Classifier */ public Classifier getClassifier(); public Boolean equals(Type eglType); /** * All Types have a type signature which is composed of the * package qualified name of the base <code>Classifier</code> * and extensions necessary to describe the given type parameters. * The form of a type signature is governed by implementors of this method * * @see Classifier.getTypeSignature() * @see GenericType.getTypeSignature() * @see ParameterizedType.getTypeSignature() * * @return String */ public String getTypeSignature(); /** * A type that is meant to be implemented in the technology of the a given target platform * is said to be a Native type. This is as opposed to types that are defined by the user * which itself defines the implementation of the type. * @return */ public boolean isNativeType(); }