1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-08 18:26:01 +02:00

Patch for Hoda Amer:

This patch adds a new C Model Element Type: Enumerator.
It also displays the element's type name instead of the element's name if the element's name is null.
This commit is contained in:
Doug Schaefer 2003-03-31 20:47:34 +00:00
parent 34877663fe
commit c13b3fc240
6 changed files with 123 additions and 8 deletions

View file

@ -139,6 +139,11 @@ public interface ICElement extends IAdaptable {
*/ */
static final int C_TYPEDEF = 78; static final int C_TYPEDEF = 78;
/**
* Enumerator.
*/
static final int C_ENUMERATOR = 79;
/** /**
* Modifier indicating a class constructor * Modifier indicating a class constructor
*/ */

View file

@ -0,0 +1,21 @@
package org.eclipse.cdt.core.model;
/**********************************************************************
* Copyright (c) 2002,2003 Rational Software Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* Rational Software - Initial API and implementation
***********************************************************************/
public interface IEnumerator extends ISourceManipulation{
/**
* Returns the enumerator constant expression if any.
* Returns null otherwise.
* @return String
*/
String getConstantExpression();
}

View file

@ -1,5 +1,7 @@
package org.eclipse.cdt.core.model; package org.eclipse.cdt.core.model;
import java.util.ArrayList;
/* /*
* (c) Copyright QNX Software Systems Ltd. 2002. * (c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved. * All Rights Reserved.
@ -17,8 +19,12 @@ public interface IParent {
* @exception CModelException if this element does not exist or if an * @exception CModelException if this element does not exist or if an
* exception occurs while accessing its corresponding resource * exception occurs while accessing its corresponding resource
*/ */
ICElement[] getChildren(); //throws CModelException; ICElement[] getChildren();
/**
* returns the children of a certain type
*/
public ArrayList getChildrenOfType(int type);
/** /**
* Returns whether this element has one or more immediate children. * Returns whether this element has one or more immediate children.
* This is a convenience method, and may be more efficient than * This is a convenience method, and may be more efficient than
@ -27,5 +33,7 @@ public interface IParent {
* @exception CModelException if this element does not exist or if an * @exception CModelException if this element does not exist or if an
* exception occurs while accessing its corresponding resource * exception occurs while accessing its corresponding resource
*/ */
boolean hasChildren(); //throws CModelException; boolean hasChildren();
} }

View file

@ -16,6 +16,11 @@ import org.eclipse.cdt.core.model.IEnumeration;
public class Enumeration extends SourceManipulation implements IEnumeration{ public class Enumeration extends SourceManipulation implements IEnumeration{
String typeName = "";
boolean isStatic = false;
boolean isConst = false;
boolean isVolatile = false;
public Enumeration(ICElement parent, String name) { public Enumeration(ICElement parent, String name) {
super(parent, name, CElement.C_ENUMERATION); super(parent, name, CElement.C_ENUMERATION);
} }
@ -35,13 +40,14 @@ public class Enumeration extends SourceManipulation implements IEnumeration{
* @see org.eclipse.cdt.core.model.IVariableDeclaration#getTypeName() * @see org.eclipse.cdt.core.model.IVariableDeclaration#getTypeName()
*/ */
public String getTypeName() { public String getTypeName() {
return null; return typeName;
} }
/** /**
* @see org.eclipse.cdt.core.model.IVariableDeclaration#setTypeName(java.lang.String) * @see org.eclipse.cdt.core.model.IVariableDeclaration#setTypeName(java.lang.String)
*/ */
public void setTypeName(String type) { public void setTypeName(String type) {
typeName = type;
} }
/** /**
@ -55,21 +61,45 @@ public class Enumeration extends SourceManipulation implements IEnumeration{
* @see org.eclipse.cdt.core.model.IDeclaration#isConst() * @see org.eclipse.cdt.core.model.IDeclaration#isConst()
*/ */
public boolean isConst() { public boolean isConst() {
return false; return isConst;
} }
/** /**
* @see org.eclipse.cdt.core.model.IDeclaration#isStatic() * @see org.eclipse.cdt.core.model.IDeclaration#isStatic()
*/ */
public boolean isStatic() { public boolean isStatic() {
return false; return isStatic;
} }
/** /**
* @see org.eclipse.cdt.core.model.IDeclaration#isVolatile() * @see org.eclipse.cdt.core.model.IDeclaration#isVolatile()
*/ */
public boolean isVolatile() { public boolean isVolatile() {
return false; return isVolatile;
}
/**
* Sets the isConst.
* @param isConst The isConst to set
*/
public void setConst(boolean isConst) {
this.isConst = isConst;
}
/**
* Sets the isStatic.
* @param isStatic The isStatic to set
*/
public void setStatic(boolean isStatic) {
this.isStatic = isStatic;
}
/**
* Sets the isVolatile.
* @param isVolatile The isVolatile to set
*/
public void setVolatile(boolean isVolatile) {
this.isVolatile = isVolatile;
} }
} }

View file

@ -0,0 +1,43 @@
package org.eclipse.cdt.internal.core.model;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IEnumerator;
/**********************************************************************
* Copyright (c) 2002,2003 Rational Software Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* Rational Software - Initial API and implementation
***********************************************************************/
public class Enumerator extends SourceManipulation implements IEnumerator{
String constantExpression = "";
public Enumerator(ICElement parent, String name) {
super(parent, name, CElement.C_ENUMERATOR);
}
protected CElementInfo createElementInfo () {
return new SourceManipulationInfo(this);
}
/**
* @see org.eclipse.cdt.core.model.IEnumerator#getConstantExptrssion()
*/
public String getConstantExpression() {
return constantExpression;
}
/**
* Sets the constantExpression.
* @param constantExpression The constantExpression to set
*/
public void setConstantExpression(String constantExpression) {
this.constantExpression = constantExpression;
}
}

View file

@ -8,7 +8,6 @@ package org.eclipse.cdt.ui;
import org.eclipse.cdt.core.model.IBinary; import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IFunctionDeclaration; import org.eclipse.cdt.core.model.IFunctionDeclaration;
import org.eclipse.cdt.core.model.IVariable;
import org.eclipse.cdt.core.model.IVariableDeclaration; import org.eclipse.cdt.core.model.IVariableDeclaration;
import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.CElementImageProvider;
import org.eclipse.cdt.internal.ui.ErrorTickAdornmentProvider; import org.eclipse.cdt.internal.ui.ErrorTickAdornmentProvider;
@ -68,6 +67,15 @@ public class CElementLabelProvider extends LabelProvider {
IFunctionDeclaration fdecl = (IFunctionDeclaration) celem; IFunctionDeclaration fdecl = (IFunctionDeclaration) celem;
name = fdecl.getSignature(); name = fdecl.getSignature();
break; break;
case ICElement.C_STRUCT:
case ICElement.C_ENUMERATION:
if(celem.getElementName() != null){
name = celem.getElementName();
} else {
IVariableDeclaration varDecl = (IVariableDeclaration) celem;
name = varDecl.getTypeName();
}
break;
default: default:
name= celem.getElementName(); name= celem.getElementName();
break; break;