/******************************************************************************* * Copyright (c) 2013 AdaCore 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: * Philippe Gil (AdaCore) - Initial API and implementation * Marc-Andre Laperle (Ericsson) - Fix parsing for old versions of GDB *******************************************************************************/ package org.eclipse.cdt.dsf.mi.service.command.output; /** * '-gdb-show language' returns the current source language. * * sample output: * * -gdb-show language * ^done,value="auto" * * GDB 6.2-6.8: * -gdb-show language * ^done,value="auto; currently c" * * the different returned values are: * * (gdb) help set language * Set the current source language. * The currently understood settings are: * * local or auto Automatic setting based on source file * ada Use the Ada language * c Use the C language * c++ Use the C++ language * asm Use the Asm language * minimal Use the Minimal language * d Use the D language * fortran Use the Fortran language * objective-c Use the Objective-c language * go Use the Go language * java Use the Java language * modula-2 Use the Modula-2 language * opencl Use the Opencl language * pascal Use the Pascal language * * @since 4.3 */ public class MIGDBShowLanguageInfo extends MIInfo { public static final String LOCAL = "local"; //$NON-NLS-1$ public static final String AUTO = "auto"; //$NON-NLS-1$ public static final String ADA = "ada"; //$NON-NLS-1$ public static final String C = "c"; //$NON-NLS-1$ public static final String C_PLUS_PLUS = "c++"; //$NON-NLS-1$ public static final String ASM = "asm"; //$NON-NLS-1$ public static final String MINIMAL = "minimal"; //$NON-NLS-1$ public static final String D = "d"; //$NON-NLS-1$ public static final String FORTRAN = "fortran"; //$NON-NLS-1$ public static final String OBJECTIVE_C = "objective-c"; //$NON-NLS-1$ public static final String GO = "go"; //$NON-NLS-1$ public static final String JAVA = "java"; //$NON-NLS-1$ public static final String MODULA_2 = "modula-2"; //$NON-NLS-1$ public static final String OPENCL = "opencl"; //$NON-NLS-1$ public static final String PASCAL = "pascal"; //$NON-NLS-1$ private String fLanguage = AUTO; public MIGDBShowLanguageInfo(MIOutput record) { super(record); parse(); } protected void parse() { if (isDone()) { MIOutput out = getMIOutput(); MIResultRecord outr = out.getMIResultRecord(); if (outr != null) { MIResult[] results = outr.getMIResults(); for (int i = 0; i < results.length; i++) { String var = results[i].getVariable(); if (var.equals("value")) { //$NON-NLS-1$ MIValue value = results[i].getMIValue(); if (value instanceof MIConst) { fLanguage = ((MIConst)value).getString(); // Some versions of GDB (6.2-6.8) output "auto; currently c" // so we need to remove the semicolon part int semiColonIdx = fLanguage.indexOf(';'); if (semiColonIdx != -1) { fLanguage = fLanguage.substring(0, semiColonIdx); } } } } } } } public String getLanguage() { return fLanguage; } }