mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
37 lines
928 B
C
37 lines
928 B
C
// RegisterArc.h
|
|
|
|
#ifndef __REGISTERARC_H
|
|
#define __REGISTERARC_H
|
|
|
|
#include "../Archive/IArchive.h"
|
|
|
|
typedef IInArchive * (*CreateInArchiveP)();
|
|
typedef IOutArchive * (*CreateOutArchiveP)();
|
|
|
|
struct CArcInfo
|
|
{
|
|
const wchar_t *Name;
|
|
const wchar_t *Ext;
|
|
const wchar_t *AddExt;
|
|
Byte ClassId;
|
|
Byte Signature[16];
|
|
int SignatureSize;
|
|
bool KeepName;
|
|
CreateInArchiveP CreateInArchive;
|
|
CreateOutArchiveP CreateOutArchive;
|
|
};
|
|
|
|
void RegisterArc(const CArcInfo *arcInfo);
|
|
|
|
#define REGISTER_ARC_NAME(x) CRegister ## x
|
|
|
|
#define REGISTER_ARC_DEC_SIG(x) struct REGISTER_ARC_NAME(x) { \
|
|
REGISTER_ARC_NAME(x)() { g_ArcInfo.Signature[0]--; RegisterArc(&g_ArcInfo); }}; \
|
|
static REGISTER_ARC_NAME(x) g_RegisterArc;
|
|
|
|
#define REGISTER_ARC(x) struct REGISTER_ARC_NAME(x) { \
|
|
REGISTER_ARC_NAME(x)() { RegisterArc(&g_ArcInfo); }}; \
|
|
static REGISTER_ARC_NAME(x) g_RegisterArc;
|
|
|
|
#endif
|