mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-14 11:45:38 +02:00
Pretty printing qualified names.
This commit is contained in:
parent
cc8d114f90
commit
e20bdb8813
2 changed files with 128 additions and 119 deletions
|
@ -17,141 +17,149 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName;
|
||||||
/**
|
/**
|
||||||
* @author jcamelon
|
* @author jcamelon
|
||||||
*/
|
*/
|
||||||
public class CPPASTQualifiedName extends CPPASTNode implements ICPPASTQualifiedName {
|
public class CPPASTQualifiedName extends CPPASTNode implements
|
||||||
|
ICPPASTQualifiedName {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param duple
|
* @param duple
|
||||||
*/
|
*/
|
||||||
public CPPASTQualifiedName() {
|
public CPPASTQualifiedName() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.cdt.core.dom.ast.IASTName#resolveBinding()
|
* (non-Javadoc)
|
||||||
*/
|
*
|
||||||
public IBinding resolveBinding() {
|
* @see org.eclipse.cdt.core.dom.ast.IASTName#resolveBinding()
|
||||||
//The full qualified name resolves to the same thing as the last name
|
*/
|
||||||
removeNullNames();
|
public IBinding resolveBinding() {
|
||||||
return names[ names.length - 1 ].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() {
|
||||||
|
return signature;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
/* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see java.lang.Object#toString()
|
*
|
||||||
*/
|
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#addName(org.eclipse.cdt.core.dom.ast.IASTName)
|
||||||
public String toString() {
|
*/
|
||||||
if( names == null ) return null;
|
public void addName(IASTName name) {
|
||||||
removeNullNames();
|
if (names == null) {
|
||||||
StringBuffer buffer = new StringBuffer();
|
names = new IASTName[DEFAULT_NAMES_LIST_SIZE];
|
||||||
for( int i = 0; i < names.length; ++i )
|
currentIndex = 0;
|
||||||
{
|
}
|
||||||
String n = names[i].toString();
|
if (names.length == currentIndex) {
|
||||||
if( n == null )
|
IASTName[] old = names;
|
||||||
return null;
|
names = new IASTName[old.length * 2];
|
||||||
buffer.append( n );
|
for (int i = 0; i < old.length; ++i)
|
||||||
if( i != names.length - 1 )
|
|
||||||
buffer.append( "::"); //$NON-NLS-1$
|
|
||||||
}
|
|
||||||
return buffer.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* (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 )
|
|
||||||
names[i] = old[i];
|
names[i] = old[i];
|
||||||
currentIndex = newSize;
|
}
|
||||||
}
|
names[currentIndex++] = name;
|
||||||
|
}
|
||||||
|
|
||||||
private int currentIndex = 0;
|
/**
|
||||||
private IASTName [] names = null;
|
* @param decls2
|
||||||
private static final int DEFAULT_NAMES_LIST_SIZE = 4;
|
*/
|
||||||
private boolean value;
|
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)
|
private int currentIndex = 0;
|
||||||
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#getNames()
|
private IASTName[] names = null;
|
||||||
*/
|
private static final int DEFAULT_NAMES_LIST_SIZE = 4;
|
||||||
public IASTName[] getNames() {
|
private boolean value;
|
||||||
if( names == null ) return IASTName.EMPTY_NAME_ARRAY;
|
private String signature;
|
||||||
removeNullNames();
|
|
||||||
return names;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see org.eclipse.cdt.core.dom.ast.IASTName#toCharArray()
|
* (non-Javadoc)
|
||||||
*/
|
*
|
||||||
public char[] toCharArray() {
|
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#getNames()
|
||||||
if( names == null ) return null;
|
*/
|
||||||
removeNullNames();
|
public IASTName[] getNames() {
|
||||||
|
if (names == null)
|
||||||
|
return IASTName.EMPTY_NAME_ARRAY;
|
||||||
|
removeNullNames();
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
|
||||||
//count first
|
/*
|
||||||
int len = 0;
|
* (non-Javadoc)
|
||||||
for( int i = 0; i < names.length; ++i )
|
*
|
||||||
{
|
* @see org.eclipse.cdt.core.dom.ast.IASTName#toCharArray()
|
||||||
char [] n = names[i].toCharArray();
|
*/
|
||||||
if( n == null )
|
public char[] toCharArray() {
|
||||||
return null;
|
if (names == null)
|
||||||
len += n.length;
|
return null;
|
||||||
if( i != names.length - 1 )
|
removeNullNames();
|
||||||
len += 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
char [] nameArray = new char[ len ];
|
//count first
|
||||||
int pos = 0;
|
int len = 0;
|
||||||
for( int i = 0; i < names.length; i++ ){
|
for (int i = 0; i < names.length; ++i) {
|
||||||
char [] n = names[i].toCharArray();
|
char[] n = names[i].toCharArray();
|
||||||
System.arraycopy( n, 0, nameArray, pos, n.length );
|
if (n == null)
|
||||||
pos += n.length;
|
return null;
|
||||||
if( i != names.length - 1 ){
|
len += n.length;
|
||||||
nameArray[pos++] = ':';
|
if (i != names.length - 1)
|
||||||
nameArray[pos++] = ':';
|
len += 2;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return nameArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
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()
|
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#isFullyQualified()
|
||||||
*/
|
*/
|
||||||
public boolean isFullyQualified() {
|
public boolean isFullyQualified() {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#setFullyQualified(boolean)
|
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName#setFullyQualified(boolean)
|
||||||
*/
|
*/
|
||||||
public void setFullyQualified(boolean value) {
|
public void setFullyQualified(boolean value) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string
|
||||||
|
*/
|
||||||
|
public void setValue(String string) {
|
||||||
|
this.signature = string;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -2486,6 +2486,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
CPPASTQualifiedName result = new CPPASTQualifiedName();
|
CPPASTQualifiedName result = new CPPASTQualifiedName();
|
||||||
result.setOffsetAndLength(duple.getStartOffset(), duple.getEndOffset()
|
result.setOffsetAndLength(duple.getStartOffset(), duple.getEndOffset()
|
||||||
- duple.getStartOffset());
|
- duple.getStartOffset());
|
||||||
|
result.setValue( duple.toString() );
|
||||||
ITokenDuple[] segments = duple.getSegments();
|
ITokenDuple[] segments = duple.getSegments();
|
||||||
int startingValue = 0;
|
int startingValue = 0;
|
||||||
if( segments.length > 0 &&
|
if( segments.length > 0 &&
|
||||||
|
|
Loading…
Add table
Reference in a new issue