/*******************************************************************************
 * Copyright (c) 2010 Ericsson 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:
 *     Ericsson - Initial API and implementation
 *******************************************************************************/
package org.eclipse.cdt.dsf.mi.service.command.commands;

import org.eclipse.cdt.dsf.gdb.service.IGDBTraceControl.ITraceTargetDMContext;
import org.eclipse.cdt.dsf.mi.service.command.output.MIOutput;
import org.eclipse.cdt.dsf.mi.service.command.output.MITraceFindInfo;

/**
 * -trace-find MODE [PARAMS...]
 * 
 * Find a trace frame using criteria defined by MODE and PARAMS. The following
 * lists permissible modes and their parameters.
 * 
 * none              - No parameters are required. Stops examining trace frames.
 * frame-number      - An integer is required as parameter. Selects tracepoint frame 
 *                     with that index.
 * tracepoint-number - An integer is required as parameter. Finds next trace 
 *                     frame that corresponds to tracepoint with the specified number.
 * pc                - An integer address is required as parameter. Finds next trace
 *                     frame that corresponds to any tracepoint at the specified address.
 * pc-inside-range   - Two integer addresses are required as parameters. Finds next 
 *                     trace frame that corresponds to a tracepoint at an address inside 
 *                     the specified range.
 * pc-outside-range  - Two integer addresses are required as parameters. Finds next 
 *                     trace frame that corresponds to a tracepoint at an address outside
 *                     the specified range.
 * line              - Line specification is required as parameter. 
 *                     Finds next trace frame that corresponds to a tracepoint at the 
 *                     specified location.
 * 
 * If the 'none' was passed as mode, the response does not have fields.  Otherwise, the
 * response may have the following fields:
 *
 * found      - This field has either 0 or 1 as the value, depending on whether a matching
 *              tracepoint was found.
 * traceframe - The index of the found traceframe. This field is present if the 'found' 
 *              field has value of 1.
 * tracepoint - The index of the found tracepoint. This field is present if the 'found' 
 *              field has value of 1.
 * frame      - The stack frame when the traceframe was collected
 * 
 * @since 3.0
 */
public class MITraceFind extends MICommand<MITraceFindInfo> {
	public MITraceFind(ITraceTargetDMContext ctx, String[] params) {
		super(ctx, "-trace-find", null, params); //$NON-NLS-1$
	}
	
    @Override
    public MITraceFindInfo getResult(MIOutput out) {
        return new MITraceFindInfo(out);
    }
}
