CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
rapid7

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

GitHub Repository: rapid7/metasploit-framework
Path: blob/master/external/source/vncdll/winvnc/DynamicFn.h
Views: 11779
1
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
2
* Copyright (C) 2007 Constantin Kaplinsky. All Rights Reserved.
3
*
4
* This is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
8
*
9
* This software is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this software; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17
* USA.
18
*/
19
20
// Helper class managing dynamic linkage to DLL functions.
21
22
#ifndef __RFB_WIN32_DYNAMICFN_H__
23
#define __RFB_WIN32_DYNAMICFN_H__
24
25
#include "stdhdrs.h"
26
27
class DynamicFnBase {
28
public:
29
DynamicFnBase(const TCHAR* dllName, const char* fnName);
30
~DynamicFnBase();
31
bool isValid() const {return fnPtr != 0;}
32
protected:
33
void* fnPtr;
34
HMODULE dllHandle;
35
private:
36
DynamicFnBase(const DynamicFnBase&);
37
DynamicFnBase operator=(const DynamicFnBase&);
38
};
39
40
template<class T> class DynamicFn : public DynamicFnBase {
41
public:
42
DynamicFn(const TCHAR* dllName, const char* fnName) : DynamicFnBase(dllName, fnName) {}
43
T operator *() const {return (T)fnPtr;};
44
};
45
46
#endif
47
48