diff -r a151135b0cf9 -r aa2539c91954 tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/source/SourceContext.java --- a/tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/source/SourceContext.java Wed Sep 29 17:45:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,320 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -* Source context is a representation of a range of source code -* -*/ -package com.nokia.tracecompiler.source; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -/** - * Source context is a representation of a range of source code. For example a - * function in source code could be represented with a context that has the name - * of the function - * - */ -public class SourceContext extends SourceLocationBase implements ParsedType { - - /** - * No proposal - */ - public static final int NONE = 0; // CodForChk_Dis_Magic - - /** - * Start of function proposal type - */ - public static final int START_OF_FUNCTION = 1; // CodForChk_Dis_Magic - - /** - * End of function proposal type - */ - public static final int END_OF_FUNCTION = 2; // CodForChk_Dis_Magic - - /** - * Full selection proposal type - */ - public static final int FULL_SELECTION = 3; // CodForChk_Dis_Magic - - /** - * Class name - */ - private String className; - - /** - * Function name - */ - private String functionName; - - /** - * Index to start of parameters - */ - private int parameterStart; - - /** - * List of return types - */ - private ArrayList returnTypes; - - /** - * Creates a new SourceContext starting from given offset - * - * @param parser - * the parser owning this context - * @param offset - * the offset - */ - SourceContext(SourceParser parser, int offset) { - super(parser, offset); - } - - /** - * Gets the class name of this context - * - * @return the class name - */ - public String getClassName() { - return className; - } - - /** - * Gets the function name of this context - * - * @return the function name - */ - public String getFunctionName() { - return functionName; - } - - /** - * Sets the class name. If the class name contains pointer or reference - * characters, they are added to the return statements list - * - * @param name - * the new class name - */ - void setClassName(String name) { - className = removePtrAndRef(name); - } - - /** - * Sets the function name. If the function name contains pointer or - * reference characters, they are added to the return statements list - * - * @param name - * the new function name - */ - void setFunctionName(String name) { - functionName = removePtrAndRef(name); - } - - /** - * Removes the * and & characters from the given tag and adds them as return - * modifiers - * - * @param name - * the name - * @return the name with * and & removed - */ - private String removePtrAndRef(String name) { - String retval = name; - if (name != null) { - int start = 0; - int end = name.length(); - boolean found = true; - while (start < end && found) { - char c = name.charAt(start); - if (c == '*' || c == '&') { - addReturnModifier(c); - start++; - } else { - found = false; - } - } - found = true; - while (end > start && found) { - char c = name.charAt(end - 1); - if (c == '*' || c == '&') { - addReturnModifier(c); - end--; - } else { - found = false; - } - } - retval = name.substring(start, end); - } - return retval; - } - - /** - * Sets the index for start of parameters - * - * @param index - * the index - */ - void setParametersStartIndex(int index) { - parameterStart = index; - } - - /** - * Adds a return type string to the context - * - * @param type - * the return type - */ - void addReturnType(String type) { - // Constructors and destructor do not have return types - if (className != null && functionName!= null && !className.equals(functionName) - && !functionName.equals(SourceConstants.TILDE + className)) { - type = removePtrAndRef(type); - if (type.length() > 0) { - if (returnTypes == null) { - returnTypes = new ArrayList(); - } - returnTypes.add(type); - } - } - } - - /** - * Adds a return type modifier to the list of return types - * - * @param c - * the modifier - */ - private void addReturnModifier(char c) { - if (returnTypes == null) { - returnTypes = new ArrayList(); - } - returnTypes.add(String.valueOf(c)); - } - - /** - * Gets the return types of this context - * - * @return the return types - */ - Iterator getReturnTypes() { - List list; - if (returnTypes != null) { - list = returnTypes; - } else { - list = Collections.emptyList(); - } - return list.iterator(); - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.source.ParsedType#hasQualifier(java.lang.String) - */ - public boolean hasQualifier(String type) { - // All types and qualifiers are in the returnTypes list - return typeEquals(type); - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.source.ParsedType#typeEquals(java.lang.String) - */ - public boolean typeEquals(String type) { - return (returnTypes != null && returnTypes.contains(type)); - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.source.ParsedType#isPointer() - */ - public boolean isPointer() { - boolean retval = false; - if (returnTypes != null) { - for (int i = 0; i < returnTypes.size() && !retval; i++) { - if (returnTypes.get(i).equals(SourceConstants.ASTERISK)) { - retval = true; - } - } - } - return retval; - } - - /** - * Checks if return types list contains "void" - * - * @return true if void, false if not - */ - public boolean isVoid() { - return (returnTypes == null || returnTypes - .contains(SourceConstants.VOID)); - } - - /** - * Parses the parameters of this source context - * - * @param parameterList - * the list where the parameters are stored - * @throws SourceParserException - * if parsing fails - */ - public void parseParameters(List parameterList) - throws SourceParserException { - if (getParser() != null) { - getParser().parseFunctionParameters(parameterStart, parameterList); - } else { - throw new SourceParserException( - SourceErrorCodes.CONTEXT_MISSING_OWNER); - } - } - - /** - * Parses the return statements of this source context - * - * @param returnList - * the list where the return values are stored - * @throws SourceParserException - * if parsing fails - */ - public void parseReturnValues(List returnList) - throws SourceParserException { - if (getParser() != null) { - getParser().parseReturnValues(this, returnList); - } else { - throw new SourceParserException( - SourceErrorCodes.CONTEXT_MISSING_OWNER); - } - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - StringBuffer sb = new StringBuffer(); - if (className != null) { - sb.append(getClassName()); - } - sb.append("::"); //$NON-NLS-1$ - sb.append(getFunctionName()); - return sb.toString(); - } - -}