misc/libphysfs/lzma/CS/7zip/ICoder.cs
changeset 13881 99b265e0d1d0
parent 13880 5f819b90d479
child 13882 b172a5d40eee
equal deleted inserted replaced
13880:5f819b90d479 13881:99b265e0d1d0
     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 size of dictionary.
       
    82 		/// </summary>
       
    83 		DictionarySize = 0x400,
       
    84 		/// <summary>
       
    85 		/// Specifies size of memory for PPM*.
       
    86 		/// </summary>
       
    87 		UsedMemorySize,
       
    88 		/// <summary>
       
    89 		/// Specifies order for PPM methods.
       
    90 		/// </summary>
       
    91 		Order,
       
    92 		/// <summary>
       
    93 		/// Specifies number of postion state bits for LZMA (0 <= x <= 4).
       
    94 		/// </summary>
       
    95 		PosStateBits = 0x440,
       
    96 		/// <summary>
       
    97 		/// Specifies number of literal context bits for LZMA (0 <= x <= 8).
       
    98 		/// </summary>
       
    99 		LitContextBits,
       
   100 		/// <summary>
       
   101 		/// Specifies number of literal position bits for LZMA (0 <= x <= 4).
       
   102 		/// </summary>
       
   103 		LitPosBits,
       
   104 		/// <summary>
       
   105 		/// Specifies number of fast bytes for LZ*.
       
   106 		/// </summary>
       
   107 		NumFastBytes = 0x450,
       
   108 		/// <summary>
       
   109 		/// Specifies match finder. LZMA: "BT2", "BT4" or "BT4B".
       
   110 		/// </summary>
       
   111 		MatchFinder,
       
   112 		/// <summary>
       
   113 		/// Specifies number of passes.
       
   114 		/// </summary>
       
   115 		NumPasses = 0x460,
       
   116 		/// <summary>
       
   117 		/// Specifies number of algorithm.
       
   118 		/// </summary>
       
   119 		Algorithm = 0x470,
       
   120 		/// <summary>
       
   121 		/// Specifies multithread mode.
       
   122 		/// </summary>
       
   123 		MultiThread = 0x480,
       
   124 		/// <summary>
       
   125 		/// Specifies mode with end marker.
       
   126 		/// </summary>
       
   127 		EndMarker = 0x490
       
   128 	};
       
   129 
       
   130 
       
   131 	public interface ISetCoderProperties
       
   132 	{
       
   133 		void SetCoderProperties(CoderPropID[] propIDs, object[] properties);
       
   134 	};
       
   135 
       
   136 	public interface IWriteCoderProperties
       
   137 	{
       
   138 		void WriteCoderProperties(System.IO.Stream outStream);
       
   139 	}
       
   140 
       
   141 	public interface ISetDecoderProperties
       
   142 	{
       
   143 		void SetDecoderProperties(byte[] properties);
       
   144 	}
       
   145 }