Example usage for org.eclipse.jdt.core Signature C_NAME_END

List of usage examples for org.eclipse.jdt.core Signature C_NAME_END

Introduction

In this page you can find the example usage for org.eclipse.jdt.core Signature C_NAME_END.

Prototype

char C_NAME_END

To view the source code for org.eclipse.jdt.core Signature C_NAME_END.

Click Source Link

Document

Character constant indicating the end of a named type in a signature.

Usage

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;
}