mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-13 18:11:37 -06:00
4.45 beta
This commit is contained in:
committed by
Kornel Lesiński
parent
d9666cf046
commit
a145bfc7cf
@@ -97,7 +97,11 @@ SOURCE=..\Codec.def
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DllExports.cpp
|
||||
SOURCE=..\CodecExports.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\DllExports.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
@@ -121,5 +125,9 @@ SOURCE=.\ByteSwap.cpp
|
||||
|
||||
SOURCE=.\ByteSwap.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ByteSwapRegister.cpp
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
|
||||
17
CPP/7zip/Compress/ByteSwap/ByteSwapRegister.cpp
Executable file
17
CPP/7zip/Compress/ByteSwap/ByteSwapRegister.cpp
Executable file
@@ -0,0 +1,17 @@
|
||||
// ByteSwapRegister.cpp
|
||||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#include "../../Common/RegisterCodec.h"
|
||||
|
||||
#include "ByteSwap.h"
|
||||
static void *CreateCodec2() { return (void *)(ICompressFilter *)(new CByteSwap2); }
|
||||
static void *CreateCodec4() { return (void *)(ICompressFilter *)(new CByteSwap4); }
|
||||
|
||||
static CCodecInfo g_CodecsInfo[] =
|
||||
{
|
||||
{ CreateCodec2, CreateCodec4, 0x020302, L"Swap2", 1, true },
|
||||
{ CreateCodec4, CreateCodec4, 0x020304, L"Swap4", 1, true }
|
||||
};
|
||||
|
||||
REGISTER_CODECS(ByteSwap)
|
||||
@@ -1,91 +0,0 @@
|
||||
// DLLExports.cpp
|
||||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#include "Common/MyInitGuid.h"
|
||||
#include "Common/ComTry.h"
|
||||
#include "ByteSwap.h"
|
||||
#include "../../ICoder.h"
|
||||
|
||||
extern "C"
|
||||
BOOL WINAPI DllMain(HINSTANCE /* hInstance */, DWORD /* dwReason */, LPVOID /*lpReserved*/)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
STDAPI CreateObject(const GUID *clsid, const GUID *iid, void **outObject)
|
||||
{
|
||||
COM_TRY_BEGIN
|
||||
*outObject = 0;
|
||||
int correctInterface = (*iid == IID_ICompressFilter);
|
||||
CMyComPtr<ICompressFilter> coder;
|
||||
if (*clsid == CLSID_CCompressConvertByteSwap2)
|
||||
{
|
||||
if (!correctInterface)
|
||||
return E_NOINTERFACE;
|
||||
coder = (ICompressFilter *)new CByteSwap2();
|
||||
}
|
||||
else if (*clsid == CLSID_CCompressConvertByteSwap4)
|
||||
{
|
||||
if (!correctInterface)
|
||||
return E_NOINTERFACE;
|
||||
coder = (ICompressFilter *)new CByteSwap4();
|
||||
}
|
||||
else
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
*outObject = coder.Detach();
|
||||
COM_TRY_END
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
struct CSwapMethodInfo
|
||||
{
|
||||
char ID[3];
|
||||
const wchar_t *Name;
|
||||
const GUID *clsid;
|
||||
};
|
||||
|
||||
static CSwapMethodInfo g_Methods[] =
|
||||
{
|
||||
{ { 0x2, 0x03, 0x02 }, L"Swap2", &CLSID_CCompressConvertByteSwap2 },
|
||||
{ { 0x2, 0x03, 0x04 }, L"Swap4", &CLSID_CCompressConvertByteSwap4 }
|
||||
};
|
||||
|
||||
STDAPI GetNumberOfMethods(UINT32 *numMethods)
|
||||
{
|
||||
*numMethods = sizeof(g_Methods) / sizeof(g_Methods[1]);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDAPI GetMethodProperty(UINT32 index, PROPID propID, PROPVARIANT *value)
|
||||
{
|
||||
if (index > sizeof(g_Methods) / sizeof(g_Methods[1]))
|
||||
return E_INVALIDARG;
|
||||
::VariantClear((tagVARIANT *)value);
|
||||
const CSwapMethodInfo &method = g_Methods[index];
|
||||
switch(propID)
|
||||
{
|
||||
case NMethodPropID::kID:
|
||||
{
|
||||
if ((value->bstrVal = ::SysAllocStringByteLen(method.ID,
|
||||
sizeof(method.ID))) != 0)
|
||||
value->vt = VT_BSTR;
|
||||
return S_OK;
|
||||
}
|
||||
case NMethodPropID::kName:
|
||||
{
|
||||
if ((value->bstrVal = ::SysAllocString(method.Name)) != 0)
|
||||
value->vt = VT_BSTR;
|
||||
return S_OK;
|
||||
}
|
||||
case NMethodPropID::kDecoder:
|
||||
case NMethodPropID::kEncoder:
|
||||
{
|
||||
if ((value->bstrVal = ::SysAllocStringByteLen(
|
||||
(const char *)method.clsid, sizeof(GUID))) != 0)
|
||||
value->vt = VT_BSTR;
|
||||
return S_OK;
|
||||
}
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
@@ -3,21 +3,23 @@ DEF_FILE = ../Codec.def
|
||||
CFLAGS = $(CFLAGS) -I ../../../
|
||||
LIBS = $(LIBS) oleaut32.lib
|
||||
|
||||
SWAP_OBJS = \
|
||||
COMPRESS_OBJS = \
|
||||
$O\CodecExports.obj \
|
||||
$O\DllExports.obj \
|
||||
|
||||
SWAP_OPT_OBJS = \
|
||||
$O\ByteSwap.obj \
|
||||
$O\ByteSwapRegister.obj \
|
||||
|
||||
OBJS = \
|
||||
$O\StdAfx.obj \
|
||||
$(SWAP_OBJS) \
|
||||
$(COMPRESS_OBJS) \
|
||||
$(SWAP_OPT_OBJS) \
|
||||
$O\resource.res
|
||||
|
||||
!include "../../../Build.mak"
|
||||
|
||||
$(SWAP_OBJS): $(*B).cpp
|
||||
$(COMPRESS_OBJS): ../$(*B).cpp
|
||||
$(COMPL)
|
||||
$(SWAP_OPT_OBJS): $(*B).cpp
|
||||
$(COMPL_O2)
|
||||
|
||||
Reference in New Issue
Block a user