// ICoder.h | |
using System; | |
namespace SevenZip | |
{ | |
/// <summary> | |
/// The exception that is thrown when an error in input stream occurs during decoding. | |
/// </summary> | |
class DataErrorException : ApplicationException | |
{ | |
public DataErrorException(): base("Data Error") { } | |
} | |
/// <summary> | |
/// The exception that is thrown when the value of an argument is outside the allowable range. | |
/// </summary> | |
class InvalidParamException : ApplicationException | |
{ | |
public InvalidParamException(): base("Invalid Parameter") { } | |
} | |
public interface ICodeProgress | |
{ | |
/// <summary> | |
/// Callback progress. | |
/// </summary> | |
/// <param name="inSize"> | |
/// input size. -1 if unknown. | |
/// </param> | |
/// <param name="outSize"> | |
/// output size. -1 if unknown. | |
/// </param> | |
void SetProgress(Int64 inSize, Int64 outSize); | |
}; | |
public interface ICoder | |
{ | |
/// <summary> | |
/// Codes streams. | |
/// </summary> | |
/// <param name="inStream"> | |
/// input Stream. | |
/// </param> | |
/// <param name="outStream"> | |
/// output Stream. | |
/// </param> | |
/// <param name="inSize"> | |
/// input Size. -1 if unknown. | |
/// </param> | |
/// <param name="outSize"> | |
/// output Size. -1 if unknown. | |
/// </param> | |
/// <param name="progress"> | |
/// callback progress reference. | |
/// </param> | |
/// <exception cref="SevenZip.DataErrorException"> | |
/// if input stream is not valid | |
/// </exception> | |
void Code(System.IO.Stream inStream, System.IO.Stream outStream, | |
Int64 inSize, Int64 outSize, ICodeProgress progress); | |
}; | |
/* | |
public interface ICoder2 | |
{ | |
void Code(ISequentialInStream []inStreams, | |
const UInt64 []inSizes, | |
ISequentialOutStream []outStreams, | |
UInt64 []outSizes, | |
ICodeProgress progress); | |
}; | |
*/ | |
/// <summary> | |
/// Provides the fields that represent properties idenitifiers for compressing. | |
/// </summary> | |
public enum CoderPropID | |
{ | |
/// <summary> | |
/// Specifies default property. | |
/// </summary> | |
DefaultProp = 0, | |
/// <summary> | |
/// Specifies size of dictionary. | |
/// </summary> | |
DictionarySize, | |
/// <summary> | |
/// Specifies size of memory for PPM*. | |
/// </summary> | |
UsedMemorySize, | |
/// <summary> | |
/// Specifies order for PPM methods. | |
/// </summary> | |
Order, | |
/// <summary> | |
/// Specifies Block Size. | |
/// </summary> | |
BlockSize, | |
/// <summary> | |
/// Specifies number of postion state bits for LZMA (0 <= x <= 4). | |
/// </summary> | |
PosStateBits, | |
/// <summary> | |
/// Specifies number of literal context bits for LZMA (0 <= x <= 8). | |
/// </summary> | |
LitContextBits, | |
/// <summary> | |
/// Specifies number of literal position bits for LZMA (0 <= x <= 4). | |
/// </summary> | |
LitPosBits, | |
/// <summary> | |
/// Specifies number of fast bytes for LZ*. | |
/// </summary> | |
NumFastBytes, | |
/// <summary> | |
/// Specifies match finder. LZMA: "BT2", "BT4" or "BT4B". | |
/// </summary> | |
MatchFinder, | |
/// <summary> | |
/// Specifies the number of match finder cyckes. | |
/// </summary> | |
MatchFinderCycles, | |
/// <summary> | |
/// Specifies number of passes. | |
/// </summary> | |
NumPasses, | |
/// <summary> | |
/// Specifies number of algorithm. | |
/// </summary> | |
Algorithm, | |
/// <summary> | |
/// Specifies the number of threads. | |
/// </summary> | |
NumThreads, | |
/// <summary> | |
/// Specifies mode with end marker. | |
/// </summary> | |
EndMarker | |
}; | |
public interface ISetCoderProperties | |
{ | |
void SetCoderProperties(CoderPropID[] propIDs, object[] properties); | |
}; | |
public interface IWriteCoderProperties | |
{ | |
void WriteCoderProperties(System.IO.Stream outStream); | |
} | |
public interface ISetDecoderProperties | |
{ | |
void SetDecoderProperties(byte[] properties); | |
} | |
} |