]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/dll/example/tutorial2/my_plugin_aggregator.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / dll / example / tutorial2 / my_plugin_aggregator.cpp
1 // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
2 // Copyright 2015 Antony Polukhin.
3 //
4 // Distributed under the Boost Software License, Version 1.0.
5 // (See accompanying file LICENSE_1_0.txt
6 // or copy at http://www.boost.org/LICENSE_1_0.txt)
7
8 #include <iostream>
9 #include <boost/make_shared.hpp>
10
11 // MinGW related workaround
12 #define BOOST_DLL_FORCE_ALIAS_INSTANTIATION
13
14 //[plugcpp_my_plugin_aggregator
15 #include <boost/dll/alias.hpp> // for BOOST_DLL_ALIAS
16 #include "../tutorial_common/my_plugin_api.hpp"
17
18 namespace my_namespace {
19
20 class my_plugin_aggregator : public my_plugin_api {
21 float aggr_;
22 my_plugin_aggregator() : aggr_(0) {}
23
24 public:
25 std::string name() const {
26 return "aggregator";
27 }
28
29 float calculate(float x, float y) {
30 aggr_ += x + y;
31 return aggr_;
32 }
33
34 // Factory method
35 static boost::shared_ptr<my_plugin_aggregator> create() {
36 return boost::shared_ptr<my_plugin_aggregator>(
37 new my_plugin_aggregator()
38 );
39 }
40 };
41
42
43 BOOST_DLL_ALIAS(
44 my_namespace::my_plugin_aggregator::create, // <-- this function is exported with...
45 create_plugin // <-- ...this alias name
46 )
47
48 } // namespace my_namespace
49 //]
50
51
52