diff options
Diffstat (limited to 'core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser')
166 files changed, 1452 insertions, 77 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousCastVsFunctionCallExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousCastVsFunctionCallExpression.java index 03048ed0b85..bf1c1f883da 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousCastVsFunctionCallExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousCastVsFunctionCallExpression.java @@ -46,6 +46,10 @@ public abstract class ASTAmbiguousCastVsFunctionCallExpression extends ASTNode i fFunctionCallExpression= functionCall; } + public IASTExpression copy() { + throw new UnsupportedOperationException(); + } + public void addExpression(IASTExpression e) { Assert.isLegal(false); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTEnumerator.java index 5bf0a5e1a7e..2999c79708f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTEnumerator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTEnumerator.java @@ -35,6 +35,12 @@ public abstract class ASTEnumerator extends ASTNode implements IASTEnumerator, I setName(name); setValue(value); } + + protected void copyAbstractEnumerator(ASTEnumerator copy) { + copy.setName(name == null ? null : name.copy()); + copy.setValue(value == null ? null : value.copy()); + copy.setOffsetAndLength(this); + } public void setName(IASTName name) { assertNotFrozen(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTProblem.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTProblem.java index 7751d9f3dc0..cc7b392ef55 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTProblem.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTProblem.java @@ -49,6 +49,12 @@ public class ASTProblem extends ASTNode implements IASTProblem { this.isError= isError; } + public ASTProblem copy() { + ASTProblem problem = new ASTProblem(id, arg == null ? null : arg.clone(), isError); + problem.setOffsetAndLength(this); + return problem; + } + public int getID() { return id; } @@ -93,6 +99,10 @@ public class ASTProblem extends ASTNode implements IASTProblem { return arg == null ? new String[0] : new String[] {new String(arg)}; } + public char[] getArgument() { + return arg; + } + protected static final Map<Integer, String> errorMessages; static { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTTranslationUnit.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTTranslationUnit.java index af48519d648..ec19144401d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTTranslationUnit.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTTranslationUnit.java @@ -60,7 +60,8 @@ public abstract class ASTTranslationUnit extends ASTNode implements IASTTranslat private boolean fIsHeader= true; private IIndexFileSet fIndexFileSet; private INodeFactory fNodeFactory; - + + @Override public final IASTTranslationUnit getTranslationUnit() { return this; @@ -362,4 +363,17 @@ public abstract class ASTTranslationUnit extends ASTNode implements IASTTranslat } }); } + + + protected void copyAbstractTU(ASTTranslationUnit copy) { + copy.setIndex(fIndex); + copy.setIsHeaderUnit(fIsHeader); + copy.setASTNodeFactory(fNodeFactory); + copy.setLocationResolver(fLocationResolver); + + for(IASTDeclaration declaration : getDeclarations()) + copy.addDeclaration(declaration == null ? null : declaration.copy()); + + copy.setOffsetAndLength(this); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/IASTInternalEnumerationSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/IASTInternalEnumerationSpecifier.java index 4dfd9c06106..7bc08231750 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/IASTInternalEnumerationSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/IASTInternalEnumerationSpecifier.java @@ -14,6 +14,7 @@ import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier; /** * Internal interface for c- or c++ enumeration specifiers. + * @noimplement This interface is not intended to be implemented by clients. */ public interface IASTInternalEnumerationSpecifier extends IASTEnumerationSpecifier { /** @@ -21,4 +22,9 @@ public interface IASTInternalEnumerationSpecifier extends IASTEnumerationSpecifi * first attempt to do so. */ boolean startValueComputation(); + + /** + * @since 5.1 + */ + public IASTInternalEnumerationSpecifier copy(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTASMDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTASMDeclaration.java index 62888525d3b..4201b859b18 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTASMDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTASMDeclaration.java @@ -29,6 +29,13 @@ public class CASTASMDeclaration extends ASTNode implements IASTASMDeclaration { setAssembly(assembly); } + public CASTASMDeclaration copy() { + CASTASMDeclaration copy = new CASTASMDeclaration(); + copy.assembly = assembly == null ? null : assembly.clone(); + copy.setOffsetAndLength(this); + return copy; + } + public String getAssembly() { if( assembly == null ) return ""; //$NON-NLS-1$ return new String( assembly ); @@ -36,7 +43,7 @@ public class CASTASMDeclaration extends ASTNode implements IASTASMDeclaration { public void setAssembly(String assembly) { assertNotFrozen(); - this.assembly = assembly.toCharArray(); + this.assembly = assembly == null ? null : assembly.toCharArray(); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousBinaryVsCastExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousBinaryVsCastExpression.java index 80ac21af0c0..5b66ee7495f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousBinaryVsCastExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousBinaryVsCastExpression.java @@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.dom.parser.c; import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.IASTCastExpression; +import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousBinaryVsCastExpression; public class CASTAmbiguousBinaryVsCastExpression extends ASTAmbiguousBinaryVsCastExpression { @@ -19,4 +20,8 @@ public class CASTAmbiguousBinaryVsCastExpression extends ASTAmbiguousBinaryVsCas public CASTAmbiguousBinaryVsCastExpression(IASTBinaryExpression binaryExpr, IASTCastExpression castExpr) { super(binaryExpr, castExpr); } + + public IASTExpression copy() { + throw new UnsupportedOperationException(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousDeclarator.java index d79f577c9e0..ffa79493748 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousDeclarator.java @@ -97,4 +97,8 @@ public class CASTAmbiguousDeclarator extends CASTAmbiguity implements IASTAmbigu assertNotFrozen(); Assert.isLegal(false); } + + public IASTDeclarator copy() { + throw new UnsupportedOperationException(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousExpression.java index 6346bdc250b..13afb3948e2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousExpression.java @@ -57,5 +57,9 @@ public class CASTAmbiguousExpression extends CASTAmbiguity implements IASTAmbigu public IType getExpressionType() { return CVisitor.getExpressionType(this); } + + public IASTExpression copy() { + throw new UnsupportedOperationException(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousParameterDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousParameterDeclaration.java index a4cda4fc8cc..20aa19d522b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousParameterDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousParameterDeclaration.java @@ -71,4 +71,9 @@ public class CASTAmbiguousParameterDeclaration extends CASTAmbiguity implements assertNotFrozen(); Assert.isLegal(false); } + + public IASTParameterDeclaration copy() { + throw new UnsupportedOperationException(); + } + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousStatement.java index 8cfb5f6f734..1d94cc204e4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousStatement.java @@ -16,8 +16,7 @@ import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousStatement; -public class CASTAmbiguousStatement extends CASTAmbiguity implements - IASTAmbiguousStatement { +public class CASTAmbiguousStatement extends CASTAmbiguity implements IASTAmbiguousStatement { private IASTStatement [] stmts = new IASTStatement[2]; private int stmtsPos=-1; @@ -50,4 +49,9 @@ public class CASTAmbiguousStatement extends CASTAmbiguity implements } + public IASTStatement copy() { + throw new UnsupportedOperationException(); + } + + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayDeclarator.java index 443e9bc414a..c5cce07557d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayDeclarator.java @@ -36,6 +36,15 @@ public class CASTArrayDeclarator extends CASTDeclarator implements IASTArrayDecl public CASTArrayDeclarator(IASTName name) { super(name); } + + @Override + public CASTArrayDeclarator copy() { + CASTArrayDeclarator copy = new CASTArrayDeclarator(); + copyBaseDeclarator(copy); + for(IASTArrayModifier modifier : getArrayModifiers()) + copy.addArrayModifier(modifier == null ? null : modifier.copy()); + return copy; + } public IASTArrayModifier[] getArrayModifiers() { if( arrayMods == null ) return IASTArrayModifier.EMPTY_ARRAY; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayDesignator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayDesignator.java index 1916818e067..ad45fc20754 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayDesignator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayDesignator.java @@ -36,6 +36,11 @@ public class CASTArrayDesignator extends ASTNode implements setSubscriptExpression(exp); } + public CASTArrayDesignator copy() { + CASTArrayDesignator copy = new CASTArrayDesignator(exp == null ? null : exp.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getSubscriptExpression() { return exp; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayModifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayModifier.java index dc40f6e7548..b30a9b0deb4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayModifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayModifier.java @@ -33,6 +33,11 @@ public class CASTArrayModifier extends ASTNode implements IASTArrayModifier, IAS setConstantExpression(exp); } + public CASTArrayModifier copy() { + CASTArrayModifier copy = new CASTArrayModifier(exp == null ? null : exp.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getConstantExpression() { return exp; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayRangeDesignator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayRangeDesignator.java index f050e30aeb9..ab651efdc2b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayRangeDesignator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArrayRangeDesignator.java @@ -36,6 +36,14 @@ public class CASTArrayRangeDesignator extends ASTNode implements setRangeCeiling(ceiling); } + public CASTArrayRangeDesignator copy() { + CASTArrayRangeDesignator copy = new CASTArrayRangeDesignator(); + copy.setRangeFloor(floor == null ? null : floor.copy()); + copy.setRangeCeiling(ceiling == null ? null : ceiling.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getRangeFloor() { return this.floor; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArraySubscriptExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArraySubscriptExpression.java index 58362b47774..20233ebbadd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArraySubscriptExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTArraySubscriptExpression.java @@ -36,6 +36,14 @@ public class CASTArraySubscriptExpression extends ASTNode implements setSubscriptExpression(subscript); } + public CASTArraySubscriptExpression copy() { + CASTArraySubscriptExpression copy = new CASTArraySubscriptExpression(); + copy.setArrayExpression(array == null ? null : array.copy()); + copy.setSubscriptExpression(subscript == null ? null : subscript.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getArrayExpression() { return array; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBaseDeclSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBaseDeclSpecifier.java index 1a609995782..645072209c5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBaseDeclSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBaseDeclSpecifier.java @@ -25,6 +25,7 @@ public abstract class CASTBaseDeclSpecifier extends ASTNode implements ICASTDecl protected boolean isRestrict; protected boolean isInline; + public boolean isRestrict() { return isRestrict; } @@ -69,4 +70,13 @@ public abstract class CASTBaseDeclSpecifier extends ASTNode implements ICASTDecl assertNotFrozen(); this.isInline = value; } + + protected void copyBaseDeclSpec(CASTBaseDeclSpecifier copy) { + copy.storageClass = storageClass; + copy.isConst = isConst; + copy.isVolatile = isVolatile; + copy.isRestrict = isRestrict; + copy.isInline = isInline; + copy.setOffsetAndLength(this); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBinaryExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBinaryExpression.java index 4a785eb245a..d1bed861679 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBinaryExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBinaryExpression.java @@ -37,6 +37,15 @@ public class CASTBinaryExpression extends ASTNode implements setOperand1(operand1); setOperand2(operand2); } + + public CASTBinaryExpression copy() { + CASTBinaryExpression copy = new CASTBinaryExpression(); + copy.op = op; + copy.setOperand1(operand1 == null ? null : operand1.copy()); + copy.setOperand2(operand2 == null ? null : operand2.copy()); + copy.setOffsetAndLength(this); + return copy; + } public int getOperator() { return op; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBreakStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBreakStatement.java index 7b5b0e7ef07..6e677e60cdb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBreakStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTBreakStatement.java @@ -40,4 +40,10 @@ public class CASTBreakStatement extends ASTNode implements IASTBreakStatement { return true; } + + public CASTBreakStatement copy() { + CASTBreakStatement copy = new CASTBreakStatement(); + copy.setOffsetAndLength(this); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCaseStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCaseStatement.java index b3cb4045d9e..c0cd0b572f0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCaseStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCaseStatement.java @@ -32,6 +32,12 @@ public class CASTCaseStatement extends ASTNode implements IASTCaseStatement, IAS public CASTCaseStatement(IASTExpression expression) { setExpression(expression); } + + public CASTCaseStatement copy() { + CASTCaseStatement copy = new CASTCaseStatement(expression == null ? null : expression.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getExpression() { return expression; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCastExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCastExpression.java index e219667af9f..29aa8060953 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCastExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCastExpression.java @@ -24,12 +24,23 @@ public class CASTCastExpression extends CASTUnaryExpression implements IASTCastE public CASTCastExpression() { + super(op_cast, null); } public CASTCastExpression(IASTTypeId typeId, IASTExpression operand) { super(op_cast, operand); setTypeId(typeId); } + + @Override + public CASTCastExpression copy() { + CASTCastExpression copy = new CASTCastExpression(); + copy.setTypeId(typeId == null ? null : typeId.copy()); + IASTExpression operand = getOperand(); + copy.setOperand(operand == null ? null : operand.copy()); + copy.setOffsetAndLength(this); + return copy; + } public void setTypeId(IASTTypeId typeId) { assertNotFrozen(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompositeTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompositeTypeSpecifier.java index 7bcfd7bd8dd..35c2a1d78ee 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompositeTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompositeTypeSpecifier.java @@ -37,6 +37,21 @@ public class CASTCompositeTypeSpecifier extends CASTBaseDeclSpecifier implements setName(name); } + public CASTCompositeTypeSpecifier copy() { + CASTCompositeTypeSpecifier copy = new CASTCompositeTypeSpecifier(); + copyCompositeTypeSpecifier(copy); + return copy; + } + + protected void copyCompositeTypeSpecifier(CASTCompositeTypeSpecifier copy) { + copyBaseDeclSpec(copy); + copy.setKey(key); + copy.setName(name == null ? null : name.copy()); + for(IASTDeclaration member : getMembers()) + copy.addMemberDeclaration(member == null ? null : member.copy()); + } + + public int getKey() { return key; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompoundStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompoundStatement.java index 38a774a83be..acbffeb83be 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompoundStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompoundStatement.java @@ -30,6 +30,14 @@ public class CASTCompoundStatement extends ASTNode implements IASTCompoundStatem private IScope scope = null; + public CASTCompoundStatement copy() { + CASTCompoundStatement copy = new CASTCompoundStatement(); + for(IASTStatement statement : getStatements()) + copy.addStatement(statement == null ? null : statement.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTStatement[] getStatements() { if( statements == null ) return IASTStatement.EMPTY_STATEMENT_ARRAY; return (IASTStatement[]) ArrayUtil.trim( IASTStatement.class, statements ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompoundStatementExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompoundStatementExpression.java index a78787ae33c..a995ed04ddd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompoundStatementExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTCompoundStatementExpression.java @@ -31,6 +31,13 @@ public class CASTCompoundStatementExpression extends ASTNode implements public CASTCompoundStatementExpression(IASTCompoundStatement statement) { setCompoundStatement(statement); } + + public CASTCompoundStatementExpression copy() { + CASTCompoundStatementExpression copy = new CASTCompoundStatementExpression(); + copy.setCompoundStatement(statement == null ? null : statement.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTCompoundStatement getCompoundStatement() { return statement; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTConditionalExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTConditionalExpression.java index 189fbf67b2b..105480b4e71 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTConditionalExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTConditionalExpression.java @@ -38,6 +38,15 @@ public class CASTConditionalExpression extends ASTNode implements setPositiveResultExpression(positive); setNegativeResultExpression(negative); } + + public CASTConditionalExpression copy() { + CASTConditionalExpression copy = new CASTConditionalExpression(); + copy.setLogicalConditionExpression(condition == null ? null : condition.copy()); + copy.setPositiveResultExpression(positive == null ? null : positive.copy()); + copy.setNegativeResultExpression(negative == null ? null : negative.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getLogicalConditionExpression() { return condition; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTContinueStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTContinueStatement.java index c93d13a2126..017cd079e58 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTContinueStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTContinueStatement.java @@ -18,8 +18,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; /** * @author jcamelon */ -public class CASTContinueStatement extends ASTNode implements - IASTContinueStatement { +public class CASTContinueStatement extends ASTNode implements IASTContinueStatement { @Override public boolean accept( ASTVisitor action ){ @@ -39,4 +38,10 @@ public class CASTContinueStatement extends ASTNode implements } return true; } + + public CASTContinueStatement copy() { + CASTContinueStatement copy = new CASTContinueStatement(); + copy.setOffsetAndLength(this); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDeclarationStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDeclarationStatement.java index a4a39529fb7..3f4c5fefd50 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDeclarationStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDeclarationStatement.java @@ -31,6 +31,14 @@ public class CASTDeclarationStatement extends ASTNode implements IASTDeclaration setDeclaration(declaration); } + + public CASTDeclarationStatement copy() { + CASTDeclarationStatement copy = new CASTDeclarationStatement(); + copy.setDeclaration(declaration == null ? null : declaration.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTDeclaration getDeclaration() { return declaration; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDeclarator.java index 3be37d4cf65..dc02f58c747 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDeclarator.java @@ -51,6 +51,22 @@ public class CASTDeclarator extends ASTNode implements IASTDeclarator, IASTAmbig setName(name); } + public CASTDeclarator copy() { + CASTDeclarator copy = new CASTDeclarator(); + copyBaseDeclarator(copy); + return copy; + } + + protected void copyBaseDeclarator(CASTDeclarator copy) { + copy.setName(name == null ? null : name.copy()); + copy.setInitializer(initializer == null ? null : initializer.copy()); + copy.setNestedDeclarator(nestedDeclarator == null ? null : nestedDeclarator.copy()); + for(IASTPointerOperator pointer : getPointerOperators()) + copy.addPointerOperator(pointer == null ? null : pointer.copy()); + copy.setOffsetAndLength(this); + } + + public IASTPointerOperator[] getPointerOperators() { if (pointerOps == null) return IASTPointerOperator.EMPTY_ARRAY; pointerOps = (IASTPointerOperator[]) ArrayUtil.removeNullsAfter(IASTPointerOperator.class, pointerOps, pointerOpsPos); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDefaultStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDefaultStatement.java index 65a93450d44..d8655f2fa44 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDefaultStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDefaultStatement.java @@ -18,8 +18,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; /** * @author jcamelon */ -public class CASTDefaultStatement extends ASTNode implements - IASTDefaultStatement { +public class CASTDefaultStatement extends ASTNode implements IASTDefaultStatement { @Override public boolean accept( ASTVisitor action ){ @@ -39,4 +38,10 @@ public class CASTDefaultStatement extends ASTNode implements } return true; } + + public CASTDefaultStatement copy() { + CASTDefaultStatement copy = new CASTDefaultStatement(); + copy.setOffsetAndLength(this); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDesignatedInitializer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDesignatedInitializer.java index d820630c0ae..0b746a82d3e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDesignatedInitializer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDesignatedInitializer.java @@ -21,8 +21,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; /** * @author jcamelon */ -public class CASTDesignatedInitializer extends ASTNode implements - ICASTDesignatedInitializer { +public class CASTDesignatedInitializer extends ASTNode implements ICASTDesignatedInitializer { private IASTInitializer rhs; @@ -34,6 +33,14 @@ public class CASTDesignatedInitializer extends ASTNode implements setOperandInitializer(operandInitializer); } + public CASTDesignatedInitializer copy() { + CASTDesignatedInitializer copy = new CASTDesignatedInitializer(rhs == null ? null : rhs.copy()); + for(ICASTDesignator designator : getDesignators()) + copy.addDesignator(designator == null ? null : designator.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public void addDesignator(ICASTDesignator designator) { assertNotFrozen(); if (designator != null) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDoStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDoStatement.java index 8c36926edc2..f67975a1e74 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDoStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTDoStatement.java @@ -36,6 +36,14 @@ public class CASTDoStatement extends ASTNode implements IASTDoStatement, IASTAmb setCondition(condition); } + public CASTDoStatement copy() { + CASTDoStatement copy = new CASTDoStatement(); + copy.setBody(body == null ? null : body.copy()); + copy.setCondition(condition == null ? null : condition.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTStatement getBody() { return body; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTElaboratedTypeSpecifier.java index 87ada0e748b..0604e5ad64b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTElaboratedTypeSpecifier.java @@ -43,6 +43,12 @@ public class CASTElaboratedTypeSpecifier extends CASTBaseDeclSpecifier implement setName(name); } + public CASTElaboratedTypeSpecifier copy() { + CASTElaboratedTypeSpecifier copy = new CASTElaboratedTypeSpecifier(kind, name == null ? null : name.copy()); + copyBaseDeclSpec(copy); + return copy; + } + public int getKind() { return kind; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTEnumerationSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTEnumerationSpecifier.java index d0651af81d8..2ed80ab93c8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTEnumerationSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTEnumerationSpecifier.java @@ -35,6 +35,20 @@ public class CASTEnumerationSpecifier extends CASTBaseDeclSpecifier setName(name); } + public CASTEnumerationSpecifier copy() { + CASTEnumerationSpecifier copy = new CASTEnumerationSpecifier(); + copyEnumerationSpecifier(copy); + return copy; + } + + protected void copyEnumerationSpecifier(CASTEnumerationSpecifier copy) { + copyBaseDeclSpec(copy); + copy.setName(name == null ? null : name.copy()); + for(IASTEnumerator enumerator : getEnumerators()) + copy.addEnumerator(enumerator == null ? null : enumerator.copy()); + } + + public boolean startValueComputation() { if (valuesComputed) return false; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTEnumerator.java index d37b3827853..9ec6dbbd240 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTEnumerator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTEnumerator.java @@ -18,6 +18,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTEnumerator; * C-specific enumerator */ public class CASTEnumerator extends ASTEnumerator { + public CASTEnumerator() { super(); } @@ -25,4 +26,10 @@ public class CASTEnumerator extends ASTEnumerator { public CASTEnumerator(IASTName name, IASTExpression value) { super(name, value); } + + public CASTEnumerator copy() { + CASTEnumerator copy = new CASTEnumerator(); + copyAbstractEnumerator(copy); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTExpressionList.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTExpressionList.java index 07c1fa6d3cc..b3c19110d04 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTExpressionList.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTExpressionList.java @@ -27,6 +27,14 @@ import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent; public class CASTExpressionList extends ASTNode implements IASTExpressionList, IASTAmbiguityParent { + public CASTExpressionList copy() { + CASTExpressionList copy = new CASTExpressionList(); + for(IASTExpression expr : getExpressions()) + copy.addExpression(expr == null ? null : expr.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression[] getExpressions() { if (expressions == null) return IASTExpression.EMPTY_EXPRESSION_ARRAY; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTExpressionStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTExpressionStatement.java index 0938e15ab61..82f50113bea 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTExpressionStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTExpressionStatement.java @@ -34,6 +34,13 @@ public class CASTExpressionStatement extends ASTNode implements setExpression(expression); } + public CASTExpressionStatement copy() { + CASTExpressionStatement copy = new CASTExpressionStatement(); + copy.setExpression(expression == null ? null : expression.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getExpression() { return expression; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldDeclarator.java index acacb792500..e7bc7f185a6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldDeclarator.java @@ -31,6 +31,14 @@ public class CASTFieldDeclarator extends CASTDeclarator implements IASTFieldDecl setBitFieldSize(bitFieldSize); } + @Override + public CASTFieldDeclarator copy() { + CASTFieldDeclarator copy = new CASTFieldDeclarator(); + copyBaseDeclarator(copy); + copy.setBitFieldSize(bitFieldSize == null ? null : bitFieldSize.copy()); + return copy; + } + public IASTExpression getBitFieldSize() { return bitFieldSize; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldDesignator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldDesignator.java index 2f51227469d..c541fdbf8e9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldDesignator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldDesignator.java @@ -21,8 +21,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; /** * @author jcamelon */ -public class CASTFieldDesignator extends ASTNode implements - ICASTFieldDesignator { +public class CASTFieldDesignator extends ASTNode implements ICASTFieldDesignator { private IASTName name; @@ -33,6 +32,12 @@ public class CASTFieldDesignator extends ASTNode implements public CASTFieldDesignator(IASTName name) { setName(name); } + + public CASTFieldDesignator copy() { + CASTFieldDesignator copy = new CASTFieldDesignator(name == null ? null : name.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTName getName() { return name; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldReference.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldReference.java index 718a136ef48..414d05fdcb6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldReference.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFieldReference.java @@ -46,6 +46,15 @@ public class CASTFieldReference extends ASTNode implements IASTFieldReference, I setFieldName(name); this.ptr = ptr; } + + public CASTFieldReference copy() { + CASTFieldReference copy = new CASTFieldReference(); + copy.setFieldOwner(owner == null ? null : owner.copy()); + copy.setFieldName(name == null ? null : name.copy()); + copy.ptr = ptr; + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getFieldOwner() { return owner; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTForStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTForStatement.java index bbd25c7d61e..30e23d5925e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTForStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTForStatement.java @@ -43,6 +43,20 @@ public class CASTForStatement extends ASTNode implements IASTForStatement, IASTA setBody(body); } + public CASTForStatement copy() { + CASTForStatement copy = new CASTForStatement(); + copyForStatement(copy); + return copy; + } + + protected void copyForStatement(CASTForStatement copy) { + copy.setInitializerStatement(init == null ? null : init.copy()); + copy.setConditionExpression(condition == null ? null : condition.copy()); + copy.setIterationExpression(iterationExpression == null ? null : iterationExpression.copy()); + copy.setBody(body == null ? null : body.copy()); + copy.setOffsetAndLength(this); + } + public IASTExpression getConditionExpression() { return condition; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionCallExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionCallExpression.java index 8bec97d282f..972de1bce84 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionCallExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionCallExpression.java @@ -37,6 +37,14 @@ public class CASTFunctionCallExpression extends ASTNode implements setParameterExpression(parameter); } + public CASTFunctionCallExpression copy() { + CASTFunctionCallExpression copy = new CASTFunctionCallExpression(); + copy.setFunctionNameExpression(functionName == null ? null : functionName.copy()); + copy.setParameterExpression(parameter == null ? null : parameter.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public void setFunctionNameExpression(IASTExpression expression) { assertNotFrozen(); this.functionName = expression; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionDeclarator.java index b49708a0bb6..130dc32e735 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionDeclarator.java @@ -34,6 +34,18 @@ public class CASTFunctionDeclarator extends CASTDeclarator implements IASTStanda super(name); } + @Override + public CASTFunctionDeclarator copy() { + CASTFunctionDeclarator copy = new CASTFunctionDeclarator(); + copyBaseDeclarator(copy); + copy.varArgs = varArgs; + + for(IASTParameterDeclaration param : getParameters()) + copy.addParameterDeclaration(param == null ? null : param.copy()); + + return copy; + } + public IASTParameterDeclaration[] getParameters() { if( parameters == null ) return IASTParameterDeclaration.EMPTY_PARAMETERDECLARATION_ARRAY; parameters = (IASTParameterDeclaration[]) ArrayUtil.removeNullsAfter( IASTParameterDeclaration.class, parameters, parametersPos ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionDefinition.java index b3fea48f7aa..5bf76095342 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTFunctionDefinition.java @@ -45,6 +45,21 @@ public class CASTFunctionDefinition extends ASTNode implements setBody(bodyStatement); } + public CASTFunctionDefinition copy() { + CASTFunctionDefinition copy = new CASTFunctionDefinition(); + copy.setDeclSpecifier(declSpecifier == null ? null : declSpecifier.copy()); + + if(declarator != null) { + IASTDeclarator outer = CVisitor.findOutermostDeclarator(declarator); + outer = outer.copy(); + copy.setDeclarator((IASTFunctionDeclarator)CVisitor.findTypeRelevantDeclarator(outer)); + } + + copy.setBody(bodyStatement == null ? null : bodyStatement.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTDeclSpecifier getDeclSpecifier() { return declSpecifier; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTGotoStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTGotoStatement.java index 809dc41cf37..acf082c7de6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTGotoStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTGotoStatement.java @@ -30,6 +30,12 @@ public class CASTGotoStatement extends ASTNode implements IASTGotoStatement { setName(name); } + public CASTGotoStatement copy() { + CASTGotoStatement copy = new CASTGotoStatement(name == null ? null : name.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTName getName() { return this.name; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIdExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIdExpression.java index 4ff074aedf0..d7eb66cf7a5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIdExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIdExpression.java @@ -39,6 +39,12 @@ public class CASTIdExpression extends ASTNode implements IASTIdExpression, IASTC setName(name); } + public CASTIdExpression copy() { + CASTIdExpression copy = new CASTIdExpression(name == null ? null : name.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTName getName() { return name; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIfStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIfStatement.java index 124857cbd13..ba8ccb9aaa2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIfStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTIfStatement.java @@ -44,6 +44,15 @@ public class CASTIfStatement extends ASTNode implements IASTIfStatement, IASTAmb setElseClause(elseClause); } + public CASTIfStatement copy() { + CASTIfStatement copy = new CASTIfStatement(); + copy.setConditionExpression(condition == null ? null : condition.copy()); + copy.setThenClause(thenClause == null ? null : thenClause.copy()); + copy.setElseClause(elseClause == null ? null : elseClause.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getConditionExpression() { return condition; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTInitializerExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTInitializerExpression.java index 067810f74cf..34abea73a86 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTInitializerExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTInitializerExpression.java @@ -33,6 +33,13 @@ public class CASTInitializerExpression extends ASTNode implements public CASTInitializerExpression(IASTExpression expression) { setExpression(expression); } + + public CASTInitializerExpression copy() { + CASTInitializerExpression copy = new CASTInitializerExpression(); + copy.setExpression(expression == null ? null : expression.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getExpression() { return expression; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTInitializerList.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTInitializerList.java index cd64fb29bc5..806abe0e1b4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTInitializerList.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTInitializerList.java @@ -21,10 +21,16 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; /** * @author jcamelon */ -public class CASTInitializerList extends ASTNode implements - IASTInitializerList { - +public class CASTInitializerList extends ASTNode implements IASTInitializerList { + public CASTInitializerList copy() { + CASTInitializerList copy = new CASTInitializerList(); + for(IASTInitializer initializer : getInitializers()) + copy.addInitializer(initializer == null ? null : initializer.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTInitializer[] getInitializers() { if( initializers == null ) return IASTInitializer.EMPTY_INITIALIZER_ARRAY; initializers = (IASTInitializer[]) ArrayUtil.removeNullsAfter( IASTInitializer.class, initializers, initializersPos ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTKnRFunctionDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTKnRFunctionDeclarator.java index b4b8408176c..e3c0f08ade4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTKnRFunctionDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTKnRFunctionDeclarator.java @@ -38,6 +38,31 @@ public class CASTKnRFunctionDeclarator extends CASTDeclarator implements ICASTKn setParameterDeclarations(parameterDeclarations); } + @Override + public CASTKnRFunctionDeclarator copy() { + CASTKnRFunctionDeclarator copy = new CASTKnRFunctionDeclarator(); + copyBaseDeclarator(copy); + + copy.parameterNames = new IASTName[parameterNames.length]; + for(int i = 0; i < parameterNames.length; i++) { + if(parameterNames[i] != null) { + copy.parameterNames[i] = parameterNames[i].copy(); + copy.parameterNames[i].setParent(copy); + copy.parameterNames[i].setPropertyInParent(PARAMETER_NAME); + } + } + + copy.parameterDeclarations = new IASTDeclaration[parameterDeclarations.length]; + for(int i = 0; i < parameterDeclarations.length; i++) { + if(parameterDeclarations[i] != null) { + copy.parameterDeclarations[i] = parameterDeclarations[i].copy(); + copy.parameterDeclarations[i].setParent(copy); + copy.parameterDeclarations[i].setPropertyInParent(FUNCTION_PARAMETER); + } + } + + return copy; + } public void setParameterNames(IASTName[] names) { assertNotFrozen(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTLabelStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTLabelStatement.java index 0d40cf72cb8..423d7be59c8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTLabelStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTLabelStatement.java @@ -35,6 +35,14 @@ public class CASTLabelStatement extends ASTNode implements IASTLabelStatement, I setName(name); setNestedStatement(nestedStatement); } + + public CASTLabelStatement copy() { + CASTLabelStatement copy = new CASTLabelStatement(); + copy.setName(name == null ? null : name.copy()); + copy.setNestedStatement(nestedStatement == null ? null : nestedStatement.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTName getName() { return name; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTLiteralExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTLiteralExpression.java index cd80ef5ceed..812774e4b2e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTLiteralExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTLiteralExpression.java @@ -33,6 +33,12 @@ public class CASTLiteralExpression extends ASTNode implements IASTLiteralExpress this.kind = kind; this.value = value; } + + public CASTLiteralExpression copy() { + CASTLiteralExpression copy = new CASTLiteralExpression(kind, value == null ? null : value.clone()); + copy.setOffsetAndLength(this); + return copy; + } public int getKind() { return kind; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTModifiedArrayModifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTModifiedArrayModifier.java index 78012a1d884..a9aeac10b3c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTModifiedArrayModifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTModifiedArrayModifier.java @@ -31,6 +31,19 @@ public class CASTModifiedArrayModifier extends CASTArrayModifier implements ICAS super(exp); } + @Override + public CASTModifiedArrayModifier copy() { + IASTExpression exp = getConstantExpression(); + CASTModifiedArrayModifier copy = new CASTModifiedArrayModifier(exp == null ? null : exp.copy()); + copy.isVolatile = isVolatile; + copy.isRestrict = isRestrict; + copy.isStatic = isStatic; + copy.isConst = isConst; + copy.varSized = varSized; + copy.setOffsetAndLength(this); + return copy; + } + public boolean isConst() { return isConst; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTName.java index dd8eae3bfab..48f2ea99b40 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTName.java @@ -50,6 +50,12 @@ public class CASTName extends ASTNode implements IASTName, IASTCompletionContext name = EMPTY_CHAR_ARRAY; } + public CASTName copy() { + CASTName copy = new CASTName(name == null ? null : name.clone()); + copy.setOffsetAndLength(this); + return copy; + } + public IBinding resolveBinding() { if (binding == null) { CVisitor.createBinding(this); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTNullStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTNullStatement.java index ea15e951828..caa43d98709 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTNullStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTNullStatement.java @@ -38,4 +38,10 @@ public class CASTNullStatement extends ASTNode implements IASTNullStatement { } return true; } + + public CASTNullStatement copy() { + CASTNullStatement copy = new CASTNullStatement(); + copy.setOffsetAndLength(this); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTParameterDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTParameterDeclaration.java index 159137d5fc2..8dc941de1b6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTParameterDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTParameterDeclaration.java @@ -24,10 +24,10 @@ import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent; * @author jcamelon */ public class CASTParameterDeclaration extends ASTNode implements IASTParameterDeclaration, IASTAmbiguityParent { + private IASTDeclSpecifier declSpec; private IASTDeclarator declarator; - public CASTParameterDeclaration() { } @@ -36,6 +36,14 @@ public class CASTParameterDeclaration extends ASTNode implements IASTParameterDe setDeclarator(declarator); } + public CASTParameterDeclaration copy() { + CASTParameterDeclaration copy = new CASTParameterDeclaration(); + copy.setDeclSpecifier(declSpec == null ? null : declSpec.copy()); + copy.setDeclarator(declarator == null ? null : declarator.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTDeclSpecifier getDeclSpecifier() { return declSpec; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTPointer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTPointer.java index 0be5518ff64..3e7d8aef2c3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTPointer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTPointer.java @@ -23,6 +23,15 @@ public class CASTPointer extends ASTNode implements ICASTPointer { private boolean isVolatile; private boolean isConst; + public CASTPointer copy() { + CASTPointer copy = new CASTPointer(); + copy.isRestrict = isRestrict; + copy.isVolatile = isVolatile; + copy.isConst = isConst; + copy.setOffsetAndLength(this); + return copy; + } + public boolean isRestrict() { return isRestrict; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblem.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblem.java index aecaad8b69c..aca1870b326 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblem.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblem.java @@ -26,6 +26,14 @@ public class CASTProblem extends ASTProblem { } @Override + public CASTProblem copy() { + char[] arg = getArgument(); + CASTProblem problem = new CASTProblem(getID(), arg == null ? null : arg.clone(), isError()); + problem.setOffsetAndLength(this); + return problem; + } + + @Override public boolean accept( ASTVisitor action ){ if( action.shouldVisitProblems ){ switch( action.visit( this ) ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemDeclaration.java index 3fb8783bad9..5c2ff538de3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemDeclaration.java @@ -30,6 +30,12 @@ public class CASTProblemDeclaration extends CASTProblemOwner implements super(problem); } + public CASTProblemDeclaration copy() { + CASTProblemDeclaration copy = new CASTProblemDeclaration(); + copyBaseProblem(copy); + return copy; + } + @Override public boolean accept( ASTVisitor action ){ if( action.shouldVisitDeclarations ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemExpression.java index 1f4041aae68..ec1ba3a1b9b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemExpression.java @@ -30,6 +30,12 @@ public class CASTProblemExpression extends CASTProblemOwner implements IASTProbl super(problem); } + public CASTProblemExpression copy() { + CASTProblemExpression copy = new CASTProblemExpression(); + copyBaseProblem(copy); + return copy; + } + @Override public boolean accept( ASTVisitor action ){ if( action.shouldVisitExpressions ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemOwner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemOwner.java index b9c726df719..f3ca375da7c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemOwner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemOwner.java @@ -30,6 +30,11 @@ abstract class CASTProblemOwner extends ASTNode implements IASTProblemHolder { setProblem(problem); } + protected void copyBaseProblem(CASTProblemOwner copy) { + copy.setProblem(problem == null ? null : problem.copy()); + copy.setOffsetAndLength(this); + } + public IASTProblem getProblem() { return problem; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemStatement.java index 91740787c4c..39f8af954ca 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTProblemStatement.java @@ -28,6 +28,12 @@ public class CASTProblemStatement extends CASTProblemOwner implements IASTProble super(problem); } + public CASTProblemStatement copy() { + CASTProblemStatement copy = new CASTProblemStatement(); + copyBaseProblem(copy); + return copy; + } + @Override public boolean accept( ASTVisitor action ){ if( action.shouldVisitStatements ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTReturnStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTReturnStatement.java index 85c89a72aa9..e2cb41ae187 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTReturnStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTReturnStatement.java @@ -32,6 +32,12 @@ public class CASTReturnStatement extends ASTNode implements public CASTReturnStatement(IASTExpression retValue) { setReturnValue(retValue); } + + public CASTReturnStatement copy() { + CASTReturnStatement copy = new CASTReturnStatement(retValue == null ? null : retValue.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getReturnValue() { return retValue; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSimpleDeclSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSimpleDeclSpecifier.java index ddd2b84e5d6..e705e7d84c2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSimpleDeclSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSimpleDeclSpecifier.java @@ -28,6 +28,25 @@ public class CASTSimpleDeclSpecifier extends CASTBaseDeclSpecifier implements IC private boolean complex=false; private boolean imaginary=false; + public CASTSimpleDeclSpecifier copy() { + CASTSimpleDeclSpecifier copy = new CASTSimpleDeclSpecifier(); + copySimpleDeclSpec(copy); + return copy; + } + + protected void copySimpleDeclSpec(CASTSimpleDeclSpecifier copy) { + copyBaseDeclSpec(copy); + copy.simpleType = simpleType; + copy.isSigned = isSigned; + copy.isUnsigned = isUnsigned; + copy.isShort = isShort; + copy.isLong = isLong; + copy.longlong = longlong; + copy.complex = complex; + copy.imaginary = imaginary; + } + + public int getType() { return simpleType; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSimpleDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSimpleDeclaration.java index 623c01b0621..28ae1e24aae 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSimpleDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSimpleDeclaration.java @@ -32,6 +32,17 @@ public class CASTSimpleDeclaration extends ASTNode implements IASTSimpleDeclarat setDeclSpecifier(declSpecifier); } + public CASTSimpleDeclaration copy() { + CASTSimpleDeclaration copy = new CASTSimpleDeclaration(); + copy.setDeclSpecifier(declSpecifier == null ? null : declSpecifier.copy()); + + for(IASTDeclarator declarator : getDeclarators()) + copy.addDeclarator(declarator == null ? null : declarator.copy()); + + copy.setOffsetAndLength(this); + return copy; + } + public IASTDeclSpecifier getDeclSpecifier() { return declSpecifier; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSwitchStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSwitchStatement.java index 443845b7b74..b4a0223742f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSwitchStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTSwitchStatement.java @@ -35,6 +35,14 @@ public class CASTSwitchStatement extends ASTNode implements setControllerExpression(controller); setBody(body); } + + public CASTSwitchStatement copy() { + CASTSwitchStatement copy = new CASTSwitchStatement(); + copy.setControllerExpression(controller == null ? null : controller.copy()); + copy.setBody(body == null ? null : body.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getControllerExpression() { return controller; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTranslationUnit.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTranslationUnit.java index 48235905c65..1171a817588 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTranslationUnit.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTranslationUnit.java @@ -30,6 +30,13 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit; public class CASTTranslationUnit extends ASTTranslationUnit { private CScope compilationUnit = null; + + public CASTTranslationUnit copy() { + CASTTranslationUnit copy = new CASTTranslationUnit(); + copyAbstractTU(copy); + return copy; + } + /* * (non-Javadoc) * diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeId.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeId.java index 1a7386f7714..8cf11a0e6ca 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeId.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeId.java @@ -32,6 +32,14 @@ public class CASTTypeId extends ASTNode implements IASTTypeId { setDeclSpecifier(declSpecifier); setAbstractDeclarator(declarator); } + + public CASTTypeId copy() { + CASTTypeId copy = new CASTTypeId(); + copy.setDeclSpecifier(declSpecifier == null ? null : declSpecifier.copy()); + copy.setAbstractDeclarator(declarator == null ? null : declarator.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTDeclSpecifier getDeclSpecifier() { return declSpecifier; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeIdExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeIdExpression.java index 146fc750208..8c9663b65f8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeIdExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeIdExpression.java @@ -20,8 +20,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; /** * @author jcamelon */ -public class CASTTypeIdExpression extends ASTNode implements - IASTTypeIdExpression { +public class CASTTypeIdExpression extends ASTNode implements IASTTypeIdExpression { private int op; private IASTTypeId typeId; @@ -33,6 +32,12 @@ public class CASTTypeIdExpression extends ASTNode implements this.op = op; setTypeId(typeId); } + + public CASTTypeIdExpression copy() { + CASTTypeIdExpression copy = new CASTTypeIdExpression(op, typeId == null ? null : typeId.copy()); + copy.setOffsetAndLength(this); + return copy; + } public int getOperator() { return op; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeIdInitializerExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeIdInitializerExpression.java index 19cb07cd078..6ba875e2c85 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeIdInitializerExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypeIdInitializerExpression.java @@ -36,6 +36,14 @@ public class CASTTypeIdInitializerExpression extends ASTNode implements setInitializer(i); } + public CASTTypeIdInitializerExpression copy() { + CASTTypeIdInitializerExpression copy = new CASTTypeIdInitializerExpression(); + copy.setTypeId(typeId == null ? null : typeId.copy()); + copy.setInitializer(initializer == null ? null : initializer.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTTypeId getTypeId() { return typeId; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypedefNameSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypedefNameSpecifier.java index eb67d985907..014f699613b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypedefNameSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTTypedefNameSpecifier.java @@ -36,6 +36,12 @@ public class CASTTypedefNameSpecifier extends CASTBaseDeclSpecifier implements setName(name); } + public CASTTypedefNameSpecifier copy() { + CASTTypedefNameSpecifier copy = new CASTTypedefNameSpecifier(name == null ? null : name.copy()); + copyBaseDeclSpec(copy); + return copy; + } + public IASTName getName() { return name; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTUnaryExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTUnaryExpression.java index 2425cdd594f..326c3031d78 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTUnaryExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTUnaryExpression.java @@ -37,6 +37,12 @@ public class CASTUnaryExpression extends ASTNode implements setOperand(operand); } + public CASTUnaryExpression copy() { + CASTUnaryExpression copy = new CASTUnaryExpression(operator, operand == null ? null : operand.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public int getOperator() { return operator; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTWhileStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTWhileStatement.java index 5941a6d6726..e58325544d8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTWhileStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTWhileStatement.java @@ -36,6 +36,14 @@ public class CASTWhileStatement extends ASTNode implements IASTWhileStatement, I setBody(body); } + public CASTWhileStatement copy() { + CASTWhileStatement copy = new CASTWhileStatement(); + copy.setCondition(condition == null ? null : condition.copy()); + copy.setBody(body == null ? null : body.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getCondition() { return condition; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GCCASTSimpleDeclSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GCCASTSimpleDeclSpecifier.java index 8ee8a38ba91..f1977c8de6d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GCCASTSimpleDeclSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GCCASTSimpleDeclSpecifier.java @@ -32,6 +32,14 @@ public class GCCASTSimpleDeclSpecifier extends CASTSimpleDeclSpecifier implement setTypeofExpression(typeofExpression); } + @Override + public GCCASTSimpleDeclSpecifier copy() { + GCCASTSimpleDeclSpecifier copy = new GCCASTSimpleDeclSpecifier(); + copySimpleDeclSpec(copy); + copy.setTypeofExpression(typeOfExpression == null ? null : typeOfExpression.copy()); + return copy; + } + public void setTypeofExpression(IASTExpression typeofExpression) { this.typeOfExpression = typeofExpression; if (typeofExpression != null) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTASMDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTASMDeclaration.java index 4c47b26a780..183dcf28b69 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTASMDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTASMDeclaration.java @@ -27,6 +27,13 @@ public class CPPASTASMDeclaration extends ASTNode implements IASTASMDeclaration setAssembly(assembly); } + public CPPASTASMDeclaration copy() { + CPPASTASMDeclaration copy = new CPPASTASMDeclaration(); + copy.assembly = assembly.clone(); + copy.setOffsetAndLength(this); + return copy; + } + public String getAssembly() { if( assembly == null ) return ""; //$NON-NLS-1$ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousBinaryVsCastExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousBinaryVsCastExpression.java index 3e26049e014..a13c3c4cbd2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousBinaryVsCastExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousBinaryVsCastExpression.java @@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp; import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.IASTCastExpression; +import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousBinaryVsCastExpression; public class CPPASTAmbiguousBinaryVsCastExpression extends ASTAmbiguousBinaryVsCastExpression { @@ -19,4 +20,8 @@ public class CPPASTAmbiguousBinaryVsCastExpression extends ASTAmbiguousBinaryVsC public CPPASTAmbiguousBinaryVsCastExpression(IASTBinaryExpression bexp, IASTCastExpression castExpr) { super(bexp, castExpr); } + + public IASTExpression copy() { + throw new UnsupportedOperationException(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousDeclaration.java index 6118322dfbc..98c935d31bf 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousDeclaration.java @@ -21,6 +21,10 @@ public class CPPASTAmbiguousDeclaration extends CPPASTAmbiguity implements IASTA protected IASTNode[] getNodes() { return getDeclarations(); } + + public IASTDeclaration copy() { + throw new UnsupportedOperationException(); + } private IASTDeclaration [] decls = new IASTDeclaration[2]; private int declsPos=-1; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousDeclarator.java index 66bcc8977e3..f610c2b0bbb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousDeclarator.java @@ -39,6 +39,10 @@ public class CPPASTAmbiguousDeclarator extends CPPASTAmbiguity implements IASTAm } } + public IASTDeclarator copy() { + throw new UnsupportedOperationException(); + } + public void addDeclarator(IASTDeclarator d) { assertNotFrozen(); if (d != null) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousExpression.java index 9909d069e88..c6e8ec80af4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousExpression.java @@ -35,6 +35,11 @@ public class CPPASTAmbiguousExpression extends CPPASTAmbiguity implements addExpression(e); } + + public IASTExpression copy() { + throw new UnsupportedOperationException(); + } + public void addExpression(IASTExpression e) { assertNotFrozen(); if (e != null) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousStatement.java index a348a3bb5c7..dda23a5b7d8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousStatement.java @@ -26,6 +26,10 @@ public class CPPASTAmbiguousStatement extends CPPASTAmbiguity implements addStatement(s); } + public IASTStatement copy() { + throw new UnsupportedOperationException(); + } + public void addStatement(IASTStatement s) { assertNotFrozen(); if (s != null) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousTemplateArgument.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousTemplateArgument.java index bbc3cdcf460..3e099d06028 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousTemplateArgument.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousTemplateArgument.java @@ -49,6 +49,10 @@ public class CPPASTAmbiguousTemplateArgument extends CPPASTAmbiguity implements } } + public IASTNode copy() { + throw new UnsupportedOperationException(); + } + @Override protected IScope getAffectedScope() { // a template argument does not introduce names to a parent scope. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArrayDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArrayDeclarator.java index 60ed1825353..bc606c885ff 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArrayDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArrayDeclarator.java @@ -21,8 +21,7 @@ import org.eclipse.cdt.core.parser.util.ArrayUtil; /** * @author jcamelon */ -public class CPPASTArrayDeclarator extends CPPASTDeclarator implements - IASTArrayDeclarator { +public class CPPASTArrayDeclarator extends CPPASTDeclarator implements IASTArrayDeclarator { private IASTArrayModifier [] arrayMods = null; private int arrayModsPos=-1; @@ -40,6 +39,16 @@ public class CPPASTArrayDeclarator extends CPPASTDeclarator implements public CPPASTArrayDeclarator() { } + @Override + public CPPASTArrayDeclarator copy() { + CPPASTArrayDeclarator copy = new CPPASTArrayDeclarator(); + copyBaseDeclarator(copy); + for(IASTArrayModifier modifier : getArrayModifiers()) + copy.addArrayModifier(modifier == null ? null : modifier.copy()); + return copy; + } + + public IASTArrayModifier[] getArrayModifiers() { if( arrayMods == null ) return IASTArrayModifier.EMPTY_ARRAY; arrayMods = (IASTArrayModifier[]) ArrayUtil.removeNullsAfter( IASTArrayModifier.class, arrayMods, arrayModsPos ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArrayModifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArrayModifier.java index f414205a24e..07d81b2974e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArrayModifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArrayModifier.java @@ -36,6 +36,12 @@ public class CPPASTArrayModifier extends ASTNode implements IASTArrayModifier, I return exp; } + public CPPASTArrayModifier copy() { + CPPASTArrayModifier copy = new CPPASTArrayModifier(exp == null ? null : exp.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public void setConstantExpression(IASTExpression expression) { assertNotFrozen(); exp = expression; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArraySubscriptExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArraySubscriptExpression.java index 3dcfc77d85c..78b381e42ba 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArraySubscriptExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTArraySubscriptExpression.java @@ -35,6 +35,15 @@ public class CPPASTArraySubscriptExpression extends ASTNode implements IASTArray setArrayExpression(arrayExpression); setSubscriptExpression(subscriptExp); } + + public CPPASTArraySubscriptExpression copy() { + CPPASTArraySubscriptExpression copy = new CPPASTArraySubscriptExpression(); + copy.setArrayExpression(arrayExpression == null ? null : arrayExpression.copy()); + copy.setSubscriptExpression(subscriptExp == null ? null : subscriptExp.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getArrayExpression() { return arrayExpression; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBaseDeclSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBaseDeclSpecifier.java index 3366c983052..f1cbae94fe5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBaseDeclSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBaseDeclSpecifier.java @@ -26,7 +26,7 @@ public abstract class CPPASTBaseDeclSpecifier extends ASTNode implements ICPPAST private int sc; private boolean virtual; private boolean explicit; - + public boolean isFriend() { return friend; } @@ -90,6 +90,17 @@ public abstract class CPPASTBaseDeclSpecifier extends ASTNode implements ICPPAST this.explicit = value; } + protected void copyBaseDeclSpec(CPPASTBaseDeclSpecifier other) { + other.friend = friend; + other.inline = inline; + other.volatil = volatil; + other.isConst = isConst; + other.virtual = virtual; + other.explicit = explicit; + other.sc = sc; + other.setOffsetAndLength(this); + } + @Override public String toString() { return ASTSignatureUtil.getSignature(this); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBaseSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBaseSpecifier.java index 431385ce674..8f24e23f8ab 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBaseSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBaseSpecifier.java @@ -39,6 +39,10 @@ public class CPPASTBaseSpecifier extends ASTNode implements public CPPASTBaseSpecifier() { } + + public CPPASTBaseSpecifier(IASTName name) { + setName(name); + } public CPPASTBaseSpecifier(IASTName name, int visibility, boolean isVirtual) { this.isVirtual = isVirtual; @@ -46,6 +50,14 @@ public class CPPASTBaseSpecifier extends ASTNode implements setName(name); } + public CPPASTBaseSpecifier copy() { + CPPASTBaseSpecifier copy = new CPPASTBaseSpecifier(name == null ? null : name.copy()); + copy.isVirtual = isVirtual; + copy.visibility = visibility; + copy.setOffsetAndLength(this); + return copy; + } + public boolean isVirtual() { return isVirtual; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBinaryExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBinaryExpression.java index 618c995b140..64456400acf 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBinaryExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBinaryExpression.java @@ -38,6 +38,15 @@ public class CPPASTBinaryExpression extends ASTNode implements setOperand2(operand2); } + public CPPASTBinaryExpression copy() { + CPPASTBinaryExpression copy = new CPPASTBinaryExpression(); + copy.op = op; + copy.setOperand1(operand1 == null ? null : operand1.copy()); + copy.setOperand2(operand2 == null ? null : operand2.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public int getOperator() { return op; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBreakStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBreakStatement.java index ffa194a8d03..133c0bcf14d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBreakStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTBreakStatement.java @@ -17,8 +17,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; /** * @author jcamelon */ -public class CPPASTBreakStatement extends ASTNode implements - IASTBreakStatement { +public class CPPASTBreakStatement extends ASTNode implements IASTBreakStatement { @Override public boolean accept( ASTVisitor action ){ @@ -40,4 +39,9 @@ public class CPPASTBreakStatement extends ASTNode implements return true; } + public CPPASTBreakStatement copy() { + CPPASTBreakStatement copy = new CPPASTBreakStatement(); + copy.setOffsetAndLength(this); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCaseStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCaseStatement.java index e3112278b85..8f24687dc8f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCaseStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCaseStatement.java @@ -30,6 +30,12 @@ public class CPPASTCaseStatement extends ASTNode implements IASTCaseStatement, I public CPPASTCaseStatement(IASTExpression expression) { setExpression(expression); } + + public CPPASTCaseStatement copy() { + CPPASTCaseStatement copy = new CPPASTCaseStatement(expression == null ? null : expression.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getExpression() { return expression; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCastExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCastExpression.java index c9cb3384b0b..8a8b9c419f7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCastExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCastExpression.java @@ -30,6 +30,18 @@ public class CPPASTCastExpression extends CPPASTUnaryExpression implements ICPPA super(operator, operand); setTypeId(typeId); } + + @Override + public CPPASTCastExpression copy() { + CPPASTCastExpression copy = new CPPASTCastExpression(); + copy.setOperator(getOperator()); + copy.setTypeId(typeId == null ? null : typeId.copy()); + IASTExpression operand = getOperand(); + copy.setOperand(operand == null ? null : operand.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public void setTypeId(IASTTypeId typeId) { assertNotFrozen(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCatchHandler.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCatchHandler.java index cdb33bae0f1..4f608de62fe 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCatchHandler.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCatchHandler.java @@ -37,6 +37,15 @@ public class CPPASTCatchHandler extends ASTNode implements ICPPASTCatchHandler, setCatchBody(body); setDeclaration(declaration); } + + public CPPASTCatchHandler copy() { + CPPASTCatchHandler copy = new CPPASTCatchHandler(); + copy.setDeclaration(declaration == null ? null : declaration.copy()); + copy.setCatchBody(body == null ? null : body.copy()); + copy.setIsCatchAll(isCatchAll); + copy.setOffsetAndLength(this); + return copy; + } public void setIsCatchAll(boolean isEllipsis) { assertNotFrozen(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompositeTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompositeTypeSpecifier.java index 1277b08e32a..3361679f802 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompositeTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompositeTypeSpecifier.java @@ -40,6 +40,16 @@ public class CPPASTCompositeTypeSpecifier extends CPPASTBaseDeclSpecifier setName(n); } + public CPPASTCompositeTypeSpecifier copy() { + CPPASTCompositeTypeSpecifier copy = new CPPASTCompositeTypeSpecifier(k, n == null ? null : n.copy()); + copyBaseDeclSpec(copy); + for(IASTDeclaration member : getMembers()) + copy.addMemberDeclaration(member == null ? null : member.copy()); + for(ICPPASTBaseSpecifier baseSpecifier : getBaseSpecifiers()) + copy.addBaseSpecifier(baseSpecifier == null ? null : baseSpecifier.copy()); + return copy; + } + @Override public String getRawSignature() { return getName().toString() == null ? "" : getName().toString(); //$NON-NLS-1$ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatement.java index c700cbd185a..ea424aff157 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatement.java @@ -29,6 +29,14 @@ public class CPPASTCompoundStatement extends ASTNode implements private IASTStatement [] statements = new IASTStatement[2]; private ICPPScope scope = null; + + public CPPASTCompoundStatement copy() { + CPPASTCompoundStatement copy = new CPPASTCompoundStatement(); + for(IASTStatement statement : getStatements()) + copy.addStatement(statement == null ? null : statement.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTStatement[] getStatements() { if( statements == null ) return IASTStatement.EMPTY_STATEMENT_ARRAY; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatementExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatementExpression.java index 15ced24a36e..0b1ca787860 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatementExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatementExpression.java @@ -32,6 +32,13 @@ public class CPPASTCompoundStatementExpression extends ASTNode implements IGNUAS setCompoundStatement(statement); } + public CPPASTCompoundStatementExpression copy() { + CPPASTCompoundStatementExpression copy = new CPPASTCompoundStatementExpression(); + copy.setCompoundStatement(statement == null ? null : statement.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTCompoundStatement getCompoundStatement() { return statement; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConditionalExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConditionalExpression.java index d150e58eb56..ad12bab9f06 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConditionalExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConditionalExpression.java @@ -27,7 +27,7 @@ public class CPPASTConditionalExpression extends ASTNode implements private IASTExpression condition; private IASTExpression negative; - private IASTExpression postive; + private IASTExpression positive; public CPPASTConditionalExpression() { @@ -39,6 +39,16 @@ public class CPPASTConditionalExpression extends ASTNode implements setNegativeResultExpression(negative); } + + public CPPASTConditionalExpression copy() { + CPPASTConditionalExpression copy = new CPPASTConditionalExpression(); + copy.setLogicalConditionExpression(condition == null ? null : condition.copy()); + copy.setPositiveResultExpression(positive == null ? null : positive.copy()); + copy.setNegativeResultExpression(negative == null ? null : negative.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getLogicalConditionExpression() { return condition; } @@ -53,12 +63,12 @@ public class CPPASTConditionalExpression extends ASTNode implements } public IASTExpression getPositiveResultExpression() { - return postive; + return positive; } public void setPositiveResultExpression(IASTExpression expression) { assertNotFrozen(); - this.postive = expression; + this.positive = expression; if (expression != null) { expression.setParent(this); expression.setPropertyInParent(POSITIVE_RESULT); @@ -89,7 +99,7 @@ public class CPPASTConditionalExpression extends ASTNode implements } if( condition != null ) if( !condition.accept( action ) ) return false; - if( postive != null ) if( !postive.accept( action ) ) return false; + if( positive != null ) if( !positive.accept( action ) ) return false; if( negative != null ) if( !negative.accept( action ) ) return false; if( action.shouldVisitExpressions ){ @@ -109,11 +119,11 @@ public class CPPASTConditionalExpression extends ASTNode implements other.setParent( child.getParent() ); condition = (IASTExpression) other; } - if( child == postive ) + if( child == positive ) { other.setPropertyInParent( child.getPropertyInParent() ); other.setParent( child.getParent() ); - postive = (IASTExpression) other; + positive = (IASTExpression) other; } if( child == negative ) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConstructorChainInitializer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConstructorChainInitializer.java index ac2214c28f5..1cae1d16a37 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConstructorChainInitializer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConstructorChainInitializer.java @@ -37,6 +37,14 @@ public class CPPASTConstructorChainInitializer extends ASTNode implements setInitializerValue(initializerValue); } + public CPPASTConstructorChainInitializer copy() { + CPPASTConstructorChainInitializer copy = new CPPASTConstructorChainInitializer(); + copy.setMemberInitializerId(name == null ? null : name.copy()); + copy.setInitializerValue(value == null ? null : value.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTName getMemberInitializerId() { return name; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConstructorInitializer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConstructorInitializer.java index 4e6f55973e5..ec68d7846ff 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConstructorInitializer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConstructorInitializer.java @@ -33,6 +33,12 @@ public class CPPASTConstructorInitializer extends ASTNode implements setExpression(exp); } + public CPPASTConstructorInitializer copy() { + CPPASTConstructorInitializer copy = new CPPASTConstructorInitializer(exp == null ? null : exp.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getExpression() { return exp; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTContinueStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTContinueStatement.java index 69af6774a15..82f859067b6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTContinueStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTContinueStatement.java @@ -17,8 +17,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; /** * @author jcamelon */ -public class CPPASTContinueStatement extends ASTNode implements - IASTContinueStatement { +public class CPPASTContinueStatement extends ASTNode implements IASTContinueStatement { @Override public boolean accept( ASTVisitor action ){ @@ -38,4 +37,10 @@ public class CPPASTContinueStatement extends ASTNode implements } return true; } + + public CPPASTContinueStatement copy() { + CPPASTContinueStatement copy = new CPPASTContinueStatement(); + copy.setOffsetAndLength(this); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConversionName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConversionName.java index 5829309d946..69b2dd3ad9b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConversionName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTConversionName.java @@ -35,6 +35,16 @@ public class CPPASTConversionName extends CPPASTName implements ICPPASTConversio super(name); setTypeId(typeId); } + + @Override + public CPPASTConversionName copy() { + char[] name = toCharArray(); + CPPASTConversionName copy = new CPPASTConversionName(name == null ? null : name.clone()); + copy.setTypeId(typeId == null ? null : typeId.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTTypeId getTypeId() { return typeId; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeclarationStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeclarationStatement.java index 3a7e60bee16..58f23e33981 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeclarationStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeclarationStatement.java @@ -33,6 +33,13 @@ public class CPPASTDeclarationStatement extends ASTNode implements setDeclaration(declaration); } + public CPPASTDeclarationStatement copy() { + CPPASTDeclarationStatement copy = new CPPASTDeclarationStatement(); + copy.setDeclaration(declaration == null ? null : declaration.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTDeclaration getDeclaration() { return declaration; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeclarator.java index 6dd63b1d5ab..fd5ab25e68c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeclarator.java @@ -34,7 +34,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; public class CPPASTDeclarator extends ASTNode implements IASTDeclarator { private IASTInitializer initializer; private IASTName name; - private IASTDeclarator nestedDeclarator; + private IASTDeclarator nested; private IASTPointerOperator[] pointerOps = null; private int pointerOpsPos= -1; @@ -50,6 +50,22 @@ public class CPPASTDeclarator extends ASTNode implements IASTDeclarator { setInitializer(initializer); } + + public CPPASTDeclarator copy() { + CPPASTDeclarator copy = new CPPASTDeclarator(); + copyBaseDeclarator(copy); + return copy; + } + + protected void copyBaseDeclarator(CPPASTDeclarator copy) { + copy.setName(name == null ? null : name.copy()); + copy.setInitializer(initializer == null ? null : initializer.copy()); + copy.setNestedDeclarator(nested == null ? null : nested.copy()); + for(IASTPointerOperator pointer : getPointerOperators()) + copy.addPointerOperator(pointer == null ? null : pointer.copy()); + copy.setOffsetAndLength(this); + } + public IASTPointerOperator[] getPointerOperators() { if (pointerOps == null) return IASTPointerOperator.EMPTY_ARRAY; pointerOps = (IASTPointerOperator[]) ArrayUtil.removeNullsAfter(IASTPointerOperator.class, pointerOps, pointerOpsPos); @@ -57,7 +73,7 @@ public class CPPASTDeclarator extends ASTNode implements IASTDeclarator { } public IASTDeclarator getNestedDeclarator() { - return nestedDeclarator; + return nested; } public IASTName getName() { @@ -88,7 +104,7 @@ public class CPPASTDeclarator extends ASTNode implements IASTDeclarator { public void setNestedDeclarator(IASTDeclarator nested) { assertNotFrozen(); - this.nestedDeclarator = nested; + this.nested = nested; if (nested != null) { nested.setParent(this); nested.setPropertyInParent(NESTED_DECLARATOR); @@ -119,15 +135,15 @@ public class CPPASTDeclarator extends ASTNode implements IASTDeclarator { if (!ptrOps[i].accept(action)) return false; } - if (nestedDeclarator == null && name != null) { + if (nested == null && name != null) { IASTDeclarator outermost= CPPVisitor.findOutermostDeclarator(this); if (outermost.getPropertyInParent() != IASTTypeId.ABSTRACT_DECLARATOR) { if (!name.accept(action)) return false; } } - if (nestedDeclarator != null) { - if (!nestedDeclarator.accept(action)) return false; + if (nested != null) { + if (!nested.accept(action)) return false; } if (!postAccept(action)) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDefaultStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDefaultStatement.java index 5e22642cdc7..194c76d196f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDefaultStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDefaultStatement.java @@ -37,5 +37,11 @@ public class CPPASTDefaultStatement extends ASTNode implements IASTDefaultStatem } return true; } + + public CPPASTDefaultStatement copy() { + CPPASTDefaultStatement copy = new CPPASTDefaultStatement(); + copy.setOffsetAndLength(this); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeleteExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeleteExpression.java index 13b2ef5da89..5c4ac063ec0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeleteExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDeleteExpression.java @@ -20,15 +20,13 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; /** * @author jcamelon */ -public class CPPASTDeleteExpression extends ASTNode implements - ICPPASTDeleteExpression { +public class CPPASTDeleteExpression extends ASTNode implements ICPPASTDeleteExpression { private IASTExpression operand; private boolean isGlobal; private boolean isVectored; - public CPPASTDeleteExpression() { } @@ -36,7 +34,18 @@ public class CPPASTDeleteExpression extends ASTNode implements setOperand(operand); } - + public CPPASTDeleteExpression(CPPASTDeleteExpression from) { + setOperand(from.operand); + } + + public CPPASTDeleteExpression copy() { + CPPASTDeleteExpression copy = new CPPASTDeleteExpression(operand == null ? null : operand.copy()); + copy.isGlobal = isGlobal; + copy.isVectored = isVectored; + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getOperand() { return operand; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDoStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDoStatement.java index b3e92296a99..0d70da842f3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDoStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTDoStatement.java @@ -35,6 +35,14 @@ public class CPPASTDoStatement extends ASTNode implements IASTDoStatement, IASTA setCondition(condition); } + public CPPASTDoStatement copy() { + CPPASTDoStatement copy = new CPPASTDoStatement(); + copy.setBody(body == null ? null : body.copy()); + copy.setCondition(condition == null ? null : condition.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTStatement getBody() { return body; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTElaboratedTypeSpecifier.java index 73c3b6c642b..4bcb661b6ee 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTElaboratedTypeSpecifier.java @@ -39,6 +39,12 @@ public class CPPASTElaboratedTypeSpecifier extends CPPASTBaseDeclSpecifier setName(name); } + public CPPASTElaboratedTypeSpecifier copy() { + CPPASTElaboratedTypeSpecifier copy = new CPPASTElaboratedTypeSpecifier(kind, name == null ? null : name.copy()); + copyBaseDeclSpec(copy); + return copy; + } + public int getKind() { return kind; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTEnumerationSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTEnumerationSpecifier.java index 052052dd9d8..cb03b30b740 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTEnumerationSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTEnumerationSpecifier.java @@ -33,6 +33,15 @@ public class CPPASTEnumerationSpecifier extends CPPASTBaseDeclSpecifier setName(name); } + public CPPASTEnumerationSpecifier copy() { + CPPASTEnumerationSpecifier copy = new CPPASTEnumerationSpecifier(name == null ? null : name.copy()); + for(IASTEnumerator enumerator : getEnumerators()) + copy.addEnumerator(enumerator == null ? null : enumerator.copy()); + copyBaseDeclSpec(copy); + return copy; + } + + public boolean startValueComputation() { if (valuesComputed) return false; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTEnumerator.java index 73848a44185..61f6a2245ea 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTEnumerator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTEnumerator.java @@ -19,6 +19,7 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTEnumerator; * C++-specific enumerator. */ public class CPPASTEnumerator extends ASTEnumerator { + public CPPASTEnumerator() { super(); } @@ -26,4 +27,10 @@ public class CPPASTEnumerator extends ASTEnumerator { public CPPASTEnumerator(IASTName name, IASTExpression value) { super(name, value); } + + public CPPASTEnumerator copy() { + CPPASTEnumerator copy = new CPPASTEnumerator(); + copyAbstractEnumerator(copy); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExplicitTemplateInstantiation.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExplicitTemplateInstantiation.java index d6325985abb..c9620a7dbe0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExplicitTemplateInstantiation.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExplicitTemplateInstantiation.java @@ -33,6 +33,13 @@ public class CPPASTExplicitTemplateInstantiation extends ASTNode implements setDeclaration(declaration); } + public CPPASTExplicitTemplateInstantiation copy() { + CPPASTExplicitTemplateInstantiation copy = new CPPASTExplicitTemplateInstantiation(); + copy.setDeclaration(declaration == null ? null : declaration.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTDeclaration getDeclaration() { return declaration; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExpressionList.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExpressionList.java index c296ca18390..c3de2a70b20 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExpressionList.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExpressionList.java @@ -26,6 +26,14 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; public class CPPASTExpressionList extends ASTNode implements IASTExpressionList, IASTAmbiguityParent { + public CPPASTExpressionList copy() { + CPPASTExpressionList copy = new CPPASTExpressionList(); + for(IASTExpression expr : getExpressions()) + copy.addExpression(expr == null ? null : expr.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression [] getExpressions() { if( expressions == null ) return IASTExpression.EMPTY_EXPRESSION_ARRAY; return (IASTExpression[]) ArrayUtil.trim( IASTExpression.class, expressions ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExpressionStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExpressionStatement.java index 8b5c13bb8a2..315b6159cef 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExpressionStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTExpressionStatement.java @@ -33,6 +33,13 @@ public class CPPASTExpressionStatement extends ASTNode implements setExpression(expression); } + public CPPASTExpressionStatement copy() { + CPPASTExpressionStatement copy = new CPPASTExpressionStatement(); + copy.setExpression(expression == null ? null : expression.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getExpression() { return expression; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldDeclarator.java index ff8a1548e38..34ea4a14ca3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldDeclarator.java @@ -29,12 +29,24 @@ public class CPPASTFieldDeclarator extends CPPASTDeclarator implements public CPPASTFieldDeclarator() { } + + public CPPASTFieldDeclarator(IASTName name) { + super(name); + } public CPPASTFieldDeclarator(IASTName name, IASTExpression bitField) { super(name); setBitFieldSize(bitField); } + @Override + public CPPASTFieldDeclarator copy() { + CPPASTFieldDeclarator copy = new CPPASTFieldDeclarator(); + copyBaseDeclarator(copy); + copy.setBitFieldSize(bitField == null ? null : bitField.copy()); + return copy; + } + public IASTExpression getBitFieldSize() { return bitField; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java index e2fa1a1d8f7..4a17590ab1f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java @@ -47,6 +47,16 @@ public class CPPASTFieldReference extends ASTNode implements setFieldName(name); setFieldOwner(owner); } + + public CPPASTFieldReference copy() { + CPPASTFieldReference copy = new CPPASTFieldReference(); + copy.setFieldName(name == null ? null : name.copy()); + copy.setFieldOwner(owner == null ? null : owner.copy()); + copy.isTemplate = isTemplate; + copy.isDeref = isDeref; + copy.setOffsetAndLength(this); + return copy; + } public boolean isTemplate() { return isTemplate; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTForStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTForStatement.java index c684808b98b..1cb23218e91 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTForStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTForStatement.java @@ -53,6 +53,17 @@ public class CPPASTForStatement extends ASTNode implements ICPPASTForStatement, setBody(body); } + public CPPASTForStatement copy() { + CPPASTForStatement copy = new CPPASTForStatement(); + copy.setInitializerStatement(init == null ? null : init.copy()); + copy.setConditionDeclaration(condDeclaration == null ? null : condDeclaration.copy()); + copy.setConditionExpression(condition == null ? null : condition.copy()); + copy.setIterationExpression(iterationExpression == null ? null : iterationExpression.copy()); + copy.setBody(body == null ? null : body.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getConditionExpression() { return condition; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java index d8278eae8af..05798a520e7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionCallExpression.java @@ -37,6 +37,14 @@ public class CPPASTFunctionCallExpression extends ASTNode implements setParameterExpression(parameter); } + public CPPASTFunctionCallExpression copy() { + CPPASTFunctionCallExpression copy = new CPPASTFunctionCallExpression(); + copy.setFunctionNameExpression(functionName == null ? null : functionName.copy()); + copy.setParameterExpression(parameter == null ? null : parameter.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public void setFunctionNameExpression(IASTExpression expression) { assertNotFrozen(); this.functionName = expression; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDeclarator.java index c558e443894..22ac6d7e455 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDeclarator.java @@ -45,6 +45,23 @@ public class CPPASTFunctionDeclarator extends CPPASTDeclarator implements ICPPAS public CPPASTFunctionDeclarator(IASTName name) { super(name); } + + @Override + public CPPASTFunctionDeclarator copy() { + CPPASTFunctionDeclarator copy = new CPPASTFunctionDeclarator(); + copyBaseDeclarator(copy); + copy.varArgs = varArgs; + copy.pureVirtual = pureVirtual; + copy.isVolatile = isVolatile; + copy.isConst = isConst; + + for(IASTParameterDeclaration param : getParameters()) + copy.addParameterDeclaration(param == null ? null : param.copy()); + for(IASTTypeId typeId : getExceptionSpecification()) + copy.addExceptionSpecificationTypeId(typeId == null ? null : typeId.copy()); + + return copy; + } public IASTParameterDeclaration[] getParameters() { if (parameters == null) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDefinition.java index cd6c948fa3d..638a0c1ebc1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionDefinition.java @@ -24,6 +24,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent; +import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; /** @@ -49,6 +50,25 @@ public class CPPASTFunctionDefinition extends ASTNode implements setDeclarator(declarator); setBody(bodyStatement); } + + public CPPASTFunctionDefinition copy() { + CPPASTFunctionDefinition copy = new CPPASTFunctionDefinition(); + copy.setDeclSpecifier(declSpecifier == null ? null : declSpecifier.copy()); + + if(declarator != null) { + IASTDeclarator outer = CVisitor.findOutermostDeclarator(declarator); + outer = outer.copy(); + copy.setDeclarator((IASTFunctionDeclarator)CVisitor.findTypeRelevantDeclarator(outer)); + } + + copy.setBody(bodyStatement == null ? null : bodyStatement.copy()); + + for(ICPPASTConstructorChainInitializer initializer : getMemberInitializers()) + copy.addMemberInitializer(initializer == null ? null : initializer.copy()); + + copy.setOffsetAndLength(this); + return copy; + } public IASTDeclSpecifier getDeclSpecifier() { return declSpecifier; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionWithTryBlock.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionWithTryBlock.java index bf9dfe649e8..46fef1fd2a8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionWithTryBlock.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFunctionWithTryBlock.java @@ -15,6 +15,7 @@ import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCatchHandler; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionWithTryBlock; import org.eclipse.cdt.core.parser.util.ArrayUtil; @@ -31,6 +32,26 @@ public class CPPASTFunctionWithTryBlock extends CPPASTFunctionDefinition impleme IASTFunctionDeclarator declarator, IASTStatement bodyStatement) { super(declSpecifier, declarator, bodyStatement); } + + @Override + public CPPASTFunctionWithTryBlock copy() { + IASTDeclSpecifier declSpecifier = getDeclSpecifier(); + IASTFunctionDeclarator declarator = getDeclarator(); + IASTStatement bodyStatement = getBody(); + + CPPASTFunctionWithTryBlock copy = new CPPASTFunctionWithTryBlock(); + copy.setDeclSpecifier(declSpecifier == null ? null : declSpecifier.copy()); + copy.setDeclarator(declarator == null ? null : declarator.copy()); + copy.setBody(bodyStatement == null ? null : bodyStatement.copy()); + + for(ICPPASTConstructorChainInitializer initializer : getMemberInitializers()) + copy.addMemberInitializer(initializer == null ? null : initializer.copy()); + for(ICPPASTCatchHandler handler : getCatchHandlers()) + copy.addCatchHandler(handler == null ? null : handler.copy()); + + copy.setOffsetAndLength(this); + return copy; + } public void addCatchHandler(ICPPASTCatchHandler statement) { assertNotFrozen(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTGotoStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTGotoStatement.java index 765a17e3505..87d05d570b4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTGotoStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTGotoStatement.java @@ -30,6 +30,12 @@ public class CPPASTGotoStatement extends ASTNode implements IASTGotoStatement { setName(name); } + public CPPASTGotoStatement copy() { + CPPASTGotoStatement copy = new CPPASTGotoStatement(name == null ? null : name.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTName getName() { return this.name; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTIdExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTIdExpression.java index 866ccb29b81..bfa241f8639 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTIdExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTIdExpression.java @@ -36,6 +36,12 @@ public class CPPASTIdExpression extends ASTNode implements IASTIdExpression, IAS setName(name); } + public CPPASTIdExpression copy() { + CPPASTIdExpression copy = new CPPASTIdExpression(name == null ? null : name.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTName getName() { return name; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTIfStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTIfStatement.java index 2e6b58df1c3..49c773f9d8a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTIfStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTIfStatement.java @@ -46,7 +46,18 @@ public class CPPASTIfStatement extends ASTNode implements ICPPASTIfStatement, IA setThenClause(thenClause); setElseClause(elseClause); } + + public CPPASTIfStatement copy() { + CPPASTIfStatement copy = new CPPASTIfStatement(); + copy.setConditionDeclaration(condDecl == null ? null : condDecl.copy()); + copy.setConditionExpression(condition == null ? null : condition.copy()); + copy.setThenClause(thenClause == null ? null : thenClause.copy()); + copy.setElseClause(elseClause == null ? null : elseClause.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getConditionExpression() { return condition; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTInitializerExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTInitializerExpression.java index 3fa12395013..3e65fab8672 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTInitializerExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTInitializerExpression.java @@ -33,6 +33,12 @@ public class CPPASTInitializerExpression extends ASTNode implements setExpression(exp); } + public CPPASTInitializerExpression copy() { + CPPASTInitializerExpression copy = new CPPASTInitializerExpression(exp == null ? null : exp.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getExpression() { return exp; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTInitializerList.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTInitializerList.java index 2fb99cc0d38..24cead27102 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTInitializerList.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTInitializerList.java @@ -21,6 +21,14 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; */ public class CPPASTInitializerList extends ASTNode implements IASTInitializerList { + public CPPASTInitializerList copy() { + CPPASTInitializerList copy = new CPPASTInitializerList(); + for(IASTInitializer initializer : getInitializers()) + copy.addInitializer(initializer == null ? null : initializer.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTInitializer [] getInitializers() { if( initializers == null ) return IASTInitializer.EMPTY_INITIALIZER_ARRAY; initializers = (IASTInitializer[]) ArrayUtil.removeNullsAfter( IASTInitializer.class, initializers, initializersPos ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLabelStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLabelStatement.java index 99e5acdeaac..f5b9a22b03b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLabelStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLabelStatement.java @@ -35,6 +35,14 @@ public class CPPASTLabelStatement extends ASTNode implements setName(name); setNestedStatement(nestedStatement); } + + public CPPASTLabelStatement copy() { + CPPASTLabelStatement copy = new CPPASTLabelStatement(); + copy.setName(name == null ? null : name.copy()); + copy.setNestedStatement(nestedStatement == null ? null : nestedStatement.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTName getName() { return name; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLinkageSpecification.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLinkageSpecification.java index ff98152a9b9..6a9c8b46416 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLinkageSpecification.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLinkageSpecification.java @@ -32,6 +32,15 @@ public class CPPASTLinkageSpecification extends ASTNode implements public CPPASTLinkageSpecification(String literal) { this.literal = literal; } + + public CPPASTLinkageSpecification copy() { + CPPASTLinkageSpecification copy = new CPPASTLinkageSpecification(literal); + for(IASTDeclaration declaration : getDeclarations()) + copy.addDeclaration(declaration == null ? null : declaration.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public String getLiteral() { return literal; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java index 078bbdca81f..7842c2ca4f9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java @@ -34,6 +34,12 @@ public class CPPASTLiteralExpression extends ASTNode implements ICPPASTLiteralEx this.value = value; } + public CPPASTLiteralExpression copy() { + CPPASTLiteralExpression copy = new CPPASTLiteralExpression(kind, value == null ? null : value.clone()); + copy.setOffsetAndLength(this); + return copy; + } + public int getKind() { return kind; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTName.java index ca95be277e4..a4c7a6e3f09 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTName.java @@ -47,6 +47,12 @@ public class CPPASTName extends CPPASTNameBase implements IASTCompletionContext name = CharArrayUtils.EMPTY; } + public CPPASTName copy() { + CPPASTName copy = new CPPASTName(name == null ? null : name.clone()); + copy.setOffsetAndLength(this); + return copy; + } + @Override protected IBinding createIntermediateBinding() { return CPPVisitor.createBinding(this); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamedTypeSpecifier.java index 3ceb2435872..2ac923aafae 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamedTypeSpecifier.java @@ -43,6 +43,13 @@ public class CPPASTNamedTypeSpecifier extends CPPASTBaseDeclSpecifier implements setName(name); } + public CPPASTNamedTypeSpecifier copy() { + CPPASTNamedTypeSpecifier copy = new CPPASTNamedTypeSpecifier(name == null ? null : name.copy()); + copyBaseDeclSpec(copy); + copy.typename = typename; + return copy; + } + public boolean isTypename() { return typename; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamespaceAlias.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamespaceAlias.java index c1688acbb64..a83375723e7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamespaceAlias.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamespaceAlias.java @@ -33,6 +33,14 @@ public class CPPASTNamespaceAlias extends ASTNode implements ICPPASTNamespaceAli setMappingName(qualifiedName); } + public CPPASTNamespaceAlias copy() { + CPPASTNamespaceAlias copy = new CPPASTNamespaceAlias(); + copy.setAlias(alias == null ? null : alias.copy()); + copy.setMappingName(qualifiedName == null ? null : qualifiedName.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTName getAlias() { return alias; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamespaceDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamespaceDefinition.java index 4b5ac43ca93..925f9bdb3a7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamespaceDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNamespaceDefinition.java @@ -39,6 +39,14 @@ public class CPPASTNamespaceDefinition extends ASTNode implements setName(name); } + public CPPASTNamespaceDefinition copy() { + CPPASTNamespaceDefinition copy = new CPPASTNamespaceDefinition(name == null ? null : name.copy()); + for(IASTDeclaration declaration : getDeclarations()) + copy.addDeclaration(declaration == null ? null : declaration.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTName getName() { return name; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java index 632637ead2a..e7d5476443c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java @@ -51,6 +51,25 @@ public class CPPASTNewExpression extends ASTNode implements setNewInitializer(initializer); setTypeId(typeId); } + + public CPPASTNewExpression copy() { + CPPASTNewExpression copy = new CPPASTNewExpression(); + copy.setIsGlobal(global); + copy.setIsNewTypeId(isNewTypeId); + copy.setNewPlacement(placement == null ? null : placement.copy()); + copy.setNewInitializer(initializer == null ? null : initializer.copy()); + copy.setTypeId(typeId == null ? null : typeId.copy()); + + if(arrayExpressions != null) { + copy.arrayExpressions = new IASTExpression[arrayExpressions.length]; + for(int i = 0; i < arrayExpressions.length; i++) { + copy.arrayExpressions[i] = arrayExpressions[i] == null ? null : arrayExpressions[i].copy(); + } + } + + copy.setOffsetAndLength(this); + return copy; + } public boolean isGlobal() { return global; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNullStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNullStatement.java index e2dc0408474..fb8ca54c012 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNullStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNullStatement.java @@ -37,4 +37,10 @@ public class CPPASTNullStatement extends ASTNode implements IASTNullStatement { } return true; } + + public CPPASTNullStatement copy() { + CPPASTNullStatement copy = new CPPASTNullStatement(); + copy.setOffsetAndLength(this); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTOperatorName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTOperatorName.java index a69e91f3380..aa0b5757a57 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTOperatorName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTOperatorName.java @@ -27,4 +27,12 @@ public class CPPASTOperatorName extends CPPASTName implements ICPPASTOperatorNam super(name); } + + @Override + public CPPASTOperatorName copy() { + char[] name = toCharArray(); + CPPASTOperatorName copy = new CPPASTOperatorName(name == null ? null : name.clone()); + copy.setOffsetAndLength(this); + return copy; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTParameterDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTParameterDeclaration.java index fe1aed9d140..f65910f0a29 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTParameterDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTParameterDeclaration.java @@ -35,6 +35,14 @@ public class CPPASTParameterDeclaration extends ASTNode implements ICPPASTParame setDeclSpecifier(declSpec); setDeclarator(declarator); } + + public CPPASTParameterDeclaration copy() { + CPPASTParameterDeclaration copy = new CPPASTParameterDeclaration(); + copy.setDeclSpecifier(declSpec == null ? null : declSpec.copy()); + copy.setDeclarator(declarator == null ? null : declarator.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTDeclSpecifier getDeclSpecifier() { return declSpec; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointer.java index ab35f5d1b97..d39e8e99d49 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointer.java @@ -23,6 +23,15 @@ public class CPPASTPointer extends ASTNode implements IASTPointer { private boolean isVolatile; + + public CPPASTPointer copy() { + CPPASTPointer copy = new CPPASTPointer(); + copy.isConst = isConst; + copy.isVolatile = isVolatile; + copy.setOffsetAndLength(this); + return copy; + } + public boolean isConst() { return isConst; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointerToMember.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointerToMember.java index 0aacdf0ff6a..d090808d87d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointerToMember.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTPointerToMember.java @@ -17,8 +17,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTPointerToMember; /** * @author jcamelon */ -public class CPPASTPointerToMember extends CPPASTPointer implements - ICPPASTPointerToMember { +public class CPPASTPointerToMember extends CPPASTPointer implements ICPPASTPointerToMember { private IASTName n; @@ -29,6 +28,15 @@ public class CPPASTPointerToMember extends CPPASTPointer implements setName(n); } + @Override + public CPPASTPointerToMember copy() { + CPPASTPointerToMember copy = new CPPASTPointerToMember(n == null ? null : n.copy()); + copy.setConst(isConst()); + copy.setVolatile(isVolatile()); + copy.setOffsetAndLength(this); + return copy; + } + public void setName(IASTName name) { assertNotFrozen(); n = name; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblem.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblem.java index 983e6ef9f81..eb0b39db11e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblem.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblem.java @@ -25,6 +25,14 @@ public class CPPASTProblem extends ASTProblem { } @Override + public CPPASTProblem copy() { + char[] arg = getArgument(); + CPPASTProblem problem = new CPPASTProblem(getID(), arg == null ? null : arg.clone(), isError()); + problem.setOffsetAndLength(this); + return problem; + } + + @Override public boolean accept( ASTVisitor action ){ if( action.shouldVisitProblems ){ switch( action.visit( this ) ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemDeclaration.java index 25946af1b8c..9390052613f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemDeclaration.java @@ -18,8 +18,7 @@ import org.eclipse.cdt.core.dom.ast.IASTProblemDeclaration; /** * @author jcamelon */ -public class CPPASTProblemDeclaration extends CPPASTProblemOwner implements - IASTProblemDeclaration { +public class CPPASTProblemDeclaration extends CPPASTProblemOwner implements IASTProblemDeclaration { public CPPASTProblemDeclaration() { super(); @@ -29,6 +28,13 @@ public class CPPASTProblemDeclaration extends CPPASTProblemOwner implements super(problem); } + public CPPASTProblemDeclaration copy() { + CPPASTProblemDeclaration copy = new CPPASTProblemDeclaration(); + copyBaseProblem(copy); + return copy; + } + + @Override public boolean accept( ASTVisitor action ){ if( action.shouldVisitDeclarations ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemExpression.java index 30fbb9a2851..774c09744a8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemExpression.java @@ -19,8 +19,7 @@ import org.eclipse.cdt.core.dom.ast.IType; /** * @author jcamelon */ -public class CPPASTProblemExpression extends CPPASTProblemOwner implements - IASTProblemExpression { +public class CPPASTProblemExpression extends CPPASTProblemOwner implements IASTProblemExpression { public CPPASTProblemExpression() { super(); @@ -30,6 +29,12 @@ public class CPPASTProblemExpression extends CPPASTProblemOwner implements super(problem); } + public CPPASTProblemExpression copy() { + CPPASTProblemExpression copy = new CPPASTProblemExpression(); + copyBaseProblem(copy); + return copy; + } + @Override public boolean accept( ASTVisitor action ){ if( action.shouldVisitExpressions ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemOwner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemOwner.java index 86db9592d80..76254c51c96 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemOwner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemOwner.java @@ -30,6 +30,11 @@ abstract class CPPASTProblemOwner extends ASTNode implements IASTProblemHolder { public CPPASTProblemOwner(IASTProblem problem) { setProblem(problem); } + + protected void copyBaseProblem(CPPASTProblemOwner copy) { + copy.setProblem(problem == null ? null : problem.copy()); + copy.setOffsetAndLength(this); + } public IASTProblem getProblem() { return problem; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemStatement.java index d407be59474..718de9bbe44 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemStatement.java @@ -18,8 +18,7 @@ import org.eclipse.cdt.core.dom.ast.IASTProblemStatement; /** * @author jcamelon */ -public class CPPASTProblemStatement extends CPPASTProblemOwner implements - IASTProblemStatement { +public class CPPASTProblemStatement extends CPPASTProblemOwner implements IASTProblemStatement { public CPPASTProblemStatement() { super(); @@ -28,6 +27,12 @@ public class CPPASTProblemStatement extends CPPASTProblemOwner implements public CPPASTProblemStatement(IASTProblem problem) { super(problem); } + + public CPPASTProblemStatement copy() { + CPPASTProblemStatement copy = new CPPASTProblemStatement(); + copyBaseProblem(copy); + return copy; + } @Override public boolean accept( ASTVisitor action ){ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemTypeId.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemTypeId.java index 4673091cd0a..b30312328f8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemTypeId.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTProblemTypeId.java @@ -12,6 +12,8 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp; import org.eclipse.cdt.core.dom.ast.ASTVisitor; +import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; +import org.eclipse.cdt.core.dom.ast.IASTDeclarator; import org.eclipse.cdt.core.dom.ast.IASTProblem; import org.eclipse.cdt.core.dom.ast.IASTProblemTypeId; @@ -30,6 +32,21 @@ public class CPPASTProblemTypeId extends CPPASTTypeId implements IASTProblemType setProblem(problem); } + @Override + public CPPASTProblemTypeId copy() { + IASTProblem problem = getProblem(); + IASTDeclSpecifier declSpec = getDeclSpecifier(); + IASTDeclarator absDecl = getAbstractDeclarator(); + + CPPASTProblemTypeId copy = new CPPASTProblemTypeId(); + copy.setProblem(problem == null ? null : problem.copy()); + copy.setDeclSpecifier(declSpec == null ? null : declSpec.copy()); + copy.setAbstractDeclarator(absDecl == null ? null : absDecl.copy()); + + copy.setOffsetAndLength(this); + return copy; + } + public IASTProblem getProblem() { return problem; } 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 de1961402bd..3b3e9c28b00 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 @@ -56,6 +56,16 @@ public class CPPASTQualifiedName extends CPPASTNameBase public CPPASTQualifiedName() { } + public CPPASTQualifiedName copy() { + CPPASTQualifiedName copy = new CPPASTQualifiedName(); + for(IASTName name : getNames()) + copy.addName(name == null ? null : name.copy()); + copy.setFullyQualified(isFullyQualified); + copy.setSignature(signature); + copy.setOffsetAndLength(this); + return copy; + } + @Override public final IBinding resolvePreBinding() { // The full qualified name resolves to the same thing as the last name diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTReferenceOperator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTReferenceOperator.java index 49e140785b4..ba04e479e72 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTReferenceOperator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTReferenceOperator.java @@ -17,9 +17,14 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode; /** * @author jcamelon */ -public class CPPASTReferenceOperator extends ASTNode implements - ICPPASTReferenceOperator { +public class CPPASTReferenceOperator extends ASTNode implements ICPPASTReferenceOperator { + public CPPASTReferenceOperator copy() { + CPPASTReferenceOperator copy = new CPPASTReferenceOperator(); + copy.setOffsetAndLength(this); + return copy; + } + @Override public boolean accept( ASTVisitor action ){ return true; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTReturnStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTReturnStatement.java index 94938a24e5b..9a1721fe63b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTReturnStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTReturnStatement.java @@ -31,6 +31,12 @@ public class CPPASTReturnStatement extends ASTNode implements IASTReturnStatemen setReturnValue(retValue); } + public CPPASTReturnStatement copy() { + CPPASTReturnStatement copy = new CPPASTReturnStatement(retValue == null ? null : retValue.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getReturnValue() { return retValue; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleDeclSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleDeclSpecifier.java index 755f7a071c9..0b24a24807f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleDeclSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleDeclSpecifier.java @@ -16,8 +16,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier; /** * @author jcamelon */ -public class CPPASTSimpleDeclSpecifier extends CPPASTBaseDeclSpecifier - implements ICPPASTSimpleDeclSpecifier { +public class CPPASTSimpleDeclSpecifier extends CPPASTBaseDeclSpecifier implements ICPPASTSimpleDeclSpecifier { private int type; private boolean isSigned; @@ -25,7 +24,22 @@ public class CPPASTSimpleDeclSpecifier extends CPPASTBaseDeclSpecifier private boolean isShort; private boolean isLong; - /** + public CPPASTSimpleDeclSpecifier copy() { + CPPASTSimpleDeclSpecifier copy = new CPPASTSimpleDeclSpecifier(); + copySimpleDeclSpec(copy); + return copy; + } + + protected void copySimpleDeclSpec(CPPASTSimpleDeclSpecifier other) { + copyBaseDeclSpec(other); + other.type = type; + other.isSigned = isSigned; + other.isUnsigned = isUnsigned; + other.isShort = isShort; + other.isLong = isLong; + } + + /** * @see org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier */ public int getType() { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleDeclaration.java index 8af4c58d36b..3fe49635ece 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleDeclaration.java @@ -32,6 +32,15 @@ public class CPPASTSimpleDeclaration extends ASTNode implements IASTSimpleDeclar setDeclSpecifier(declSpecifier); } + public CPPASTSimpleDeclaration copy() { + CPPASTSimpleDeclaration copy = new CPPASTSimpleDeclaration(); + copy.setDeclSpecifier(declSpecifier == null ? null : declSpecifier.copy()); + for(IASTDeclarator declarator : getDeclarators()) + copy.addDeclarator(declarator == null ? null : declarator.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTDeclSpecifier getDeclSpecifier() { return declSpecifier; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleTypeConstructorExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleTypeConstructorExpression.java index 1f3fa582f27..97dba4a23c7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleTypeConstructorExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleTypeConstructorExpression.java @@ -36,6 +36,14 @@ public class CPPASTSimpleTypeConstructorExpression extends ASTNode implements setInitialValue(init); } + public CPPASTSimpleTypeConstructorExpression copy() { + CPPASTSimpleTypeConstructorExpression copy = new CPPASTSimpleTypeConstructorExpression(); + copy.st = st; + copy.setInitialValue(init == null ? null : init.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public int getSimpleType() { return st; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleTypeTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleTypeTemplateParameter.java index 893d906819f..9eb0d2b2427 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleTypeTemplateParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSimpleTypeTemplateParameter.java @@ -36,6 +36,15 @@ public class CPPASTSimpleTypeTemplateParameter extends ASTNode implements setName(name); setDefaultType(typeId); } + + public CPPASTSimpleTypeTemplateParameter copy() { + CPPASTSimpleTypeTemplateParameter copy = new CPPASTSimpleTypeTemplateParameter(); + copy.type = type; + copy.setName(name == null ? null : name.copy()); + copy.setDefaultType(typeId == null ? null : typeId.copy()); + copy.setOffsetAndLength(this); + return copy; + } public int getParameterType() { return type; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSwitchStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSwitchStatement.java index 7e7472d3eea..4911b83d354 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSwitchStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTSwitchStatement.java @@ -44,6 +44,15 @@ public class CPPASTSwitchStatement extends ASTNode implements setControllerExpression(controller); setBody(body); } + + public CPPASTSwitchStatement copy() { + CPPASTSwitchStatement copy = new CPPASTSwitchStatement(); + copy.setControllerDeclaration(decl == null ? null : decl.copy()); + copy.setControllerExpression(controller == null ? null : controller.copy()); + copy.setBody(body == null ? null : body.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTExpression getControllerExpression() { return controller; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateDeclaration.java index 330b1282e5c..ee76c385100 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateDeclaration.java @@ -41,6 +41,16 @@ public class CPPASTTemplateDeclaration extends ASTNode implements setDeclaration(declaration); } + public CPPASTTemplateDeclaration copy() { + CPPASTTemplateDeclaration copy = new CPPASTTemplateDeclaration(); + copy.setDeclaration(declaration == null ? null : declaration.copy()); + copy.exported = exported; + for(ICPPASTTemplateParameter param : getTemplateParameters()) + copy.addTemplateParamter(param == null ? null : param.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public boolean isExported() { return exported; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java index 6a91920732f..50cf5e79f33 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java @@ -37,6 +37,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; public class CPPASTTemplateId extends CPPASTNameBase implements ICPPASTTemplateId, IASTAmbiguityParent { private IASTName templateName; private IASTNode[] templateArguments = null; + public CPPASTTemplateId() { } @@ -44,6 +45,14 @@ public class CPPASTTemplateId extends CPPASTNameBase implements ICPPASTTemplateI setTemplateName(templateName); } + public CPPASTTemplateId copy() { + CPPASTTemplateId copy = new CPPASTTemplateId(templateName == null ? null : templateName.copy()); + for(IASTNode arg : getTemplateArguments()) + copy.internalAddTemplateArgument(arg == null ? null : arg.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTName getTemplateName() { return templateName; } @@ -57,32 +66,26 @@ public class CPPASTTemplateId extends CPPASTNameBase implements ICPPASTTemplateI name.setPropertyInParent(TEMPLATE_NAME); } } + + private void internalAddTemplateArgument(IASTNode node) { + assertNotFrozen(); + templateArguments = (IASTNode[]) ArrayUtil.append(IASTNode.class, templateArguments, node); + if (node != null) { + node.setParent(this); + node.setPropertyInParent(TEMPLATE_ID_ARGUMENT); + } + } public void addTemplateArgument(IASTTypeId typeId) { - assertNotFrozen(); - templateArguments = (IASTNode[]) ArrayUtil.append(IASTNode.class, templateArguments, typeId); - if (typeId != null) { - typeId.setParent(this); - typeId.setPropertyInParent(TEMPLATE_ID_ARGUMENT); - } + internalAddTemplateArgument(typeId); } public void addTemplateArgument(IASTExpression expression) { - assertNotFrozen(); - templateArguments = (IASTNode[]) ArrayUtil.append(IASTNode.class, templateArguments, expression); - if (expression != null) { - expression.setParent(this); - expression.setPropertyInParent(TEMPLATE_ID_ARGUMENT); - } + internalAddTemplateArgument(expression); } public void addTemplateArgument(ICPPASTAmbiguousTemplateArgument ata) { - assertNotFrozen(); - templateArguments = (IASTNode[]) ArrayUtil.append(IASTNode.class, templateArguments, ata); - if (ata != null) { - ata.setParent(this); - ata.setPropertyInParent(TEMPLATE_ID_ARGUMENT); - } + internalAddTemplateArgument(ata); } public IASTNode[] getTemplateArguments() { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateSpecialization.java index 2d85fabcd4c..19b0fb0cd97 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateSpecialization.java @@ -39,6 +39,13 @@ public class CPPASTTemplateSpecialization extends ASTNode implements public CPPASTTemplateSpecialization(IASTDeclaration declaration) { setDeclaration(declaration); } + + public CPPASTTemplateSpecialization copy() { + CPPASTTemplateSpecialization copy = new CPPASTTemplateSpecialization(); + copy.setDeclaration(declaration == null ? null : declaration.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTDeclaration getDeclaration() { return declaration; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplatedTypeTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplatedTypeTemplateParameter.java index 1e444197234..f33661b4266 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplatedTypeTemplateParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplatedTypeTemplateParameter.java @@ -36,6 +36,16 @@ public class CPPASTTemplatedTypeTemplateParameter extends ASTNode implements setName(name); setDefaultValue(defaultValue); } + + public CPPASTTemplatedTypeTemplateParameter copy() { + CPPASTTemplatedTypeTemplateParameter copy = new CPPASTTemplatedTypeTemplateParameter(); + copy.setName(name == null ? null : name.copy()); + copy.setDefaultValue(defaultValue == null ? null : defaultValue.copy()); + for(ICPPASTTemplateParameter param : getTemplateParameters()) + copy.addTemplateParamter(param == null ? null : param.copy()); + copy.setOffsetAndLength(this); + return copy; + } public ICPPASTTemplateParameter[] getTemplateParameters() { if( parameters == null ) return ICPPASTTemplateParameter.EMPTY_TEMPLATEPARAMETER_ARRAY; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTranslationUnit.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTranslationUnit.java index ac0495bf455..1fbccd5d038 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTranslationUnit.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTranslationUnit.java @@ -49,6 +49,12 @@ public class CPPASTTranslationUnit extends ASTTranslationUnit implements ICPPAST public CPPASTTranslationUnit() { } + public CPPASTTranslationUnit copy() { + CPPASTTranslationUnit copy = new CPPASTTranslationUnit(); + copyAbstractTU(copy); + return copy; + } + public CPPNamespaceScope getScope() { if (fScope == null) { fScope = new CPPNamespaceScope(this); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTryBlockStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTryBlockStatement.java index 77481232d57..6db67c78c60 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTryBlockStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTryBlockStatement.java @@ -33,6 +33,14 @@ public class CPPASTTryBlockStatement extends ASTNode implements ICPPASTTryBlockS setTryBody(tryBody); } + public CPPASTTryBlockStatement copy() { + CPPASTTryBlockStatement copy = new CPPASTTryBlockStatement(tryBody == null ? null : tryBody.copy()); + for(ICPPASTCatchHandler handler : getCatchHandlers()) + copy.addCatchHandler(handler == null ? null : handler.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public void addCatchHandler(ICPPASTCatchHandler statement) { assertNotFrozen(); if (statement != null) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypeId.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypeId.java index 60ec38f2c78..db9a1ffccba 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypeId.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypeId.java @@ -32,6 +32,14 @@ public class CPPASTTypeId extends ASTNode implements IASTTypeId { setDeclSpecifier(declSpec); setAbstractDeclarator(absDecl); } + + public CPPASTTypeId copy() { + CPPASTTypeId copy = new CPPASTTypeId(); + copy.setDeclSpecifier(declSpec == null ? null : declSpec.copy()); + copy.setAbstractDeclarator(absDecl == null ? null : absDecl.copy()); + copy.setOffsetAndLength(this); + return copy; + } public IASTDeclSpecifier getDeclSpecifier() { return declSpec; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypeIdExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypeIdExpression.java index fcd39d9c3d6..b85669ffd8f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypeIdExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypeIdExpression.java @@ -33,6 +33,12 @@ public class CPPASTTypeIdExpression extends ASTNode implements ICPPASTTypeIdExpr setTypeId(typeId); } + public CPPASTTypeIdExpression copy() { + CPPASTTypeIdExpression copy = new CPPASTTypeIdExpression(op, typeId == null ? null : typeId.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public int getOperator() { return op; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypenameExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypenameExpression.java index f6980ff9068..8f3f0a15ccc 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypenameExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTypenameExpression.java @@ -44,6 +44,16 @@ public class CPPASTTypenameExpression extends ASTNode implements this.isTemplate = isTemplate; } + public CPPASTTypenameExpression copy() { + CPPASTTypenameExpression copy = new CPPASTTypenameExpression(); + copy.setName(name == null ? null : name.copy()); + copy.setInitialValue(init == null ? null : init.copy()); + copy.isTemplate = isTemplate; + copy.setOffsetAndLength(this); + return copy; + } + + public void setIsTemplate(boolean templateTokenConsumed) { assertNotFrozen(); isTemplate = templateTokenConsumed; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUnaryExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUnaryExpression.java index 821007301b4..c669f45094b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUnaryExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUnaryExpression.java @@ -25,7 +25,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; public class CPPASTUnaryExpression extends ASTNode implements ICPPASTUnaryExpression, IASTAmbiguityParent { - private int operator; + private int op; private IASTExpression operand; @@ -33,17 +33,23 @@ public class CPPASTUnaryExpression extends ASTNode implements } public CPPASTUnaryExpression(int operator, IASTExpression operand) { - this.operator = operator; + this.op = operator; setOperand(operand); } + public CPPASTUnaryExpression copy() { + CPPASTUnaryExpression copy = new CPPASTUnaryExpression(op, operand == null ? null : operand.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public int getOperator() { - return operator; + return op; } public void setOperator(int value) { assertNotFrozen(); - this.operator = value; + this.op = value; } public IASTExpression getOperand() { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUsingDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUsingDeclaration.java index e3bea4858ed..c58a44ff0d4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUsingDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUsingDeclaration.java @@ -40,6 +40,13 @@ public class CPPASTUsingDeclaration extends ASTNode implements setName(name); } + public CPPASTUsingDeclaration copy() { + CPPASTUsingDeclaration copy = new CPPASTUsingDeclaration(name == null ? null : name.copy()); + copy.typeName = typeName; + copy.setOffsetAndLength(this); + return copy; + } + public void setIsTypename(boolean value) { assertNotFrozen(); this.typeName = value; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUsingDirective.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUsingDirective.java index 36ade6c16fb..f229b642242 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUsingDirective.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTUsingDirective.java @@ -38,6 +38,12 @@ public class CPPASTUsingDirective extends ASTNode implements setQualifiedName(name); } + public CPPASTUsingDirective copy() { + CPPASTUsingDirective copy = new CPPASTUsingDirective(name == null ? null : name.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTName getQualifiedName() { return name; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTVisibilityLabel.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTVisibilityLabel.java index 33410dba270..8e09b0ec70d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTVisibilityLabel.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTVisibilityLabel.java @@ -29,6 +29,12 @@ public class CPPASTVisibilityLabel extends ASTNode implements ICPPASTVisibilityL this.visibility = visibility; } + public CPPASTVisibilityLabel copy() { + CPPASTVisibilityLabel copy = new CPPASTVisibilityLabel(visibility); + copy.setOffsetAndLength(this); + return copy; + } + public int getVisibility() { return visibility; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTWhileStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTWhileStatement.java index 76cfc8d1b7a..9ea1db40ef1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTWhileStatement.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTWhileStatement.java @@ -44,6 +44,15 @@ public class CPPASTWhileStatement extends ASTNode implements setBody(body); } + public CPPASTWhileStatement copy() { + CPPASTWhileStatement copy = new CPPASTWhileStatement(); + copy.setConditionDeclaration(condition2 == null ? null : condition2.copy()); + copy.setCondition(condition == null ? null : condition.copy()); + copy.setBody(body == null ? null : body.copy()); + copy.setOffsetAndLength(this); + return copy; + } + public IASTExpression getCondition() { return condition; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTExplicitTemplateInstantiation.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTExplicitTemplateInstantiation.java index f7568172d68..fc1143acba6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTExplicitTemplateInstantiation.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTExplicitTemplateInstantiation.java @@ -30,6 +30,17 @@ public class GPPASTExplicitTemplateInstantiation extends private int mod; + + @Override + public GPPASTExplicitTemplateInstantiation copy() { + GPPASTExplicitTemplateInstantiation copy = new GPPASTExplicitTemplateInstantiation(); + IASTDeclaration declaration = getDeclaration(); + copy.setDeclaration(declaration == null ? null : declaration.copy()); + copy.mod = mod; + copy.setOffsetAndLength(this); + return copy; + } + public int getModifier() { return mod; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointer.java index 5e2a132e548..40c6d51f298 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointer.java @@ -19,6 +19,16 @@ public class GPPASTPointer extends CPPASTPointer implements IGPPASTPointer { private boolean isRestrict; + @Override + public GPPASTPointer copy() { + GPPASTPointer copy = new GPPASTPointer(); + copy.setConst(isConst()); + copy.setVolatile(isVolatile()); + copy.setRestrict(isRestrict); + copy.setOffsetAndLength(this); + return copy; + } + public boolean isRestrict() { return isRestrict; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointerToMember.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointerToMember.java index f251ec625d6..dc3699d5904 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointerToMember.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTPointerToMember.java @@ -29,6 +29,17 @@ public class GPPASTPointerToMember extends CPPASTPointerToMember implements private boolean isRestrict; + @Override + public GPPASTPointerToMember copy() { + IASTName name = getName(); + GPPASTPointerToMember copy = new GPPASTPointerToMember(name == null ? null : name.copy()); + copy.setConst(isConst()); + copy.setVolatile(isVolatile()); + copy.setRestrict(isRestrict); + copy.setOffsetAndLength(this); + return copy; + } + /* (non-Javadoc) * @see org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointer#isRestrict() */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTSimpleDeclSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTSimpleDeclSpecifier.java index 1ced2ca22c3..49973a871d1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTSimpleDeclSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GPPASTSimpleDeclSpecifier.java @@ -33,10 +33,22 @@ public class GPPASTSimpleDeclSpecifier extends CPPASTSimpleDeclSpecifier public GPPASTSimpleDeclSpecifier() { } - + public GPPASTSimpleDeclSpecifier(IASTExpression typeofExpression) { setTypeofExpression(typeofExpression); } + + @Override + public GPPASTSimpleDeclSpecifier copy() { + GPPASTSimpleDeclSpecifier copy = new GPPASTSimpleDeclSpecifier(); + copySimpleDeclSpec(copy); + copy.setTypeofExpression(typeOfExpression == null ? null : typeOfExpression.copy()); + copy.longLong = longLong; + copy.restrict = restrict; + copy.complex = complex; + copy.imaginary = imaginary; + return copy; + } public boolean isLongLong() { return longLong; |