diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTypeIdExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTypeIdExpression.java
index 773d97af27c..2401e0fc5bf 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTypeIdExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTypeIdExpression.java
@@ -1,12 +1,13 @@
/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * IBM Rational Software - Initial API and implementation
+ * IBM Rational Software - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast;
@@ -21,9 +22,28 @@ public interface IASTTypeIdExpression extends IASTExpression {
public static final int op_sizeof = 0;
/**
- * op_last
defined for sub-interfaces to extend.
+ * For c++, only.
*/
- public static final int op_last = op_sizeof;
+ public static final int op_typeid = 1;
+
+ /**
+ * For gnu-parsers, only.
+ * op_alignOf
is used for __alignOf( typeId ) type expressions.
+ */
+ public static final int op_alignof = 2;
+
+ /**
+ * For gnu-parsers, only.
+ * op_typeof
is used for typeof( typeId ) type expressions.
+ */
+ public static final int op_typeof = 3;
+
+ /**
+ * @deprecated constants should be declared here, to avoid using the same constant in different
+ * interfaces.
+ */
+ @Deprecated
+ public static final int op_last = op_alignof;
/**
* Get the operator for the expression.
@@ -52,8 +72,6 @@ public interface IASTTypeIdExpression extends IASTExpression {
/**
* Get the type Id.
- *
- * @return
*/
public IASTTypeId getTypeId();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTTypeIdExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTTypeIdExpression.java
index 1e8e12560b9..d4f2a5a7472 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTTypeIdExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTTypeIdExpression.java
@@ -1,12 +1,13 @@
/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * IBM - Initial API and implementation
+ * IBM - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
@@ -17,7 +18,11 @@ import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
*/
public interface ICPPASTTypeIdExpression extends IASTTypeIdExpression {
- public static final int op_typeid = IASTTypeIdExpression.op_last + 1;
+ public static final int op_typeid = IASTTypeIdExpression.op_typeid;
- public static final int op_last = op_typeid;
+ /**
+ * @deprecated all constants should be declared in {@link IASTTypeIdExpression}
+ */
+ @Deprecated
+ public static final int op_last = IASTTypeIdExpression.op_last;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/IGNUASTTypeIdExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/IGNUASTTypeIdExpression.java
index 7661cd0a0e1..6fd689c21c6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/IGNUASTTypeIdExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/IGNUASTTypeIdExpression.java
@@ -1,12 +1,13 @@
/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * IBM Rational Software - Initial API and implementation
+ * IBM Rational Software - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast.gnu;
@@ -23,17 +24,17 @@ public interface IGNUASTTypeIdExpression extends IASTTypeIdExpression {
/**
* op_typeof
is used for typeof( typeId ) type expressions.
*/
- public static final int op_typeof = IASTTypeIdExpression.op_last + 1;
+ public static final int op_typeof = IASTTypeIdExpression.op_typeof;
/**
* op_alignOf
is used for __alignOf( typeId ) type
* expressions.
*/
- public static final int op_alignof = IASTTypeIdExpression.op_last + 2;
+ public static final int op_alignof = IASTTypeIdExpression.op_alignof;
/**
- * op_last
is available for sub-interfaces.
+ * @deprecated all constants must be declared in {@link IASTTypeIdExpression}
*/
- public static final int op_last = op_alignof;
-
+ @Deprecated
+ public static final int op_last = IASTTypeIdExpression.op_last;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java
index a94d431d54f..b0638bbb40d 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java
@@ -568,24 +568,16 @@ public class ExpressionWriter extends NodeWriter{
}
private String getTypeIdExp(IASTTypeIdExpression typeIdExp) {
- int type = typeIdExp.getOperator();
- if (type <= IASTTypeIdExpression.op_last) {
- if(type == IASTTypeIdExpression.op_sizeof) {
- return SIZEOF_OP + "("; //$NON-NLS-1$
- }
- }else {
- if (typeIdExp instanceof ICPPASTTypeIdExpression) {
- if(type == ICPPASTTypeIdExpression.op_typeid) {
- return TYPEID_OP;
- }
- }else if (typeIdExp instanceof IGNUASTTypeIdExpression) {
- switch (type) {//TODO HSR Emanuel: check if there can't be GNUTypeIdExpressions here, see #162470
- case IGNUASTTypeIdExpression.op_alignof:
- return ALIGNOF_OP + "("; //$NON-NLS-1$
- case IGNUASTTypeIdExpression.op_typeof:
- return TYPEOF_OP;
- }
- }
+ final int type = typeIdExp.getOperator();
+ switch(type) {
+ case IASTTypeIdExpression.op_sizeof:
+ return SIZEOF_OP + "("; //$NON-NLS-1$
+ case ICPPASTTypeIdExpression.op_typeid:
+ return TYPEID_OP;
+ case IGNUASTTypeIdExpression.op_alignof:
+ return ALIGNOF_OP + "("; //$NON-NLS-1$
+ case IGNUASTTypeIdExpression.op_typeof:
+ return TYPEOF_OP;
}
throw new IllegalArgumentException("Unknown TypeId Type"); //$NON-NLS-1$
}