text: #pragma once
  
  // This file is automatically generated. Do not rewrite manually.
  
  #include "Platform.h"
  
  struct ICompressProgressInfo;
  
  extern "C" const GUID IID_ISequentialInStream;
  struct ISequentialInStream
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE Read(void* data, UInt32 size, UInt32* processedSize) throw() abstract;
  };
  
  extern "C" const GUID IID_ISequentialOutStream;
  struct ISequentialOutStream
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE Write(const void* data, UInt32 size, UInt32* processedSize) throw() abstract;
  };
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_IInStream;
  struct IInStream
      : public ISequentialInStream
  {
      virtual HRESULT STDMETHODCALLTYPE Seek(Int64 offset, UInt32 seekOrigin, UInt64* newPosition) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_IOutStream;
  struct IOutStream
      : public ISequentialOutStream
  {
      virtual HRESULT STDMETHODCALLTYPE Seek(Int64 offset, UInt32 seekOrigin, UInt64* newPosition) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE SetSize(UInt64 newSize) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_IStreamGetSize;
  struct IStreamGetSize
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE GetSize(UInt64* size) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_IOutStreamFinish;
  struct IOutStreamFinish
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE OutStreamFinish() throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_IStreamGetProps;
  struct IStreamGetProps
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE GetProps(UInt64* size, FILETIME* cTime, FILETIME* aTime, FILETIME* mTime, UInt32* attrib) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_IStreamGetProps2;
  struct IStreamGetProps2
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE GetProps2(CStreamFileProps* props) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  extern "C" const GUID IID_ICompressProgressInfo;
  struct ICompressProgressInfo
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetRatioInfo(const UInt64* inSize, const UInt64* outSize) throw() abstract;
  };
  
  extern "C" const GUID IID_ICompressCoder;
  struct ICompressCoder
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE Code(ISequentialInStream* inStream, ISequentialOutStream* outStream, const UInt64* inSize, const UInt64* outSize, ICompressProgressInfo* progress) throw() abstract;
  };
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICompressCoder2;
  struct ICompressCoder2
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE Code(ISequentialInStream* const* inStreams, const UInt64* const* inSizes, UInt32 numInStreams, ISequentialOutStream* const* outStreams, const UInt64* const* outSizes, UInt32 numOutStreams, ICompressProgressInfo* progress) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  extern "C" const GUID IID_ICompressSetCoderPropertiesOpt;
  struct ICompressSetCoderPropertiesOpt
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetCoderPropertiesOpt(const PROPID* propIDs, const PROPVARIANT* props, UInt32 numProps) throw() abstract;
  };
  
  extern "C" const GUID IID_ICompressSetCoderProperties;
  struct ICompressSetCoderProperties
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetCoderProperties(const PROPID* propIDs, const PROPVARIANT* props, UInt32 numProps) throw() abstract;
  };
  
  extern "C" const GUID IID_ICompressSetDecoderProperties2;
  struct ICompressSetDecoderProperties2
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetDecoderProperties2(const Byte* data, UInt32 size) throw() abstract;
  };
  
  extern "C" const GUID IID_ICompressWriteCoderProperties;
  struct ICompressWriteCoderProperties
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE WriteCoderProperties(ISequentialOutStream* outStream) throw() abstract;
  };
  
  extern "C" const GUID IID_ICompressGetInStreamProcessedSize;
  struct ICompressGetInStreamProcessedSize
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE GetInStreamProcessedSize(UInt64* value) throw() abstract;
  };
  
  extern "C" const GUID IID_ICompressSetCoderMt;
  struct ICompressSetCoderMt
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetNumberOfThreads(UInt32 numThreads) throw() abstract;
  };
  
  extern "C" const GUID IID_ICompressSetFinishMode;
  struct ICompressSetFinishMode
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetFinishMode(UInt32 finishMode) throw() abstract;
  };
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICompressGetInStreamProcessedSize2;
  struct ICompressGetInStreamProcessedSize2
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE GetInStreamProcessedSize2(UInt32 streamIndex, UInt64* value) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  extern "C" const GUID IID_ICompressSetMemLimit;
  struct ICompressSetMemLimit
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetMemLimit(UInt64 memUsage) throw() abstract;
  };
  
  extern "C" const GUID IID_ICompressReadUnusedFromInBuf;
  struct ICompressReadUnusedFromInBuf
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE ReadUnusedFromInBuf(void* data, UInt32 size, UInt32* processedSize) throw() abstract;
  };
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICompressGetSubStreamSize;
  struct ICompressGetSubStreamSize
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE GetSubStreamSize(UInt64 subStream, UInt64* value) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  extern "C" const GUID IID_ICompressSetInStream;
  struct ICompressSetInStream
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetInStream(ISequentialInStream* inStream) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE ReleaseInStream() throw() abstract;
  };
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICompressSetOutStream;
  struct ICompressSetOutStream
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetOutStream(ISequentialOutStream* outStream) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE ReleaseOutStream() throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  extern "C" const GUID IID_ICompressSetOutStreamSize;
  struct ICompressSetOutStreamSize
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetOutStreamSize(const UInt64* outSize) throw() abstract;
  };
  
  extern "C" const GUID IID_ICompressSetBufSize;
  struct ICompressSetBufSize
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetInBufSize(UInt32 streamIndex, UInt32 size) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE SetOutBufSize(UInt32 streamIndex, UInt32 size) throw() abstract;
  };
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICompressInitEncoder;
  struct ICompressInitEncoder
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE InitEncoder() throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICompressSetInStream2;
  struct ICompressSetInStream2
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetInStream2(UInt32 streamIndex, ISequentialInStream* inStream) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE ReleaseInStream2(UInt32 streamIndex) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICompressFilter;
  struct ICompressFilter
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE Init() throw() abstract;
      virtual UInt32 STDMETHODCALLTYPE Filter(Byte* data, UInt32 size) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  extern "C" const GUID IID_ICompressCodecsInfo;
  struct ICompressCodecsInfo
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE GetNumMethods(UInt32* numMethods) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE GetProperty(UInt32 index, PROPID propID, PROPVARIANT* value) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE CreateDecoder(UInt32 index, const GUID* iid, void** coder) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE CreateEncoder(UInt32 index, const GUID* iid, void** coder) throw() abstract;
  };
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ISetCompressCodecsInfo;
  struct ISetCompressCodecsInfo
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetCompressCodecsInfo(ICompressCodecsInfo* compressCodecsInfo) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICryptoProperties;
  struct ICryptoProperties
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE SetKey(const Byte* data, UInt32 size) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE SetInitVector(const Byte* data, UInt32 size) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICryptoResetInitVector;
  struct ICryptoResetInitVector
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE ResetInitVector() throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICryptoSetPassword;
  struct ICryptoSetPassword
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE CryptoSetPassword(const Byte* data, UInt32 size) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_ICryptoSetCRC;
  struct ICryptoSetCRC
      : public IUnknown
  {
      virtual HRESULT STDMETHODCALLTYPE CryptoSetCRC(UInt32 crc) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_IHasher;
  struct IHasher
      : public IUnknown
  {
      virtual void STDMETHODCALLTYPE Init() throw() abstract;
      virtual void STDMETHODCALLTYPE Update(const void* data, UInt32 size) throw() abstract;
      virtual void STDMETHODCALLTYPE Final(Byte* digest) throw() abstract;
      virtual UInt32 STDMETHODCALLTYPE GetDigestSize() throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  #if false // This interface is not supported by the wrapper.
  extern "C" const GUID IID_IHashers;
  struct IHashers
      : public IUnknown
  {
      virtual UInt32 STDMETHODCALLTYPE GetNumHashers() throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE GetHasherProp(UInt32 index, PROPID propID, PROPVARIANT* value) throw() abstract;
      virtual HRESULT STDMETHODCALLTYPE CreateHasher(UInt32 index, IHasher** hasher) throw() abstract;
  };
  #endif // This interface is not supported by the wrapper.
  
  extern HRESULT Customized_IUnknown__QueryInterface(IUnknown*  ifp, GUID* piid, void** ppvObject);
  extern HRESULT Customized_ICompressCoder__Code(ICompressCoder*  ifp, SequentialInStreamReader inStreamReader, SequentialOutStreamWriter outStreamWriter, const UInt64* inSize, const UInt64* outSize, CompressProgressInfoReporter progressReporter);
  extern HRESULT Customized_ICompressWriteCoderProperties__WriteCoderProperties(ICompressWriteCoderProperties*  ifp, SequentialOutStreamWriter outStreamWriter);
  extern HRESULT Customized_ICompressSetInStream__SetInStream(ICompressSetInStream*  ifp, SequentialInStreamReader inStreamReader);
  