Mir
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
server
mir
shared_library.h
Go to the documentation of this file.
1
/*
2
* Copyright © 2013 Canonical Ltd.
3
*
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License version 3,
6
* as published by the Free Software Foundation.
7
*
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15
*
16
* Authored by: Alan Griffiths <alan@octopull.co.uk>
17
*/
18
19
#ifndef MIR_SHARED_LIBRARY_H_
20
#define MIR_SHARED_LIBRARY_H_
21
22
#include <string>
23
24
namespace
mir
25
{
26
class
SharedLibrary
27
{
28
public
:
29
explicit
SharedLibrary
(
char
const
* library_name);
30
explicit
SharedLibrary
(std::string
const
& library_name);
31
~SharedLibrary
();
32
33
template
<
typename
FunctionPtr>
34
FunctionPtr
load_function
(
char
const
* function_name)
const
35
{
36
FunctionPtr result{};
37
(
void
*&)result = load_symbol(function_name);
38
return
result;
39
}
40
41
template
<
typename
FunctionPtr>
42
FunctionPtr
load_function
(std::string
const
& function_name)
const
43
{
44
return
load_function<FunctionPtr>(function_name.c_str());
45
}
46
private
:
47
void
*
const
so;
48
void
* load_symbol(
char
const
* function_name)
const
;
49
SharedLibrary
(
SharedLibrary
const
&) =
delete
;
50
SharedLibrary
& operator=(
SharedLibrary
const
&) =
delete
;
51
};
52
}
53
54
55
#endif
/* MIR_SHARED_LIBRARY_H_ */
Copyright © 2012,2013 Canonical Ltd.
Generated on Wed Oct 30 18:52:19 UTC 2013