/******************************************************************************* * 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.compiler.internal.enumerations; import java.util.Collection; import org.eclipse.edt.compiler.internal.IEGLConstants; /** * @author svihovec * */ public abstract class EGLEnumeration { public static final String ALIGNKIND_STRING = "AlignKind"; public static final String BOOLEAN_STRING = "Boolean"; public static final String CALLINGCONVENTIONKIND_STRING = "CallingConventionKind"; public static final String CASEFORMATKIND_STRING = "CaseFormatKind"; public static final String COLORKIND_STRING = "ColorKind"; public static final String DATASOURCE_STRING = "DataSource"; public static final String DEVICETYPEKIND_STRING = "DeviceTypeKind"; public static final String DISPLAYUSEKIND_STRING = "DisplayUseKind"; public static final String ENCODINGKIND_STRING = "EncodingKind"; public static final String EVENTKIND_STRING = "EventKind"; public static final String EXPORTFOMAT_STRING = "ExportFormat"; public static final String HIGHLIGHTKIND_STRING = "HighlightKind"; public static final String INDEXORIENTATIONKIND_STRING = "IndexOrientationKind"; public static final String INTENSITYKIND_STRING = "IntensityKind"; public static final String OUTLINEKIND_STRING = "OutlineKind"; public static final String PFKEYKIND_STRING = "PfKeyKind"; public static final String PROTECTKIND_STRING = "ProtectKind"; public static final String SELECTTYPEKIND_STRING = "SelectTypeKind"; public static final String SIGNKIND_STRING = "SignKind"; public static final String LINEWRAPKIND_STRING = "LineWrapKind"; public static final String UITypeKind_STRING = "UITypeKind"; public static final String COMMTYPEKIND_STRING = "CommTypeKind"; public static final String WINDOWATTRIBUTEKIND_STRING = "WindowAttributeKind"; private static EGLEnumeration[] enumerations = null; private static void initializeEnumerations() { enumerations = new EGLEnumeration[25]; enumerations[0] = EGLAlignKindEnumeration.getInstance(); enumerations[1] = EGLBooleanEnumeration.getInstance(); enumerations[2] = EGLCallingConventionKindEnumeration.getInstance(); enumerations[3] = EGLCaseFormatKindEnumeration.getInstance(); enumerations[4] = EGLColorKindEnumeration.getInstance(); enumerations[5] = EGLDataSourceEnumeration.getInstance(); enumerations[6] = EGLDeviceTypeKindEnumeration.getInstance(); enumerations[7] = EGLDisplayUseKindEnumeration.getInstance(); enumerations[8] = EGLEventKindEnumeration.getInstance(); enumerations[9] = EGLExportFormatEnumeration.getInstance(); enumerations[10] = EGLHighlightKindEnumeration.getInstance(); enumerations[11] = EGLIndexOrientationKindEnumeration.getInstance(); enumerations[12] = EGLIntensityKindEnumeration.getInstance(); enumerations[13] = EGLOutlineKindEnumeration.getInstance(); enumerations[14] = EGLPFKeyKindEnumeration.getInstance(); enumerations[15] = EGLProtectKindEnumeration.getInstance(); enumerations[16] = EGLSelectTypeKindEnumeration.getInstance(); enumerations[17] = EGLSignKindEnumeration.getInstance(); enumerations[18] = EGLLineWrapKindEnumeration.getInstance(); enumerations[20] = EGLUITypeKindEnumeration.getInstance(); enumerations[21] = EGLCommTypeKindEnumeration.getInstance(); enumerations[23] = EGLWindowAttributeKindEnumeration.getInstance(); enumerations[24] = EGLEncodingKindEnumeration.getInstance(); } public static EGLEnumeration[] getEnumerations() { if (enumerations == null) { initializeEnumerations(); } return enumerations; } public static class EGLEnumerationValue { private final String name; private final int type; public EGLEnumerationValue(String enumValueName, int type) { this.name = enumValueName; this.type = type; } public String getName(){ return name; } public int getType(){ return type; } } public abstract String getName(); public abstract int getType(); public abstract EGLEnumerationValue getValue(String valueName); public abstract Collection getValues(); public abstract boolean isResolvable(); public EGLEnumerationValue resolve(String resolveString){ return resolve(getName(), resolveString); } private EGLEnumerationValue resolve(String enumString, String resolveString) { EGLEnumerationValue foundConstant = null; if(resolveString != null){ boolean shouldResolveString = false; String tempResolveString = resolveString; // If it's qualified, verify that the qualifier is egl.core."enumString" or "enumString" if(resolveString.indexOf(IEGLConstants.PACKAGE_SEPARATOR) != -1){ int lastSeparatorIndex = resolveString.lastIndexOf(IEGLConstants.PACKAGE_SEPARATOR); String qualifier = resolveString.substring(0, lastSeparatorIndex); if(qualifier.equalsIgnoreCase(enumString) || qualifier.equalsIgnoreCase(IEGLConstants.EGL_CORE_PACKAGE + IEGLConstants.PACKAGE_SEPARATOR + enumString)){ shouldResolveString = true; tempResolveString = resolveString.substring(lastSeparatorIndex + 1); } }else{ shouldResolveString = true; tempResolveString = resolveString; } if(shouldResolveString){ foundConstant = (EGLEnumerationValue)getValue(tempResolveString); } } return foundConstant; } }