Example usage for org.eclipse.jdt.internal.compiler ExtraFlags ParameterTypesStoredAsSignature

List of usage examples for org.eclipse.jdt.internal.compiler ExtraFlags ParameterTypesStoredAsSignature

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler ExtraFlags ParameterTypesStoredAsSignature.

Prototype

int ParameterTypesStoredAsSignature

To view the source code for org.eclipse.jdt.internal.compiler ExtraFlags ParameterTypesStoredAsSignature.

Click Source Link

Usage

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.ConstructorDeclarationPattern.java

License:Open Source License

public void decodeIndexKey(char[] key) {
    int last = key.length - 1;
    int slash = CharOperation.indexOf(SEPARATOR, key, 0);
    this.declaringSimpleName = CharOperation.subarray(key, 0, slash);

    int start = slash + 1;
    slash = CharOperation.indexOf(SEPARATOR, key, start);
    last = slash - 1;//from   w ww  .  j a v  a 2s .c o  m

    boolean isDefaultConstructor = key[last] == '#';
    if (isDefaultConstructor) {
        this.parameterCount = -1;
    } else {
        this.parameterCount = 0;
        int power = 1;
        for (int i = last; i >= start; i--) {
            if (i == last) {
                this.parameterCount = key[i] - '0';
            } else {
                power *= 10;
                this.parameterCount += power * (key[i] - '0');
            }
        }
    }

    slash = slash + 3;
    last = slash - 1;

    int typeModifiersWithExtraFlags = key[last - 1] + (key[last] << 16);
    this.declaringTypeModifiers = decodeModifers(typeModifiersWithExtraFlags);
    this.extraFlags = decodeExtraFlags(typeModifiersWithExtraFlags);

    // initialize optional fields
    this.declaringPackageName = null;
    this.modifiers = 0;
    this.signature = null;
    this.parameterTypes = null;
    this.parameterNames = null;

    boolean isMemberType = (this.extraFlags & ExtraFlags.IsMemberType) != 0;

    if (!isMemberType) {
        start = slash + 1;
        if (this.parameterCount == -1) {
            slash = key.length;
            last = slash - 1;
        } else {
            slash = CharOperation.indexOf(SEPARATOR, key, start);
        }
        last = slash - 1;

        this.declaringPackageName = CharOperation.subarray(key, start, slash);

        start = slash + 1;
        if (this.parameterCount == 0) {
            slash = slash + 3;
            last = slash - 1;

            this.modifiers = key[last - 1] + (key[last] << 16);
        } else if (this.parameterCount > 0) {
            slash = CharOperation.indexOf(SEPARATOR, key, start);
            last = slash - 1;

            boolean hasParameterStoredAsSignature = (this.extraFlags
                    & ExtraFlags.ParameterTypesStoredAsSignature) != 0;
            if (hasParameterStoredAsSignature) {
                this.signature = CharOperation.subarray(key, start, slash);
                CharOperation.replace(this.signature, '\\', SEPARATOR);
            } else {
                this.parameterTypes = CharOperation.splitOn(PARAMETER_SEPARATOR, key, start, slash);
            }
            start = slash + 1;
            slash = CharOperation.indexOf(SEPARATOR, key, start);
            last = slash - 1;

            if (slash != start) {
                this.parameterNames = CharOperation.splitOn(PARAMETER_SEPARATOR, key, start, slash);
            }

            slash = slash + 3;
            last = slash - 1;

            this.modifiers = key[last - 1] + (key[last] << 16);
        } else {
            this.modifiers = ClassFileConstants.AccPublic;
        }
    }

    removeInternalFlags(); // remove internal flags
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.ConstructorDeclarationPattern.java

License:Open Source License

private void removeInternalFlags() {
    this.extraFlags = this.extraFlags & ~ExtraFlags.ParameterTypesStoredAsSignature; // ParameterTypesStoredAsSignature is an internal flags only used to decode key
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.ConstructorPattern.java

License:Open Source License

/**
 * Constructor entries are encoded as described
 *
 * Binary constructor for class// w  w  w  .j  a  v  a2 s.  com
 * TypeName '/' Arity '/' TypeModifers '/' PackageName '/' Signature '/' ParameterNamesopt '/' Modifiers
 * Source constructor for class
 * TypeName '/' Arity '/' TypeModifers '/' PackageName '/' ParameterTypes '/' ParameterNamesopt '/' Modifiers
 * Constructor with 0 arity for class
 * TypeName '/' 0 '/' TypeModifers '/' PackageName '/' Modifiers
 * Constructor for enum, interface (annotation) and class with default constructor
 * TypeName '/' # '/' TypeModifers '/' PackageName
 * Constructor for member type
 * TypeName '/' Arity '/' TypeModifers
 *
 * TypeModifiers contains some encoded extra information
 *        {@link org.eclipse.jdt.internal.compiler.ExtraFlags#IsMemberType}
 *        {@link org.eclipse.jdt.internal.compiler.ExtraFlags#HasNonPrivateStaticMemberTypes}
 *        {@link org.eclipse.jdt.internal.compiler.ExtraFlags#ParameterTypesStoredAsSignature}
 */
public static char[] createDeclarationIndexKey(char[] typeName, int argCount, char[] signature,
        char[][] parameterTypes, char[][] parameterNames, int modifiers, char[] packageName, int typeModifiers,
        int extraFlags) {

    char[] countChars;
    char[] parameterTypesChars = null;
    char[] parameterNamesChars = null;

    if (argCount < 0) {
        countChars = DEFAULT_CONSTRUCTOR;
    } else {
        countChars = argCount < 10 ? COUNTS[argCount] : ("/" + String.valueOf(argCount)).toCharArray(); //$NON-NLS-1$

        if (argCount > 0) {
            if (signature == null) {
                if (parameterTypes != null && parameterTypes.length == argCount) {
                    char[][] parameterTypeErasures = new char[argCount][];
                    for (int i = 0; i < parameterTypes.length; i++) {
                        parameterTypeErasures[i] = getTypeErasure(parameterTypes[i]);
                    }
                    parameterTypesChars = CharOperation.concatWith(parameterTypeErasures, PARAMETER_SEPARATOR);
                }
            } else {
                extraFlags |= ExtraFlags.ParameterTypesStoredAsSignature;
            }

            if (parameterNames != null && parameterNames.length == argCount) {
                parameterNamesChars = CharOperation.concatWith(parameterNames, PARAMETER_SEPARATOR);
            }
        }
    }

    boolean isMemberType = (extraFlags & ExtraFlags.IsMemberType) != 0;

    int typeNameLength = typeName == null ? 0 : typeName.length;
    int packageNameLength = packageName == null ? 0 : packageName.length;
    int countCharsLength = countChars.length;
    int parameterTypesLength = signature == null
            ? (parameterTypesChars == null ? 0 : parameterTypesChars.length)
            : signature.length;
    int parameterNamesLength = parameterNamesChars == null ? 0 : parameterNamesChars.length;

    int resultLength = typeNameLength + countCharsLength + 3; // SEPARATOR=1 + TypeModifers=2
    if (!isMemberType) {
        resultLength += packageNameLength + 1; // SEPARATOR=1
        if (argCount >= 0) {
            resultLength += 3; // SEPARATOR=1 + Modifiers=2
        }

        if (argCount > 0) {
            resultLength += parameterTypesLength + parameterNamesLength + 2; //SEPARATOR=1 + SEPARATOR=1
        }
    }

    char[] result = new char[resultLength];

    int pos = 0;
    if (typeNameLength > 0) {
        System.arraycopy(typeName, 0, result, pos, typeNameLength);
        pos += typeNameLength;
    }

    if (countCharsLength > 0) {
        System.arraycopy(countChars, 0, result, pos, countCharsLength);
        pos += countCharsLength;
    }

    int typeModifiersWithExtraFlags = typeModifiers | encodeExtraFlags(extraFlags);
    result[pos++] = SEPARATOR;
    result[pos++] = (char) typeModifiersWithExtraFlags;
    result[pos++] = (char) (typeModifiersWithExtraFlags >> 16);

    if (!isMemberType) {
        result[pos++] = SEPARATOR;
        if (packageNameLength > 0) {
            System.arraycopy(packageName, 0, result, pos, packageNameLength);
            pos += packageNameLength;
        }

        if (argCount == 0) {
            result[pos++] = SEPARATOR;
            result[pos++] = (char) modifiers;
            result[pos++] = (char) (modifiers >> 16);
        } else if (argCount > 0) {
            result[pos++] = SEPARATOR;
            if (parameterTypesLength > 0) {
                if (signature == null) {
                    System.arraycopy(parameterTypesChars, 0, result, pos, parameterTypesLength);
                } else {
                    System.arraycopy(CharOperation.replaceOnCopy(signature, SEPARATOR, '\\'), 0, result, pos,
                            parameterTypesLength);
                }
                pos += parameterTypesLength;
            }

            result[pos++] = SEPARATOR;
            if (parameterNamesLength > 0) {
                System.arraycopy(parameterNamesChars, 0, result, pos, parameterNamesLength);
                pos += parameterNamesLength;
            }

            result[pos++] = SEPARATOR;
            result[pos++] = (char) modifiers;
            result[pos++] = (char) (modifiers >> 16);
        }

    }

    return result;
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.ConstructorPattern.java

License:Open Source License

static int decodeExtraFlags(int modifiersWithExtraFlags) {
    int extraFlags = 0;

    if ((modifiersWithExtraFlags & ASTNode.Bit28) != 0) {
        extraFlags |= ExtraFlags.ParameterTypesStoredAsSignature;
    }//w w w  . jav  a2 s  .  c  om

    if ((modifiersWithExtraFlags & ASTNode.Bit29) != 0) {
        extraFlags |= ExtraFlags.IsLocalType;
    }

    if ((modifiersWithExtraFlags & ASTNode.Bit30) != 0) {
        extraFlags |= ExtraFlags.IsMemberType;
    }

    if ((modifiersWithExtraFlags & ASTNode.Bit31) != 0) {
        extraFlags |= ExtraFlags.HasNonPrivateStaticMemberTypes;
    }

    return extraFlags;
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.ConstructorPattern.java

License:Open Source License

private static int encodeExtraFlags(int extraFlags) {
    int encodedExtraFlags = 0;

    if ((extraFlags & ExtraFlags.ParameterTypesStoredAsSignature) != 0) {
        encodedExtraFlags |= ASTNode.Bit28;
    }/* w ww .j a  v  a2  s  .c o  m*/

    if ((extraFlags & ExtraFlags.IsLocalType) != 0) {
        encodedExtraFlags |= ASTNode.Bit29;
    }

    if ((extraFlags & ExtraFlags.IsMemberType) != 0) {
        encodedExtraFlags |= ASTNode.Bit30;
    }
    if ((extraFlags & ExtraFlags.HasNonPrivateStaticMemberTypes) != 0) {
        encodedExtraFlags |= ASTNode.Bit31;
    }

    return encodedExtraFlags;
}