/*******************************************************************************
* Copyright (c) 2000, 2006 QNX Software Systems 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:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIArrayType;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
/**
*/
public class ArrayType extends DerivedType implements ICDIArrayType {
int dimension;
/**
* @param typename
*/
public ArrayType(Target target, String typename,int dim) {
super(target, typename);
dimension = dim;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.type.ICDIArrayType#getDimension()
*/
public int getDimension() {
if (derivedType == null) {
getComponentType();
}
return dimension;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIArrayType#getComponentType()
*/
public ICDIType getComponentType() {
if (derivedType == null) {
String orig = getTypeName();
String name = orig;
int lbracket = orig.lastIndexOf('[');
int rbracket = orig.lastIndexOf(']');
if (lbracket != -1 && rbracket != -1 && (rbracket > lbracket)) {
try {
String dim = name.substring(lbracket + 1, rbracket).trim();
dimension = Integer.parseInt(dim);
} catch (NumberFormatException e) {
}
name = orig.substring(0, lbracket).trim();
}
setComponentType(name);
}
return derivedType;
}
}