using ICSharpCode.SharpZipLib.Core;
namespace ICSharpCode.SharpZipLib.Zip
{
	/// 
	/// Defines factory methods for creating new  values.
	/// 
	public interface IEntryFactory
	{
		/// 
		/// Create a  for a file given its name
		/// 
		/// The name of the file to create an entry for.
		/// Returns a file entry based on the  passed.
		ZipEntry MakeFileEntry(string fileName);
		/// 
		/// Create a  for a file given its name
		/// 
		/// The name of the file to create an entry for.
		/// If true get details from the file system if the file exists.
		/// Returns a file entry based on the  passed.
		ZipEntry MakeFileEntry(string fileName, bool useFileSystem);
		/// 
		/// Create a  for a file given its actual name and optional override name
		/// 
		/// The name of the file to create an entry for.
		/// An alternative name to be used for the new entry. Null if not applicable.
		/// If true get details from the file system if the file exists.
		/// Returns a file entry based on the  passed.
		ZipEntry MakeFileEntry(string fileName, string entryName, bool useFileSystem);
		/// 
		/// Create a  for a directory given its name
		/// 
		/// The name of the directory to create an entry for.
		/// Returns a directory entry based on the  passed.
		ZipEntry MakeDirectoryEntry(string directoryName);
		/// 
		/// Create a  for a directory given its name
		/// 
		/// The name of the directory to create an entry for.
		/// If true get details from the file system for this directory if it exists.
		/// Returns a directory entry based on the  passed.
		ZipEntry MakeDirectoryEntry(string directoryName, bool useFileSystem);
		/// 
		/// Get/set the  applicable.
		/// 
		INameTransform NameTransform { get; set; }
	}
}