// 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); 
 | 
    } 
 | 
} 
 |