Index: third_party/lzma_sdk/C/MtCoder.h |
=================================================================== |
--- third_party/lzma_sdk/C/MtCoder.h (revision 0) |
+++ third_party/lzma_sdk/C/MtCoder.h (revision 0) |
@@ -0,0 +1,98 @@ |
+/* MtCoder.h -- Multi-thread Coder |
+2009-11-19 : Igor Pavlov : Public domain */ |
+ |
+#ifndef __MT_CODER_H |
+#define __MT_CODER_H |
+ |
+#include "Threads.h" |
+ |
+EXTERN_C_BEGIN |
+ |
+typedef struct |
+{ |
+ CThread thread; |
+ CAutoResetEvent startEvent; |
+ CAutoResetEvent finishedEvent; |
+ int stop; |
+ |
+ THREAD_FUNC_TYPE func; |
+ LPVOID param; |
+ THREAD_FUNC_RET_TYPE res; |
+} CLoopThread; |
+ |
+void LoopThread_Construct(CLoopThread *p); |
+void LoopThread_Close(CLoopThread *p); |
+WRes LoopThread_Create(CLoopThread *p); |
+WRes LoopThread_StopAndWait(CLoopThread *p); |
+WRes LoopThread_StartSubThread(CLoopThread *p); |
+WRes LoopThread_WaitSubThread(CLoopThread *p); |
+ |
+#ifndef _7ZIP_ST |
+#define NUM_MT_CODER_THREADS_MAX 32 |
+#else |
+#define NUM_MT_CODER_THREADS_MAX 1 |
+#endif |
+ |
+typedef struct |
+{ |
+ UInt64 totalInSize; |
+ UInt64 totalOutSize; |
+ ICompressProgress *progress; |
+ SRes res; |
+ CCriticalSection cs; |
+ UInt64 inSizes[NUM_MT_CODER_THREADS_MAX]; |
+ UInt64 outSizes[NUM_MT_CODER_THREADS_MAX]; |
+} CMtProgress; |
+ |
+SRes MtProgress_Set(CMtProgress *p, unsigned index, UInt64 inSize, UInt64 outSize); |
+ |
+struct _CMtCoder; |
+ |
+typedef struct |
+{ |
+ struct _CMtCoder *mtCoder; |
+ Byte *outBuf; |
+ size_t outBufSize; |
+ Byte *inBuf; |
+ size_t inBufSize; |
+ unsigned index; |
+ CLoopThread thread; |
+ |
+ Bool stopReading; |
+ Bool stopWriting; |
+ CAutoResetEvent canRead; |
+ CAutoResetEvent canWrite; |
+} CMtThread; |
+ |
+typedef struct |
+{ |
+ SRes (*Code)(void *p, unsigned index, Byte *dest, size_t *destSize, |
+ const Byte *src, size_t srcSize, int finished); |
+} IMtCoderCallback; |
+ |
+typedef struct _CMtCoder |
+{ |
+ size_t blockSize; |
+ size_t destBlockSize; |
+ unsigned numThreads; |
+ |
+ ISeqInStream *inStream; |
+ ISeqOutStream *outStream; |
+ ICompressProgress *progress; |
+ ISzAlloc *alloc; |
+ |
+ IMtCoderCallback *mtCallback; |
+ CCriticalSection cs; |
+ SRes res; |
+ |
+ CMtProgress mtProgress; |
+ CMtThread threads[NUM_MT_CODER_THREADS_MAX]; |
+} CMtCoder; |
+ |
+void MtCoder_Construct(CMtCoder* p); |
+void MtCoder_Destruct(CMtCoder* p); |
+SRes MtCoder_Code(CMtCoder *p); |
+ |
+EXTERN_C_END |
+ |
+#endif |
Property changes on: third_party\lzma_sdk\C\MtCoder.h |
___________________________________________________________________ |
Added: svn:executable |
+ * |
Added: svn:eol-style |
+ LF |