Home | History | Annotate | Download | only in 7zip
      1 // ICoder.h
      2 
      3 using System;
      4 
      5 namespace SevenZip
      6 {
      7 	/// <summary>
      8 	/// The exception that is thrown when an error in input stream occurs during decoding.
      9 	/// </summary>
     10 	class DataErrorException : ApplicationException
     11 	{
     12 		public DataErrorException(): base("Data Error") { }
     13 	}
     14 
     15 	/// <summary>
     16 	/// The exception that is thrown when the value of an argument is outside the allowable range.
     17 	/// </summary>
     18 	class InvalidParamException : ApplicationException
     19 	{
     20 		public InvalidParamException(): base("Invalid Parameter") { }
     21 	}
     22 
     23 	public interface ICodeProgress
     24 	{
     25 		/// <summary>
     26 		/// Callback progress.
     27 		/// </summary>
     28 		/// <param name="inSize">
     29 		/// input size. -1 if unknown.
     30 		/// </param>
     31 		/// <param name="outSize">
     32 		/// output size. -1 if unknown.
     33 		/// </param>
     34 		void SetProgress(Int64 inSize, Int64 outSize);
     35 	};
     36 
     37 	public interface ICoder
     38 	{
     39 		/// <summary>
     40 		/// Codes streams.
     41 		/// </summary>
     42 		/// <param name="inStream">
     43 		/// input Stream.
     44 		/// </param>
     45 		/// <param name="outStream">
     46 		/// output Stream.
     47 		/// </param>
     48 		/// <param name="inSize">
     49 		/// input Size. -1 if unknown.
     50 		/// </param>
     51 		/// <param name="outSize">
     52 		/// output Size. -1 if unknown.
     53 		/// </param>
     54 		/// <param name="progress">
     55 		/// callback progress reference.
     56 		/// </param>
     57 		/// <exception cref="SevenZip.DataErrorException">
     58 		/// if input stream is not valid
     59 		/// </exception>
     60 		void Code(System.IO.Stream inStream, System.IO.Stream outStream,
     61 			Int64 inSize, Int64 outSize, ICodeProgress progress);
     62 	};
     63 
     64 	/*
     65 	public interface ICoder2
     66 	{
     67 		 void Code(ISequentialInStream []inStreams,
     68 				const UInt64 []inSizes, 
     69 				ISequentialOutStream []outStreams, 
     70 				UInt64 []outSizes,
     71 				ICodeProgress progress);
     72 	};
     73   */
     74 
     75 	/// <summary>
     76 	/// Provides the fields that represent properties idenitifiers for compressing.
     77 	/// </summary>
     78 	public enum CoderPropID
     79 	{
     80 		/// <summary>
     81 		/// Specifies default property.
     82 		/// </summary>
     83 		DefaultProp = 0,
     84 		/// <summary>
     85 		/// Specifies size of dictionary.
     86 		/// </summary>
     87 		DictionarySize,
     88 		/// <summary>
     89 		/// Specifies size of memory for PPM*.
     90 		/// </summary>
     91 		UsedMemorySize,
     92 		/// <summary>
     93 		/// Specifies order for PPM methods.
     94 		/// </summary>
     95 		Order,
     96 		/// <summary>
     97 		/// Specifies Block Size.
     98 		/// </summary>
     99 		BlockSize,
    100 		/// <summary>
    101 		/// Specifies number of postion state bits for LZMA (0 <= x <= 4).
    102 		/// </summary>
    103 		PosStateBits,
    104 		/// <summary>
    105 		/// Specifies number of literal context bits for LZMA (0 <= x <= 8).
    106 		/// </summary>
    107 		LitContextBits,
    108 		/// <summary>
    109 		/// Specifies number of literal position bits for LZMA (0 <= x <= 4).
    110 		/// </summary>
    111 		LitPosBits,
    112 		/// <summary>
    113 		/// Specifies number of fast bytes for LZ*.
    114 		/// </summary>
    115 		NumFastBytes,
    116 		/// <summary>
    117 		/// Specifies match finder. LZMA: "BT2", "BT4" or "BT4B".
    118 		/// </summary>
    119 		MatchFinder,
    120 		/// <summary>
    121 		/// Specifies the number of match finder cyckes.
    122 		/// </summary>
    123 		MatchFinderCycles,
    124 		/// <summary>
    125 		/// Specifies number of passes.
    126 		/// </summary>
    127 		NumPasses,
    128 		/// <summary>
    129 		/// Specifies number of algorithm.
    130 		/// </summary>
    131 		Algorithm,
    132 		/// <summary>
    133 		/// Specifies the number of threads.
    134 		/// </summary>
    135 		NumThreads,
    136 		/// <summary>
    137 		/// Specifies mode with end marker.
    138 		/// </summary>
    139 		EndMarker
    140 	};
    141 
    142 
    143 	public interface ISetCoderProperties
    144 	{
    145 		void SetCoderProperties(CoderPropID[] propIDs, object[] properties);
    146 	};
    147 
    148 	public interface IWriteCoderProperties
    149 	{
    150 		void WriteCoderProperties(System.IO.Stream outStream);
    151 	}
    152 
    153 	public interface ISetDecoderProperties
    154 	{
    155 		void SetDecoderProperties(byte[] properties);
    156 	}
    157 }
    158