annotate src/win32/7zip/7z/CPP/7zip/Common/RegisterCodec.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 // RegisterCodec.h
rlm@1 2
rlm@1 3 #ifndef __REGISTERCODEC_H
rlm@1 4 #define __REGISTERCODEC_H
rlm@1 5
rlm@1 6 #include "../Common/MethodId.h"
rlm@1 7 #include "DeclareCodecs.h"
rlm@1 8
rlm@1 9 typedef void * (*CreateCodecP)();
rlm@1 10 struct CCodecInfo
rlm@1 11 {
rlm@1 12 CreateCodecP CreateDecoder;
rlm@1 13 CreateCodecP CreateEncoder;
rlm@1 14 CMethodId Id;
rlm@1 15 const wchar_t *Name;
rlm@1 16 UInt32 NumInStreams;
rlm@1 17 bool IsFilter;
rlm@1 18 };
rlm@1 19
rlm@1 20 void RegisterCodec(const CCodecInfo *codecInfo);
rlm@1 21
rlm@1 22 #define REGISTER_CODEC(x) CRegisterCodec##x::CRegisterCodec##x() { RegisterCodec(&g_CodecInfo); } \
rlm@1 23 CRegisterCodec##x g_RegisterCodec##x;
rlm@1 24
rlm@1 25 #define REGISTER_CODECS(x) CRegisterCodecs##x::CRegisterCodecs##x() { \
rlm@1 26 for(int i=0;i<sizeof(g_CodecsInfo)/sizeof(*g_CodecsInfo);i++) \
rlm@1 27 RegisterCodec(&g_CodecsInfo[i]); } \
rlm@1 28 CRegisterCodecs##x g_RegisterCodecs##x;
rlm@1 29
rlm@1 30 #endif