Mercurial > irccd
annotate libirccd-daemon/irccd/daemon/dynlib_plugin.hpp @ 809:8460b4a34191
misc: reorganize namespaces, closes #952 @4h
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 16 Nov 2018 12:25:00 +0100 |
parents | libirccd/irccd/daemon/dynlib_plugin.hpp@ca16ca53c347 |
children | 49fa22f0b4b9 |
rev | line source |
---|---|
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
500
458e34f16c1f
Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
2 * dynlib_plugin.hpp -- native plugin implementation |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
628
27587ff92a64
Misc: update copyrights
David Demelier <markand@malikania.fr>
parents:
613
diff
changeset
|
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
603
986ed3a7575d
Misc: fix includes style, closes #732
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
19 #ifndef IRCCD_DAEMON_DYNLIB_PLUGIN_HPP |
986ed3a7575d
Misc: fix includes style, closes #732
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
20 #define IRCCD_DAEMON_DYNLIB_PLUGIN_HPP |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 /** |
613 | 23 * \file dynlib_plugin.hpp |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 * \brief Native plugin implementation. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 */ |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
790
ca16ca53c347
windows: many fixes under MinGW-w64
David Demelier <markand@malikania.fr>
parents:
789
diff
changeset
|
27 #define BOOST_DLL_FORCE_ALIAS_INSTANTIATION |
ca16ca53c347
windows: many fixes under MinGW-w64
David Demelier <markand@malikania.fr>
parents:
789
diff
changeset
|
28 #include <boost/dll.hpp> |
ca16ca53c347
windows: many fixes under MinGW-w64
David Demelier <markand@malikania.fr>
parents:
789
diff
changeset
|
29 |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 #include "plugin.hpp" |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
32 namespace irccd::daemon { |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 /** |
789
17367b6a99b4
doc: add lots of doxygen documentation
David Demelier <markand@malikania.fr>
parents:
773
diff
changeset
|
35 * \ingroup plugins |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 * \brief Implementation for searching native plugins. |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 */ |
500
458e34f16c1f
Irccd: rework native plugins, closes #707
David Demelier <markand@malikania.fr>
parents:
488
diff
changeset
|
38 class dynlib_plugin_loader : public plugin_loader { |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 public: |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
40 /** |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
41 * Constructor. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
42 * |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
43 * \param directories optional directories to search, if empty use defaults. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
44 */ |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
45 dynlib_plugin_loader(std::vector<std::string> directories = {}) noexcept; |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
47 /** |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
48 * \copydoc plugin_loader::open |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
49 */ |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
50 auto open(std::string_view id, std::string_view file) -> std::shared_ptr<plugin> override; |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 }; |
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
53 } // !irccd::daemon |
291
b490853404d9
Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 |
603
986ed3a7575d
Misc: fix includes style, closes #732
David Demelier <markand@malikania.fr>
parents:
596
diff
changeset
|
55 #endif // !IRCCD_DAEMON_DYNLIB_PLUGIN_HPP |