annotate src/win32/7zip/7z/CPP/7zip/Common/RegisterArc.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 // RegisterArc.h
rlm@1 2
rlm@1 3 #ifndef __REGISTERARC_H
rlm@1 4 #define __REGISTERARC_H
rlm@1 5
rlm@1 6 #include "../Archive/IArchive.h"
rlm@1 7 #include "DeclareArcs.h"
rlm@1 8
rlm@1 9 typedef IInArchive * (*CreateInArchiveP)();
rlm@1 10 typedef IOutArchive * (*CreateOutArchiveP)();
rlm@1 11
rlm@1 12 struct CArcInfo
rlm@1 13 {
rlm@1 14 const wchar_t *Name;
rlm@1 15 const wchar_t *Ext;
rlm@1 16 const wchar_t *AddExt;
rlm@1 17 Byte ClassId;
rlm@1 18 Byte Signature[16];
rlm@1 19 int SignatureSize;
rlm@1 20 bool KeepName;
rlm@1 21 CreateInArchiveP CreateInArchive;
rlm@1 22 CreateOutArchiveP CreateOutArchive;
rlm@1 23 };
rlm@1 24
rlm@1 25 void RegisterArc(const CArcInfo *arcInfo);
rlm@1 26
rlm@1 27 #define REGISTER_ARC(x) CRegister##x::CRegister##x() { RegisterArc(&g_ArcInfo); } \
rlm@1 28 CRegister##x g_RegisterArc##x;
rlm@1 29
rlm@1 30 #define REGISTER_ARCN(x,n) CRegister##x##n::CRegister##x##n() { RegisterArc(&g_ArcInfo##n); } \
rlm@1 31 CRegister##x##n g_RegisterArc##n##x;
rlm@1 32
rlm@1 33 #endif