List of usage examples for org.eclipse.jdt.core Signature C_NAME_END
char C_NAME_END
To view the source code for org.eclipse.jdt.core Signature C_NAME_END.
Click Source Link
From source file:ca.mcgill.cs.swevo.jayfx.FastConverter.java
License:Open Source License
public String resolveType(String pType, final IType pEnclosingType) throws ConversionException { String lReturn = ""; int lDepth = 0; int lIndex = 0; while (pType.charAt(lIndex) == Signature.C_ARRAY) { lDepth++;//from w w w.j av a2 s . c om lIndex++; } if (pType.charAt(lIndex) == Signature.C_BYTE || pType.charAt(lIndex) == Signature.C_CHAR || pType.charAt(lIndex) == Signature.C_DOUBLE || pType.charAt(lIndex) == Signature.C_FLOAT || pType.charAt(lIndex) == Signature.C_INT || pType.charAt(lIndex) == Signature.C_LONG || pType.charAt(lIndex) == Signature.C_SHORT || pType.charAt(lIndex) == Signature.C_VOID || pType.charAt(lIndex) == Signature.C_BOOLEAN || pType.charAt(lIndex) == Signature.C_RESOLVED) lReturn = pType; else try { pType = Signature.getTypeErasure(pType); final int lIndex2 = pType.indexOf(Signature.C_NAME_END); final String lType = pType.substring(lIndex + 1, lIndex2); final String[][] lTypes = pEnclosingType.resolveType(lType); if (lTypes == null) throw new ConversionException("Cannot convert type " + lType + " in " + pEnclosingType); if (lTypes.length != 1) throw new ConversionException("Cannot convert type " + lType + " in " + pEnclosingType); for (int i = 0; i < lDepth; i++) lReturn += "["; lReturn += "L" + lTypes[0][0] + "." + lTypes[0][1].replace('.', '$') + ";"; } catch (final JavaModelException pException) { throw new ConversionException(pException); } return lReturn; }
From source file:com.codenvy.ide.ext.java.server.internal.core.SourceMapper.java
License:Open Source License
/** * NOT API, public only for access by Unit tests. * Converts these type names to unqualified signatures. This needs to be done in order to be consistent * with the way the source range is retrieved. * * @see org.eclipse.jdt.internal.core.SourceMapper#getUnqualifiedMethodHandle * @see org.eclipse.jdt.core.Signature/*from w ww . j av a2s . co m*/ */ public String[] convertTypeNamesToSigs(char[][] typeNames) { if (typeNames == null) return CharOperation.NO_STRINGS; int n = typeNames.length; if (n == 0) return CharOperation.NO_STRINGS; String[] typeSigs = new String[n]; for (int i = 0; i < n; ++i) { char[] typeSig = Signature.createCharArrayTypeSignature(typeNames[i], false); // transforms signatures that contains a qualification into unqualified signatures // e.g. "QX<+QMap.Entry;>;" becomes "QX<+QEntry;>;" StringBuffer simpleTypeSig = null; int start = 0; int dot = -1; int length = typeSig.length; for (int j = 0; j < length; j++) { switch (typeSig[j]) { case Signature.C_UNRESOLVED: if (simpleTypeSig != null) simpleTypeSig.append(typeSig, start, j - start); start = j; break; case Signature.C_DOT: dot = j; break; case Signature.C_GENERIC_START: int matchingEnd = findMatchingGenericEnd(typeSig, j + 1); if (matchingEnd > 0 && matchingEnd + 1 < length && typeSig[matchingEnd + 1] == Signature.C_DOT) { // found Head<Param>.Tail -> discard everything except Tail if (simpleTypeSig == null) simpleTypeSig = new StringBuffer().append(typeSig, 0, start); simpleTypeSig.append(Signature.C_UNRESOLVED); start = j = matchingEnd + 2; break; } //$FALL-THROUGH$ case Signature.C_NAME_END: if (dot > start) { if (simpleTypeSig == null) simpleTypeSig = new StringBuffer().append(typeSig, 0, start); simpleTypeSig.append(Signature.C_UNRESOLVED); simpleTypeSig.append(typeSig, dot + 1, j - dot - 1); start = j; } break; } } if (simpleTypeSig == null) { typeSigs[i] = new String(typeSig); } else { simpleTypeSig.append(typeSig, start, length - start); typeSigs[i] = simpleTypeSig.toString(); } } return typeSigs; }
From source file:com.codenvy.ide.ext.java.server.internal.core.SourceMapper.java
License:Open Source License
private int getUnqualifiedTypeSignature(String qualifiedTypeSig, int start, int length, StringBuffer unqualifiedTypeSig, boolean noDollar) { char firstChar = qualifiedTypeSig.charAt(start); int end = start + 1; boolean sigStart = false; firstPass: for (int i = start; i < length; i++) { char current = qualifiedTypeSig.charAt(i); switch (current) { case Signature.C_ARRAY: case Signature.C_SUPER: case Signature.C_EXTENDS: unqualifiedTypeSig.append(current); start = i + 1;/* www. j a v a 2 s. com*/ end = start + 1; firstChar = qualifiedTypeSig.charAt(start); break; case Signature.C_RESOLVED: case Signature.C_UNRESOLVED: case Signature.C_TYPE_VARIABLE: if (!sigStart) { start = ++i; sigStart = true; } break; case Signature.C_NAME_END: case Signature.C_GENERIC_START: end = i; break firstPass; case Signature.C_STAR: unqualifiedTypeSig.append(current); start = i + 1; end = start + 1; firstChar = qualifiedTypeSig.charAt(start); break; case Signature.C_GENERIC_END: return i; case Signature.C_DOT: start = ++i; break; case Signature.C_BOOLEAN: case Signature.C_BYTE: case Signature.C_CHAR: case Signature.C_DOUBLE: case Signature.C_FLOAT: case Signature.C_INT: case Signature.C_LONG: case Signature.C_SHORT: if (!sigStart) { unqualifiedTypeSig.append(current); return i + 1; } } } switch (firstChar) { case Signature.C_RESOLVED: case Signature.C_UNRESOLVED: case Signature.C_TYPE_VARIABLE: unqualifiedTypeSig.append(Signature.C_UNRESOLVED); if (noDollar) { int lastDollar = qualifiedTypeSig.lastIndexOf('$', end); if (lastDollar > start) start = lastDollar + 1; } for (int i = start; i < length; i++) { char current = qualifiedTypeSig.charAt(i); switch (current) { case Signature.C_GENERIC_START: unqualifiedTypeSig.append(current); i++; do { i = getUnqualifiedTypeSignature(qualifiedTypeSig, i, length, unqualifiedTypeSig, noDollar); } while (qualifiedTypeSig.charAt(i) != Signature.C_GENERIC_END); unqualifiedTypeSig.append(Signature.C_GENERIC_END); break; case Signature.C_NAME_END: unqualifiedTypeSig.append(current); return i + 1; default: unqualifiedTypeSig.append(current); break; } } return length; default: // primitive type or wildcard unqualifiedTypeSig.append(qualifiedTypeSig.substring(start, end)); return end; } }
From source file:de.loskutov.bco.ui.JdtUtils.java
License:Open Source License
private static void appendGenericType(StringBuffer sb, IMethod iMethod, String unresolvedType) throws JavaModelException { IType declaringType = iMethod.getDeclaringType(); // unresolvedType is here like "QA;" => we remove "Q" and ";" if (unresolvedType.length() < 3) { // ???? something wrong here .... sb.append(unresolvedType);/* ww w . jav a 2 s. co m*/ return; } unresolvedType = unresolvedType.substring(1, unresolvedType.length() - 1); ITypeParameter typeParameter = iMethod.getTypeParameter(unresolvedType); if (typeParameter == null || !typeParameter.exists()) { typeParameter = declaringType.getTypeParameter(unresolvedType); } String[] bounds = typeParameter.getBounds(); if (bounds.length == 0) { sb.append("Ljava/lang/Object;"); } else { for (int i = 0; i < bounds.length; i++) { String simplyName = bounds[i]; simplyName = Signature.C_UNRESOLVED + simplyName + Signature.C_NAME_END; String resolvedType = getResolvedType(simplyName, declaringType); sb.append(resolvedType); } } }
From source file:edu.ohio_state.cse.khatchad.ajplugintools.ajayfx.Converter.java
License:Open Source License
/** * Converts a string type in Eclipse to a String representation of a type in * the Concern Graphs model.//ww w .ja v a 2 s.c o m * * @param pType * The Eclipse type to convert. * @param aMember * the member declaring pType type. * @return A String representing pType in a way understandable by the * Concern Graphs model. * @exception ConversionException * If the type cannot be converted. */ public static String convertType(final String pType, final IMember aMember) throws ConversionException { String lReturn = ""; int lDepth = 0; int lIndex = 0; while (pType.charAt(lIndex) == Signature.C_ARRAY) { lDepth++; lIndex++; } if (pType.charAt(lIndex) == Signature.C_BYTE) lReturn = Converter.BYTE; else if (pType.charAt(lIndex) == Signature.C_CHAR) lReturn = Converter.CHAR; else if (pType.charAt(lIndex) == Signature.C_DOUBLE) lReturn = Converter.DOUBLE; else if (pType.charAt(lIndex) == Signature.C_FLOAT) lReturn = Converter.FLOAT; else if (pType.charAt(lIndex) == Signature.C_INT) lReturn = Converter.INT; else if (pType.charAt(lIndex) == Signature.C_LONG) lReturn = Converter.LONG; else if (pType.charAt(lIndex) == Signature.C_SHORT) lReturn = Converter.SHORT; else if (pType.charAt(lIndex) == Signature.C_VOID) lReturn = Converter.VOID; else if (pType.charAt(lIndex) == Signature.C_BOOLEAN) lReturn = Converter.BOOLEAN; else if (pType.charAt(lIndex) == Signature.C_RESOLVED) { final int lIndex2 = pType.indexOf(Signature.C_NAME_END); lReturn = pType.substring(lIndex + 1, lIndex2); } else if (pType.charAt(lIndex) == Signature.C_UNRESOLVED) { final int lIndex2 = pType.indexOf(Signature.C_NAME_END); final String lType = pType.substring(lIndex + 1, lIndex2); try { lReturn = Converter.resolveType(aMember, lType); } catch (final ConversionException e) { // We take one crack at inner classes final int lIndex3 = lType.lastIndexOf(Converter.DOT_CHAR); if (lIndex3 > 0) { String lType1 = lType.substring(0, lIndex3); lType1 = Converter.resolveType(aMember, lType1); Converter.resolveType(aMember, lType1 + Converter.DOT + lType.substring(lIndex3 + 1, lType.length())); lReturn = lType1 + Converter.DOLLAR + lType.substring(lIndex3 + 1, lType.length()); } } } for (int i = 0; i < lDepth; i++) lReturn += Converter.BRACKETS; return lReturn; }
From source file:jayfx.Converter.java
License:Open Source License
/** * Converts a string type in Eclipse to a String representation of a type in the * Concern Graphs model./*from w w w. j a va2 s. c om*/ * @param pType The Eclipse type to convert. * @param pMethod the method declaring pType as a parameter type. * @return A String representing pType in a way understandable by the Concern * Graphs model. * @exception ConversionException If the type cannot be converted. */ public static String convertType(String pType, IMethod pMethod) throws ConversionException { String lReturn = ""; int lDepth = 0; int lIndex = 0; while (pType.charAt(lIndex) == Signature.C_ARRAY) { lDepth++; lIndex++; } if (pType.charAt(lIndex) == Signature.C_BYTE) lReturn = BYTE; else if (pType.charAt(lIndex) == Signature.C_CHAR) lReturn = CHAR; else if (pType.charAt(lIndex) == Signature.C_DOUBLE) lReturn = DOUBLE; else if (pType.charAt(lIndex) == Signature.C_FLOAT) lReturn = FLOAT; else if (pType.charAt(lIndex) == Signature.C_INT) lReturn = INT; else if (pType.charAt(lIndex) == Signature.C_LONG) lReturn = LONG; else if (pType.charAt(lIndex) == Signature.C_SHORT) lReturn = SHORT; else if (pType.charAt(lIndex) == Signature.C_VOID) lReturn = VOID; else if (pType.charAt(lIndex) == Signature.C_BOOLEAN) lReturn = BOOLEAN; else if (pType.charAt(lIndex) == Signature.C_RESOLVED) { int lIndex2 = pType.indexOf(Signature.C_NAME_END); lReturn = pType.substring(lIndex + 1, lIndex2); } else if (pType.charAt(lIndex) == Signature.C_UNRESOLVED) { int lIndex2 = pType.indexOf(Signature.C_NAME_END); String lType = pType.substring(lIndex + 1, lIndex2); try { lReturn = resolveType(pMethod, lType); } catch (ConversionException e) { // We take one crack at inner classes int lIndex3 = lType.lastIndexOf(DOT_CHAR); if (lIndex3 > 0) { String lType1 = lType.substring(0, lIndex3); lType1 = resolveType(pMethod, lType1); resolveType(pMethod, lType1 + DOT + lType.substring(lIndex3 + 1, lType.length())); lReturn = lType1 + DOLLAR + lType.substring(lIndex3 + 1, lType.length()); } } } for (int i = 0; i < lDepth; i++) { lReturn += BRACKETS; } return lReturn; }
From source file:jayfx.FastConverter.java
License:Open Source License
public String resolveType(String pType, IType pEnclosingType) throws ConversionException { String lReturn = ""; int lDepth = 0; int lIndex = 0; while (pType.charAt(lIndex) == Signature.C_ARRAY) { lDepth++;/* w w w .j a va 2s. co m*/ lIndex++; } if ((pType.charAt(lIndex) == Signature.C_BYTE) || (pType.charAt(lIndex) == Signature.C_CHAR) || (pType.charAt(lIndex) == Signature.C_DOUBLE) || (pType.charAt(lIndex) == Signature.C_FLOAT) || (pType.charAt(lIndex) == Signature.C_INT) || (pType.charAt(lIndex) == Signature.C_LONG) || (pType.charAt(lIndex) == Signature.C_SHORT) || (pType.charAt(lIndex) == Signature.C_VOID) || (pType.charAt(lIndex) == Signature.C_BOOLEAN) || (pType.charAt(lIndex) == Signature.C_RESOLVED)) { lReturn = pType; } else { try { int lIndex2 = pType.indexOf(Signature.C_NAME_END); String lType = pType.substring(lIndex + 1, lIndex2); String[][] lTypes = pEnclosingType.resolveType(lType); if (lTypes == null) throw new ConversionException("Cannot convert type " + lType + " in " + pEnclosingType); if (lTypes.length != 1) throw new ConversionException("Cannot convert type " + lType + " in " + pEnclosingType); for (int i = 0; i < lDepth; i++) { lReturn += "["; } lReturn += "L" + lTypes[0][0] + "." + lTypes[0][1].replace('.', '$') + ";"; } catch (JavaModelException pException) { throw new ConversionException(pException); } } return lReturn; }
From source file:org.eclipse.jdt.internal.core.SourceMapper.java
License:Open Source License
/** * Converts these type names to unqualified signatures. This needs to be done in order to be consistent * with the way the source range is retrieved. * @see SourceMapper#getUnqualifiedMethodHandle * @see Signature/*from www . ja va 2 s . c om*/ */ private String[] convertTypeNamesToSigs(char[][] typeNames) { if (typeNames == null) return CharOperation.NO_STRINGS; int n = typeNames.length; if (n == 0) return CharOperation.NO_STRINGS; String[] typeSigs = new String[n]; for (int i = 0; i < n; ++i) { char[] typeSig = Signature.createCharArrayTypeSignature(typeNames[i], false); // transforms signatures that contains a qualification into unqualified signatures // e.g. "QX<+QMap.Entry;>;" becomes "QX<+QEntry;>;" StringBuffer simpleTypeSig = null; int start = 0; int dot = -1; int length = typeSig.length; for (int j = 0; j < length; j++) { switch (typeSig[j]) { case Signature.C_UNRESOLVED: if (simpleTypeSig != null) simpleTypeSig.append(typeSig, start, j - start); start = j; break; case Signature.C_DOT: dot = j; break; case Signature.C_GENERIC_START: case Signature.C_NAME_END: if (dot > start) { if (simpleTypeSig == null) simpleTypeSig = new StringBuffer().append(typeSig, 0, start); simpleTypeSig.append(Signature.C_UNRESOLVED); simpleTypeSig.append(typeSig, dot + 1, j - dot - 1); start = j; } break; } } if (simpleTypeSig == null) { typeSigs[i] = new String(typeSig); } else { simpleTypeSig.append(typeSig, start, length - start); typeSigs[i] = simpleTypeSig.toString(); } } return typeSigs; }