/******************************************************************************* * 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.utils.debug.stabs; import java.io.IOException; import java.io.Reader; public class TypeInformation { TypeNumber typeNumber; char typeDescriptor; boolean isTypeDefinition; public TypeInformation(Reader reader) { parseTypeInformation(reader); } public TypeNumber getTypeNumber() { return typeNumber; } public char getTypeDescriptor() { return typeDescriptor; } public boolean isTypeDefinition() { return isTypeDefinition; } /** * int:t(0,1)=r(0,1);-2147483648;2147483647; * We receieve as input: * (0,1)=r(0,1);-2147483648;2147483647; * typeNumber: (0,1) * typeDescriptor: r * attributes: (0,1);-2147483648;2147483647; * isTypeDefinition = true; */ void parseTypeInformation(Reader reader) { try { typeNumber = new TypeNumber(reader); reader.mark(1); int c = reader.read(); if (c == '=') { isTypeDefinition = true; reader.mark(1); c = reader.read(); if (isTypeDescriptor((char)c)) { typeDescriptor = (char)c; } else { reader.reset(); } } else { reader.reset(); } } catch (IOException e) { } } boolean isTypeDescriptor(char c) { return Character.isLetter(c) || c == '=' || c == '#' || c =='*' || c == '&' || c == '@'; } }