diff options
Diffstat (limited to '3rdparty/lzma/CPP/Windows/DLL.h')
-rw-r--r-- | 3rdparty/lzma/CPP/Windows/DLL.h | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/3rdparty/lzma/CPP/Windows/DLL.h b/3rdparty/lzma/CPP/Windows/DLL.h index 0c093eeddb6..19a82b33b89 100644 --- a/3rdparty/lzma/CPP/Windows/DLL.h +++ b/3rdparty/lzma/CPP/Windows/DLL.h @@ -1,20 +1,29 @@ // Windows/DLL.h -#ifndef __WINDOWS_DLL_H -#define __WINDOWS_DLL_H +#ifndef ZIP7_INC_WINDOWS_DLL_H +#define ZIP7_INC_WINDOWS_DLL_H #include "../Common/MyString.h" +#ifndef _WIN32 +typedef void * HMODULE; +// typedef int (*FARPROC)(); +// typedef void *FARPROC; +void *GetProcAddress(HMODULE module, LPCSTR procName); +#endif + namespace NWindows { namespace NDLL { #ifdef _WIN32 +/* #ifdef UNDER_CE #define My_GetProcAddress(module, procName) (void *)::GetProcAddressA(module, procName) #else #define My_GetProcAddress(module, procName) (void *)::GetProcAddress(module, procName) #endif +*/ /* Win32: Don't call CLibrary::Free() and FreeLibrary() from another FreeLibrary() code: detaching code in DLL entry-point or in @@ -24,13 +33,25 @@ class CLibrary { HMODULE _module; - // CLASS_NO_COPY(CLibrary); + // Z7_CLASS_NO_COPY(CLibrary); + // copy constructor is required here public: - CLibrary(): _module(NULL) {}; + CLibrary(): _module(NULL) {} ~CLibrary() { Free(); } - operator HMODULE() const { return _module; } - HMODULE* operator&() { return &_module; } + CLibrary(const CLibrary &c): _module(NULL) + { + if (c._module) + { + // we need non const to reference from original item + // c._module = NULL; + throw 20230102; + } + } + + HMODULE Get_HMODULE() const { return _module; } + // operator HMODULE() const { return _module; } + // HMODULE* operator&() { return &_module; } bool IsLoaded() const { return (_module != NULL); } void Attach(HMODULE m) @@ -40,7 +61,7 @@ public: } HMODULE Detach() { - HMODULE m = _module; + const HMODULE m = _module; _module = NULL; return m; } @@ -49,28 +70,26 @@ public: bool LoadEx(CFSTR path, DWORD flags = LOAD_LIBRARY_AS_DATAFILE) throw(); bool Load(CFSTR path) throw(); // FARPROC - void *GetProc(LPCSTR procName) const { return My_GetProcAddress(_module, procName); } + // void *GetProc(LPCSTR procName) const { return My_GetProcAddress(_module, procName); } }; #else -typedef void * HMODULE; -// typedef int (*FARPROC)(); -// typedef void *FARPROC; - class CLibrary { HMODULE _module; - // CLASS_NO_COPY(CLibrary); + // Z7_CLASS_NO_COPY(CLibrary); public: - CLibrary(): _module(NULL) {}; + CLibrary(): _module(NULL) {} ~CLibrary() { Free(); } + HMODULE Get_HMODULE() const { return _module; } + bool Free() throw(); bool Load(CFSTR path) throw(); // FARPROC - void *GetProc(LPCSTR procName) const; // { return My_GetProcAddress(_module, procName); } + // void *GetProc(LPCSTR procName) const; // { return My_GetProcAddress(_module, procName); } }; #endif |