misc/libphysfs/lzma/CPP/7zip/ICoder.h
branchui-scaling
changeset 15283 c4fd2813b127
parent 13390 0135e64c6c66
parent 15279 7ab5cf405686
child 15663 d92eeb468dad
equal deleted inserted replaced
13390:0135e64c6c66 15283:c4fd2813b127
     1 // ICoder.h
       
     2 
       
     3 #ifndef __ICODER_H
       
     4 #define __ICODER_H
       
     5 
       
     6 #include "IStream.h"
       
     7 
       
     8 #define CODER_INTERFACE(i, x) DECL_INTERFACE(i, 4, x)
       
     9 
       
    10 CODER_INTERFACE(ICompressProgressInfo, 0x04)
       
    11 {
       
    12   STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize) PURE;
       
    13 };
       
    14 
       
    15 CODER_INTERFACE(ICompressCoder, 0x05)
       
    16 {
       
    17   STDMETHOD(Code)(ISequentialInStream *inStream,
       
    18       ISequentialOutStream *outStream, 
       
    19       const UInt64 *inSize, 
       
    20       const UInt64 *outSize,
       
    21       ICompressProgressInfo *progress) PURE;
       
    22 };
       
    23 
       
    24 CODER_INTERFACE(ICompressCoder2, 0x18)
       
    25 {
       
    26   STDMETHOD(Code)(ISequentialInStream **inStreams,
       
    27       const UInt64 **inSizes, 
       
    28       UInt32 numInStreams,
       
    29       ISequentialOutStream **outStreams, 
       
    30       const UInt64 **outSizes,
       
    31       UInt32 numOutStreams,
       
    32       ICompressProgressInfo *progress) PURE;
       
    33 };
       
    34 
       
    35 namespace NCoderPropID
       
    36 {
       
    37   enum EEnum
       
    38   {
       
    39     kDictionarySize = 0x400,
       
    40     kUsedMemorySize,
       
    41     kOrder,
       
    42     kPosStateBits = 0x440,
       
    43     kLitContextBits,
       
    44     kLitPosBits,
       
    45     kNumFastBytes = 0x450,
       
    46     kMatchFinder,
       
    47     kMatchFinderCycles,
       
    48     kNumPasses = 0x460, 
       
    49     kAlgorithm = 0x470,
       
    50     kMultiThread = 0x480,
       
    51     kNumThreads,
       
    52     kEndMarker = 0x490
       
    53   };
       
    54 }
       
    55 
       
    56 CODER_INTERFACE(ICompressSetCoderProperties, 0x20)
       
    57 {
       
    58   STDMETHOD(SetCoderProperties)(const PROPID *propIDs, 
       
    59       const PROPVARIANT *properties, UInt32 numProperties) PURE;
       
    60 };
       
    61 
       
    62 /*
       
    63 CODER_INTERFACE(ICompressSetCoderProperties, 0x21)
       
    64 {
       
    65   STDMETHOD(SetDecoderProperties)(ISequentialInStream *inStream) PURE;
       
    66 };
       
    67 */
       
    68 
       
    69 CODER_INTERFACE(ICompressSetDecoderProperties2, 0x22)
       
    70 {
       
    71   STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size) PURE;
       
    72 };
       
    73 
       
    74 CODER_INTERFACE(ICompressWriteCoderProperties, 0x23)
       
    75 {
       
    76   STDMETHOD(WriteCoderProperties)(ISequentialOutStream *outStreams) PURE;
       
    77 };
       
    78 
       
    79 CODER_INTERFACE(ICompressGetInStreamProcessedSize, 0x24)
       
    80 {
       
    81   STDMETHOD(GetInStreamProcessedSize)(UInt64 *value) PURE;
       
    82 };
       
    83 
       
    84 CODER_INTERFACE(ICompressSetCoderMt, 0x25)
       
    85 {
       
    86   STDMETHOD(SetNumberOfThreads)(UInt32 numThreads) PURE;
       
    87 };
       
    88 
       
    89 CODER_INTERFACE(ICompressGetSubStreamSize, 0x30)
       
    90 {
       
    91   STDMETHOD(GetSubStreamSize)(UInt64 subStream, UInt64 *value) PURE;
       
    92 };
       
    93 
       
    94 CODER_INTERFACE(ICompressSetInStream, 0x31)
       
    95 {
       
    96   STDMETHOD(SetInStream)(ISequentialInStream *inStream) PURE;
       
    97   STDMETHOD(ReleaseInStream)() PURE;
       
    98 };
       
    99 
       
   100 CODER_INTERFACE(ICompressSetOutStream, 0x32)
       
   101 {
       
   102   STDMETHOD(SetOutStream)(ISequentialOutStream *outStream) PURE;
       
   103   STDMETHOD(ReleaseOutStream)() PURE;
       
   104 };
       
   105 
       
   106 CODER_INTERFACE(ICompressSetInStreamSize, 0x33)
       
   107 {
       
   108   STDMETHOD(SetInStreamSize)(const UInt64 *inSize) PURE;
       
   109 };
       
   110 
       
   111 CODER_INTERFACE(ICompressSetOutStreamSize, 0x34)
       
   112 {
       
   113   STDMETHOD(SetOutStreamSize)(const UInt64 *outSize) PURE;
       
   114 };
       
   115 
       
   116 CODER_INTERFACE(ICompressFilter, 0x40)
       
   117 {
       
   118   STDMETHOD(Init)() PURE;
       
   119   STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size) PURE;
       
   120   // Filter return outSize (UInt32)
       
   121   // if (outSize <= size): Filter have converted outSize bytes
       
   122   // if (outSize > size): Filter have not converted anything.
       
   123   //      and it needs at least outSize bytes to convert one block 
       
   124   //      (it's for crypto block algorithms).
       
   125 };
       
   126 
       
   127 CODER_INTERFACE(ICompressCodecsInfo, 0x60)
       
   128 {
       
   129   STDMETHOD(GetNumberOfMethods)(UInt32 *numMethods) PURE;
       
   130   STDMETHOD(GetProperty)(UInt32 index, PROPID propID, PROPVARIANT *value) PURE;
       
   131   STDMETHOD(CreateDecoder)(UInt32 index, const GUID *iid, void **coder) PURE;
       
   132   STDMETHOD(CreateEncoder)(UInt32 index, const GUID *iid, void **coder) PURE;
       
   133 };
       
   134 CODER_INTERFACE(ISetCompressCodecsInfo, 0x61)
       
   135 {
       
   136   STDMETHOD(SetCompressCodecsInfo)(ICompressCodecsInfo *compressCodecsInfo) PURE;
       
   137 };
       
   138 
       
   139 CODER_INTERFACE(ICryptoProperties, 0x80)
       
   140 {
       
   141   STDMETHOD(SetKey)(const Byte *data, UInt32 size) PURE;
       
   142   STDMETHOD(SetInitVector)(const Byte *data, UInt32 size) PURE;
       
   143 };
       
   144 
       
   145 /*
       
   146 CODER_INTERFACE(ICryptoResetSalt, 0x88)
       
   147 {
       
   148   STDMETHOD(ResetSalt)() PURE;
       
   149 };
       
   150 */
       
   151 
       
   152 CODER_INTERFACE(ICryptoResetInitVector, 0x8C)
       
   153 {
       
   154   STDMETHOD(ResetInitVector)() PURE;
       
   155 };
       
   156 
       
   157 CODER_INTERFACE(ICryptoSetPassword, 0x90)
       
   158 {
       
   159   STDMETHOD(CryptoSetPassword)(const Byte *data, UInt32 size) PURE;
       
   160 };
       
   161 
       
   162 CODER_INTERFACE(ICryptoSetCRC, 0xA0)
       
   163 {
       
   164   STDMETHOD(CryptoSetCRC)(UInt32 crc) PURE;
       
   165 };
       
   166 
       
   167 //////////////////////
       
   168 // It's for DLL file
       
   169 namespace NMethodPropID
       
   170 {
       
   171   enum EEnum
       
   172   {
       
   173     kID,
       
   174     kName,
       
   175     kDecoder,
       
   176     kEncoder,
       
   177     kInStreams,
       
   178     kOutStreams,
       
   179     kDescription,
       
   180     kDecoderIsAssigned,
       
   181     kEncoderIsAssigned
       
   182   };
       
   183 }
       
   184 
       
   185 #endif