annotate src/win32/7zip/7z/CPP/7zip/ICoder.h @ 1:f9f4f1b99eed

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