annotate src/win32/7zip/7z/CPP/7zip/Archive/Common/MultiStream.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 // MultiStream.h
rlm@1 2
rlm@1 3 #ifndef __MULTISTREAM_H
rlm@1 4 #define __MULTISTREAM_H
rlm@1 5
rlm@1 6 #include "../../../Common/MyCom.h"
rlm@1 7 #include "../../../Common/MyVector.h"
rlm@1 8 #include "../../Archive/IArchive.h"
rlm@1 9
rlm@1 10 class CMultiStream:
rlm@1 11 public IInStream,
rlm@1 12 public CMyUnknownImp
rlm@1 13 {
rlm@1 14 int _streamIndex;
rlm@1 15 UInt64 _pos;
rlm@1 16 UInt64 _seekPos;
rlm@1 17 UInt64 _totalLength;
rlm@1 18 public:
rlm@1 19 struct CSubStreamInfo
rlm@1 20 {
rlm@1 21 CMyComPtr<IInStream> Stream;
rlm@1 22 UInt64 Pos;
rlm@1 23 UInt64 Size;
rlm@1 24 };
rlm@1 25 CObjectVector<CSubStreamInfo> Streams;
rlm@1 26 void Init()
rlm@1 27 {
rlm@1 28 _streamIndex = 0;
rlm@1 29 _pos = 0;
rlm@1 30 _seekPos = 0;
rlm@1 31 _totalLength = 0;
rlm@1 32 for (int i = 0; i < Streams.Size(); i++)
rlm@1 33 _totalLength += Streams[i].Size;
rlm@1 34 }
rlm@1 35
rlm@1 36 MY_UNKNOWN_IMP1(IInStream)
rlm@1 37
rlm@1 38 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
rlm@1 39 STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
rlm@1 40 };
rlm@1 41
rlm@1 42 /*
rlm@1 43 class COutMultiStream:
rlm@1 44 public IOutStream,
rlm@1 45 public CMyUnknownImp
rlm@1 46 {
rlm@1 47 int _streamIndex; // required stream
rlm@1 48 UInt64 _offsetPos; // offset from start of _streamIndex index
rlm@1 49 UInt64 _absPos;
rlm@1 50 UInt64 _length;
rlm@1 51
rlm@1 52 struct CSubStreamInfo
rlm@1 53 {
rlm@1 54 CMyComPtr<ISequentialOutStream> Stream;
rlm@1 55 UInt64 Size;
rlm@1 56 UInt64 Pos;
rlm@1 57 };
rlm@1 58 CObjectVector<CSubStreamInfo> Streams;
rlm@1 59 public:
rlm@1 60 CMyComPtr<IArchiveUpdateCallback2> VolumeCallback;
rlm@1 61 void Init()
rlm@1 62 {
rlm@1 63 _streamIndex = 0;
rlm@1 64 _offsetPos = 0;
rlm@1 65 _absPos = 0;
rlm@1 66 _length = 0;
rlm@1 67 }
rlm@1 68
rlm@1 69 MY_UNKNOWN_IMP1(IOutStream)
rlm@1 70
rlm@1 71 STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
rlm@1 72 STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
rlm@1 73 };
rlm@1 74 */
rlm@1 75
rlm@1 76 #endif