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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
0c7241258289 Docs: pet doxygen
David Demelier <markand@malikania.fr>
parents: 603
diff changeset
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