/*******************************************************************************
 * Copyright (c) 2004, 2007 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.command.factories.win32; 

import org.eclipse.cdt.debug.mi.core.command.CLIInfoSharedLibrary;
import org.eclipse.cdt.debug.mi.core.command.MIEnvironmentCD;
import org.eclipse.cdt.debug.mi.core.command.MIGDBSetAutoSolib;
import org.eclipse.cdt.debug.mi.core.command.MIGDBSetNewConsole;
import org.eclipse.cdt.debug.mi.core.command.MIGDBSetSolibSearchPath;
import org.eclipse.cdt.debug.mi.core.command.MIGDBShowSolibSearchPath;
import org.eclipse.cdt.debug.mi.core.command.factories.StandardCommandFactory;
 
/**
 * Command factory for the standard gdb/mi protocol for Windows.
 */
public class StandardWinCommandFactory extends StandardCommandFactory {

	/** 
	 * Constructor for StandardWinCommandFactory. 
	 */
	public StandardWinCommandFactory() {
		super();
	}

	/** 
	 * Constructor for StandardWinCommandFactory. 
	 */
	public StandardWinCommandFactory( String miVersion ) {
		super( miVersion );
	}

	public MIEnvironmentCD createMIEnvironmentCD( String pathdir ) {
		return new WinMIEnvironmentCD( getMIVersion(), pathdir );
	}

	public CLIInfoSharedLibrary createCLIInfoSharedLibrary() {
		return new WinCLIInfoSharedLibrary();
	}

	public MIGDBSetAutoSolib createMIGDBSetAutoSolib( boolean set ) {
		// Suppress "set auto-solib" - returns error on Windows
		return new MIGDBSetAutoSolib( getMIVersion(), true ) {

			public String getOperation() {
				return ""; //$NON-NLS-1$
			}

			public String[] getOptions() {
				return new String[0];
			}

			public String[] getParameters() {
				return new String[0];
			}			
		};
	}

	public MIGDBShowSolibSearchPath createMIGDBShowSolibSearchPath() {
		// Suppress "show solib-search-path" - returns error on Windows
		return new MIGDBShowSolibSearchPath( getMIVersion() ) {

			public String getOperation() {
				return ""; //$NON-NLS-1$
			}

			public String[] getOptions() {
				return new String[0];
			}

			public String[] getParameters() {
				return new String[0];
			}			
		};
	}

	public MIGDBSetSolibSearchPath createMIGDBSetSolibSearchPath( String[] params ) {
		// Suppress "set solib-search-path" - returns error on Windows
		return new MIGDBSetSolibSearchPath( getMIVersion(), params ) {

			public String getOperation() {
				return ""; //$NON-NLS-1$
			}

			public String[] getOptions() {
				return new String[0];
			}

			public String[] getParameters() {
				return new String[0];
			}			
		};
	}
	
	public MIGDBSetNewConsole createMIGDBSetNewConsole() {
		// By default in Windows, turn off new console so that the
		// Ctrl-C's get propogated automatically to the inferior.
		// Overriden by Cygwin.
		return new MIGDBSetNewConsole(getMIVersion(), "off");
	}
}
