[DEV] add v1.66.0

This commit is contained in:
2018-01-12 21:47:58 +01:00
parent 87059bb1af
commit a97e9ae7d4
49032 changed files with 7668950 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
// Copyright 2015 Antony Polukhin.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
// MinGW related workaround
#define BOOST_DLL_FORCE_ALIAS_INSTANTIATION
//[plugcpp_on_unload
#include <boost/dll/alias.hpp> // for BOOST_DLL_ALIAS
#include <boost/function.hpp>
#include <vector>
namespace my_namespace {
struct on_unload {
typedef boost::function<void()> callback_t;
typedef on_unload this_type;
~on_unload() {
for (std::size_t i = 0; i < callbacks_.size(); ++i) {
callback_t& function = callbacks_[i];
function(); // calling the callback
}
}
// not thread safe
static void add(const callback_t& function) {
static this_type instance;
instance.callbacks_.push_back(function);
}
private:
std::vector<callback_t> callbacks_;
on_unload() {} // prohibit construction outside of the `add` function
};
// Exporting the static "add" function with name "on_unload"
BOOST_DLL_ALIAS(my_namespace::on_unload::add, on_unload)
} // namespace my_namespace
//]

View File

@@ -0,0 +1,39 @@
// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
// Copyright 2015 Antony Polukhin.
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
#include "../b2_workarounds.hpp"
//[callplugcpp_tutorial6
#include <boost/dll/import.hpp>
#include <boost/function.hpp>
#include <iostream>
typedef boost::function<void()> callback_t;
void print_unloaded() {
std::cout << "unloaded" << std::endl;
}
int main(int argc, char* argv[]) {
// argv[1] contains full path to our plugin library
boost::filesystem::path shared_library_path = /*<-*/ b2_workarounds::first_lib_from_argv(argc, argv); /*->*/ //=argv[1];
// loading library and getting a function from it
boost::function<void(const callback_t&)> on_unload
= boost::dll::import_alias<void(const callback_t&)>(
shared_library_path, "on_unload"
);
on_unload(&print_unloaded); // adding a callback
std::cout << "Before library unload." << std::endl;
// Releasing last reference to the library, so that it gets unloaded
on_unload.clear();
std::cout << "After library unload." << std::endl;
}
//]