From e20bdb8813ad95b5363d3001b10d739dfeef79eb Mon Sep 17 00:00:00 2001 From: John Camelon Date: Tue, 8 Feb 2005 14:59:35 +0000 Subject: [PATCH] Pretty printing qualified names. --- .../dom/parser/cpp/CPPASTQualifiedName.java | 246 +++++++++--------- .../dom/parser/cpp/GNUCPPSourceParser.java | 1 + 2 files changed, 128 insertions(+), 119 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java index 3734ab30a87..487f8e8f728 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java @@ -17,141 +17,149 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; /** * @author jcamelon */ -public class CPPASTQualifiedName extends CPPASTNode implements ICPPASTQualifiedName { +public class CPPASTQualifiedName extends CPPASTNode implements + ICPPASTQualifiedName { - /** - * @param duple - */ - public CPPASTQualifiedName() { - } + /** + * @param duple + */ + public CPPASTQualifiedName() { + } - /* (non-Javadoc) - * @see org.eclipse.cdt.core.dom.ast.IASTName#resolveBinding() - */ - public IBinding resolveBinding() { - //The full qualified name resolves to the same thing as the last name - removeNullNames(); - return names[ names.length - 1 ].resolveBinding(); - } + /* + * (non-Javadoc) + * + * @see org.eclipse.cdt.core.dom.ast.IASTName#resolveBinding() + */ + public IBinding resolveBinding() { + //The full qualified name resolves to the same thing as the last name + removeNullNames(); + return names[names.length - 1].resolveBinding(); + } - - - /* (non-Javadoc) - * @see java.lang.Object#toString() - */ - public String toString() { - if( names == null ) return null; - removeNullNames(); - StringBuffer buffer = new StringBuffer(); - for( int i = 0; i < names.length; ++i ) - { - String n = names[i].toString(); - if( n == null ) - return null; - buffer.append( n ); - if( i != names.length - 1 ) - buffer.append( "::"); //$NON-NLS-1$ - } - return buffer.toString(); - } + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + public String toString() { + return signature; + } - - /* (non-Javadoc) - * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#addName(org.eclipse.cdt.core.dom.ast.IASTName) - */ - public void addName(IASTName name) { - if( names == null ) - { - names = new IASTName[ DEFAULT_NAMES_LIST_SIZE ]; - currentIndex = 0; - } - if( names.length == currentIndex ) - { - IASTName [] old = names; - names = new IASTName[ old.length * 2 ]; - for( int i = 0; i < old.length; ++i ) - names[i] = old[i]; - } - names[ currentIndex++ ] = name; - } - - /** - * @param decls2 - */ - private void removeNullNames() { - int nullCount = 0; - for( int i = 0; i < names.length; ++i ) - if( names[i] == null ) - ++nullCount; - if( nullCount == 0 ) return; - IASTName [] old = names; - int newSize = old.length - nullCount; - names = new IASTName[ newSize ]; - for( int i = 0; i < newSize; ++i ) + /* + * (non-Javadoc) + * + * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#addName(org.eclipse.cdt.core.dom.ast.IASTName) + */ + public void addName(IASTName name) { + if (names == null) { + names = new IASTName[DEFAULT_NAMES_LIST_SIZE]; + currentIndex = 0; + } + if (names.length == currentIndex) { + IASTName[] old = names; + names = new IASTName[old.length * 2]; + for (int i = 0; i < old.length; ++i) names[i] = old[i]; - currentIndex = newSize; - } - - private int currentIndex = 0; - private IASTName [] names = null; - private static final int DEFAULT_NAMES_LIST_SIZE = 4; - private boolean value; + } + names[currentIndex++] = name; + } - /* (non-Javadoc) - * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#getNames() - */ - public IASTName[] getNames() { - if( names == null ) return IASTName.EMPTY_NAME_ARRAY; - removeNullNames(); - return names; - } + /** + * @param decls2 + */ + private void removeNullNames() { + int nullCount = 0; + for (int i = 0; i < names.length; ++i) + if (names[i] == null) + ++nullCount; + if (nullCount == 0) + return; + IASTName[] old = names; + int newSize = old.length - nullCount; + names = new IASTName[newSize]; + for (int i = 0; i < newSize; ++i) + names[i] = old[i]; + currentIndex = newSize; + } - /* (non-Javadoc) - * @see org.eclipse.cdt.core.dom.ast.IASTName#toCharArray() - */ - public char[] toCharArray() { - if( names == null ) return null; - removeNullNames(); - - //count first - int len = 0; - for( int i = 0; i < names.length; ++i ) - { - char [] n = names[i].toCharArray(); - if( n == null ) - return null; - len += n.length; - if( i != names.length - 1 ) - len += 2; - } - - char [] nameArray = new char[ len ]; - int pos = 0; - for( int i = 0; i < names.length; i++ ){ - char [] n = names[i].toCharArray(); - System.arraycopy( n, 0, nameArray, pos, n.length ); - pos += n.length; - if( i != names.length - 1 ){ - nameArray[pos++] = ':'; - nameArray[pos++] = ':'; - } - } - return nameArray; - } + private int currentIndex = 0; + private IASTName[] names = null; + private static final int DEFAULT_NAMES_LIST_SIZE = 4; + private boolean value; + private String signature; - /* (non-Javadoc) + /* + * (non-Javadoc) + * + * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#getNames() + */ + public IASTName[] getNames() { + if (names == null) + return IASTName.EMPTY_NAME_ARRAY; + removeNullNames(); + return names; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.cdt.core.dom.ast.IASTName#toCharArray() + */ + public char[] toCharArray() { + if (names == null) + return null; + removeNullNames(); + + //count first + int len = 0; + for (int i = 0; i < names.length; ++i) { + char[] n = names[i].toCharArray(); + if (n == null) + return null; + len += n.length; + if (i != names.length - 1) + len += 2; + } + + char[] nameArray = new char[len]; + int pos = 0; + for (int i = 0; i < names.length; i++) { + char[] n = names[i].toCharArray(); + System.arraycopy(n, 0, nameArray, pos, n.length); + pos += n.length; + if (i != names.length - 1) { + nameArray[pos++] = ':'; + nameArray[pos++] = ':'; + } + } + return nameArray; + } + + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#isFullyQualified() */ public boolean isFullyQualified() { return value; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#setFullyQualified(boolean) */ public void setFullyQualified(boolean value) { this.value = value; } - - -} + + /** + * @param string + */ + public void setValue(String string) { + this.signature = string; + + } + +} \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java index a07f2c26155..e51624f2eb2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java @@ -2486,6 +2486,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { CPPASTQualifiedName result = new CPPASTQualifiedName(); result.setOffsetAndLength(duple.getStartOffset(), duple.getEndOffset() - duple.getStartOffset()); + result.setValue( duple.toString() ); ITokenDuple[] segments = duple.getSegments(); int startingValue = 0; if( segments.length > 0 &&