using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RoboSharp.Interfaces
{
///
/// Interface for a class factory object to produce objects
/// Usable by consumers to specify a factory object their library can rely on to create classes derived from the object.
///
public interface IRoboCommandFactory
{
///
/// Create a new object using the parameterless constructor
///
///
/// new object
///
///
IRoboCommand GetRoboCommand();
///
/// Create a new with the specified source and destination
///
///
///
///
IRoboCommand GetRoboCommand(string source, string destination);
///
IRoboCommand GetRoboCommand(string source, string destination, CopyOptions.CopyActionFlags copyActionFlags);
///
IRoboCommand GetRoboCommand(string source, string destination, CopyOptions.CopyActionFlags copyActionFlags, SelectionOptions.SelectionFlags selectionFlags);
/*
* The constructors within the region below have been intentionally left out of the interface.
* This is because these constructors are for more advanced usage of the object, and the base interface should only enforce the
* what will most likely be the two most commonly used constructors.
*
* Should consumers require the interface to be expanded, they can produce their own interface that is derived from this one.
*/
#region
/////
///// Create a new with the specified name
/////
/////
//IRoboCommand GetRoboCommand(string name, bool stopIfDisposing = true);
/////
///// Create a new with the specified source and destination
/////
/////
//IRoboCommand GetRoboCommand(string source, string destination, bool stopIfDisposing = true);
/////
///// Create a new with the specified source, destination, and name
/////
/////
//IRoboCommand GetRoboCommand(string source, string destination, string name, bool stopIfDisposing = true);
/////
//IRoboCommand GetRoboCommand(string name, string source = null, string destination = null, bool stopIfDisposing = true, RoboSharpConfiguration configuration = null, CopyOptions copyOptions = null, SelectionOptions selectionOptions = null, RetryOptions retryOptions = null, LoggingOptions loggingOptions = null, JobOptions jobOptions = null);
/////
//IRoboCommand GetRoboCommand(RoboCommand command, string NewSource = null, string NewDestination = null, bool LinkConfiguration = true, bool LinkRetryOptions = true, bool LinkSelectionOptions = false, bool LinkLoggingOptions = false, bool LinkJobOptions = false);
#endregion
}
}