diff options
author | Giuseppe Gorgoglione <gorgogsp@gmail.com> | 2016-05-28 04:14:15 +0200 |
---|---|---|
committer | Giuseppe Gorgoglione <gorgogsp@gmail.com> | 2016-06-11 20:14:09 +0200 |
commit | 58dc78b6eba373d88fe7ef68f9ce3c2c43e635d6 (patch) | |
tree | 90af8c2c2323070c2c336153de8376d83a3f1f44 /src/osd/windows/winutil.h | |
parent | ea1b66f146e4c6663e06b124f8665f878c43ce0c (diff) |
Introduce dynamic_module
This is a central cross-platform facility to dynamically bind functions from shared libraries.
Updated all OSD modules to use it.
Diffstat (limited to 'src/osd/windows/winutil.h')
-rw-r--r-- | src/osd/windows/winutil.h | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/src/osd/windows/winutil.h b/src/osd/windows/winutil.h index d122679438e..2598a920864 100644 --- a/src/osd/windows/winutil.h +++ b/src/osd/windows/winutil.h @@ -18,160 +18,4 @@ osd_dir_entry_type win_attributes_to_entry_type(DWORD attributes); BOOL win_is_gui_application(void); HMODULE WINAPI GetModuleHandleUni(); -//----------------------------------------------------------- -// Lazy loaded function using LoadLibrary / GetProcAddress -//----------------------------------------------------------- - -class lazy_loaded_function -{ -private: - std::string m_name; - std::vector<std::wstring> m_dll_names; - HMODULE m_module; - bool m_initialized; - -protected: - void check_init() const; - FARPROC m_pfn; - -public: - lazy_loaded_function(const char * name, const wchar_t* dll_name); - lazy_loaded_function(const char * name, const wchar_t** dll_names, int dll_count); - ~lazy_loaded_function(); - int initialize(); - const char * name() const { return m_name.c_str(); } -}; - -// No parameters -template <class TRet> -class lazy_loaded_function_ret : public lazy_loaded_function -{ -public: - lazy_loaded_function_ret(const char * name, const wchar_t* dll_name) - : lazy_loaded_function(name, &dll_name, 1) - { - } - - lazy_loaded_function_ret(const char * name, const wchar_t** dll_names, int dll_count) - : lazy_loaded_function(name, dll_names, dll_count) - { - } - - TRet operator ()() - { - check_init(); - return ((TRet(__stdcall *) ())m_pfn)(); - } -}; - -// One parameter -template <class TRet, class P1> -class lazy_loaded_function_p1 : public lazy_loaded_function -{ -public: - lazy_loaded_function_p1(const char * name, const wchar_t* dll_name) - : lazy_loaded_function(name, &dll_name, 1) - { - } - - lazy_loaded_function_p1(const char * name, const wchar_t** dll_names, int dll_count) - : lazy_loaded_function(name, dll_names, dll_count) - { - } - - TRet operator ()(P1 p1) - { - check_init(); - return ((TRet(__stdcall *) (P1))m_pfn)(p1); - } -}; - -// Two parameters -template <class TRet, class P1, class P2> -class lazy_loaded_function_p2 : public lazy_loaded_function -{ -public: - lazy_loaded_function_p2(const char * name, const wchar_t* dll_name) - : lazy_loaded_function(name, &dll_name, 1) - { - } - - lazy_loaded_function_p2(const char * name, const wchar_t** dll_names, int dll_count) - : lazy_loaded_function(name, dll_names, dll_count) - { - } - - TRet operator ()(P1 p1, P2 p2) - { - check_init(); - return ((TRet(__stdcall *) (P1, P2))m_pfn)(p1, p2); - } -}; - -// Three parameters -template <class TRet, class P1, class P2, class P3> -class lazy_loaded_function_p3 : public lazy_loaded_function -{ -public: - lazy_loaded_function_p3(const char * name, const wchar_t* dll_name) - : lazy_loaded_function(name, &dll_name, 1) - { - } - - lazy_loaded_function_p3(const char * name, const wchar_t** dll_names, int dll_count) - : lazy_loaded_function(name, dll_names, dll_count) - { - } - - TRet operator ()(P1 p1, P2 p2, P3 p3) - { - check_init(); - return ((TRet(__stdcall *) (P1, P2, P3))m_pfn)(p1, p2, p3); - } -}; - -// Four parameters -template <class TRet, class P1, class P2, class P3, class P4> -class lazy_loaded_function_p4 : public lazy_loaded_function -{ -public: - lazy_loaded_function_p4(const char * name, const wchar_t* dll_name) - : lazy_loaded_function(name, &dll_name, 1) - { - } - - lazy_loaded_function_p4(const char * name, const wchar_t** dll_names, int dll_count) - : lazy_loaded_function(name, dll_names, dll_count) - { - } - - TRet operator ()(P1 p1, P2 p2, P3 p3, P4 p4) - { - check_init(); - return ((TRet(__stdcall *) (P1, P2, P3, P4))m_pfn)(p1, p2, p3, p4); - } -}; - -// Five parameters -template <class TRet, class P1, class P2, class P3, class P4, class P5> -class lazy_loaded_function_p5 : public lazy_loaded_function -{ -public: - lazy_loaded_function_p5(const char * name, const wchar_t* dll_name) - : lazy_loaded_function(name, &dll_name, 1) - { - } - - lazy_loaded_function_p5(const char * name, const wchar_t** dll_names, int dll_count) - : lazy_loaded_function(name, dll_names, dll_count) - { - } - - TRet operator ()(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) - { - check_init(); - return ((TRet(__stdcall *) (P1, P2, P3, P4, P5))m_pfn)(p1, p2, p3, p4, p5); - } -}; - #endif // __WINUTIL__ |