diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:41:18 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:43:11 +0900 |
commit | f763a99a501650eff2c60288aa6f10ef916d769e (patch) | |
tree | 02af7e13f9a38c888ebf340fe764cbe7dae99da9 /doc/html/boost_dll | |
parent | 5cde13f21d36c7224b0e13d11c4b49379ae5210d (diff) | |
download | boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.gz boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.bz2 boost-f763a99a501650eff2c60288aa6f10ef916d769e.zip |
Imported Upstream version 1.62.0upstream/1.62.0
Change-Id: I9d4c1ddb7b7d8f0069217ecc582700f9fda6dd4c
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'doc/html/boost_dll')
-rw-r--r-- | doc/html/boost_dll/acknowledgements.html | 10 | ||||
-rw-r--r-- | doc/html/boost_dll/dependencies.html | 10 | ||||
-rw-r--r-- | doc/html/boost_dll/design_rationale.html | 8 | ||||
-rw-r--r-- | doc/html/boost_dll/f_a_q_.html | 50 | ||||
-rw-r--r-- | doc/html/boost_dll/getting_started.html | 8 | ||||
-rw-r--r-- | doc/html/boost_dll/limitations.html | 25 | ||||
-rw-r--r-- | doc/html/boost_dll/mangled_import.html | 420 | ||||
-rw-r--r-- | doc/html/boost_dll/missuses.html | 24 | ||||
-rw-r--r-- | doc/html/boost_dll/reference.html | 160 | ||||
-rw-r--r-- | doc/html/boost_dll/revision_history.html | 16 | ||||
-rw-r--r-- | doc/html/boost_dll/tutorial.html | 36 |
11 files changed, 651 insertions, 116 deletions
diff --git a/doc/html/boost_dll/acknowledgements.html b/doc/html/boost_dll/acknowledgements.html index 9848f79876..9acafeb4ae 100644 --- a/doc/html/boost_dll/acknowledgements.html +++ b/doc/html/boost_dll/acknowledgements.html @@ -4,11 +4,11 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Acknowledgements</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> <link rel="prev" href="revision_history.html" title="Revision History"> -<link rel="next" href="../foreach.html" title="Chapter 11. Boost.Foreach"> +<link rel="next" href="../foreach.html" title="Chapter 12. Boost.Foreach"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table cellpadding="2" width="100%"><tr> @@ -30,7 +30,7 @@ <p> In order of helping and advising: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> Renato Tegon Forti for starting the <code class="computeroutput"><span class="identifier">shared_library</span></code> class and writing many code lines for Boost.DLL. @@ -61,7 +61,7 @@ </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> diff --git a/doc/html/boost_dll/dependencies.html b/doc/html/boost_dll/dependencies.html index 1bfea39bb7..5e86a49d0a 100644 --- a/doc/html/boost_dll/dependencies.html +++ b/doc/html/boost_dll/dependencies.html @@ -4,9 +4,9 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Dependencies</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> <link rel="prev" href="design_rationale.html" title="Design Rationale"> <link rel="next" href="revision_history.html" title="Revision History"> </head> @@ -31,7 +31,7 @@ The Boost.DLL is a header only library, but it depends on the following libraries and they must be available in order to compile programs that use Boost.DLL: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> Boost.System for the boost::system::error_code and boost::system::system_error classes. @@ -43,7 +43,7 @@ <p> Refcountable part of Boost.DLL also depends on: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> Boost.Function for creation of a callback system. </li> @@ -54,7 +54,7 @@ </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> diff --git a/doc/html/boost_dll/design_rationale.html b/doc/html/boost_dll/design_rationale.html index 72184bf698..e9eff1141f 100644 --- a/doc/html/boost_dll/design_rationale.html +++ b/doc/html/boost_dll/design_rationale.html @@ -4,9 +4,9 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Design Rationale</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> <link rel="prev" href="f_a_q_.html" title="F.A.Q."> <link rel="next" href="dependencies.html" title="Dependencies"> </head> @@ -27,7 +27,7 @@ <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="boost_dll.design_rationale"></a><a class="link" href="design_rationale.html" title="Design Rationale">Design Rationale</a> </h2></div></div></div> -<div class="toc"><dl> +<div class="toc"><dl class="toc"> <dt><span class="section"><a href="design_rationale.html#boost_dll.design_rationale.abi_portability_across_compilers">ABI portability across compilers</a></span></dt> <dt><span class="section"><a href="design_rationale.html#boost_dll.design_rationale.user_s_plugin_api">User's @@ -162,7 +162,7 @@ </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> diff --git a/doc/html/boost_dll/f_a_q_.html b/doc/html/boost_dll/f_a_q_.html index b8a0fa94db..bfe32fd470 100644 --- a/doc/html/boost_dll/f_a_q_.html +++ b/doc/html/boost_dll/f_a_q_.html @@ -4,9 +4,9 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>F.A.Q.</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> <link rel="prev" href="limitations.html" title="Limitations"> <link rel="next" href="design_rationale.html" title="Design Rationale"> </head> @@ -27,9 +27,9 @@ <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="boost_dll.f_a_q_"></a><a class="link" href="f_a_q_.html" title="F.A.Q.">F.A.Q.</a> </h2></div></div></div> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Is Boost.DLL thread-safe? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> Some platforms allow concurrent calls to <code class="computeroutput"><span class="identifier">dlopen</span></code> like functions. For those platforms Boost.DLL is safe in the manner as @@ -43,28 +43,28 @@ </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Why on Linux symbols from one plugin are seen in another? Can't get symbol with same name from right plugin! - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> You've run into the symbol shadowing problem. Compile your plugins with "-fvisibility=hidden" flag and take a look to the Tutorial section. </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> How Unicode (Windows) is handled? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> Boost.DLL supports Unicode, so that you could provide Unicode paths to it. </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Can I open an executable file? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> Yes, you can. Symbols need be exported using in the executable using <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_EXPORT</span></code> or <code class="computeroutput"><span class="identifier">BOOST_DLL_ALIAS</span></code>. @@ -75,11 +75,11 @@ </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> What if I specify wrong type in <code class="computeroutput"><span class="identifier">shared_library</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> or <code class="computeroutput"><span class="identifier">import</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> Usually you'll end up with <code class="computeroutput"><span class="identifier">Segmentation</span> <span class="identifier">Fault</span></code>. However it is safe to make types more strict, for example making @@ -89,10 +89,10 @@ </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Does your library guarantee ABI stability of methods? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> Library only guarantees that alias names created using the <code class="computeroutput"><span class="identifier">BOOST_DLL_ALIAS</span></code> macros will not change with the change of compiler or platform. You @@ -100,39 +100,39 @@ </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Are there any function signature restrictions for the exported/imported functions? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> No. You may import/export functions with any signature and any return parameter. </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> I have 2 plugins that use same shared library. Would be the shared library loaded twice? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> No. Pugins will share the shared library instance. </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> I have 2 plugins each of them must work with it's own version of <code class="computeroutput"><span class="identifier">libsome_library</span></code> shared library. How to achieve that? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> Avoid such situations by statically linking in the libsome_library into each plugin and loading plugins with <code class="computeroutput"><span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">rtld_deepbind</span></code>. </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> How to load a shared object from memory?? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> All existing OS avoid loading shared libraries directly from userspace memory, so you'll find no syscall for such case. Currently Boost.DLL provides no means for @@ -166,10 +166,10 @@ dependent. </p> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> I have found a bug, how do I notify? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> Create an <a href="https://github.com/apolukhin/Boost.DLL/issues" target="_top">issue at GitHub</a> with a detailed description. </li></ul></div> @@ -177,7 +177,7 @@ </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> diff --git a/doc/html/boost_dll/getting_started.html b/doc/html/boost_dll/getting_started.html index eb69d7f990..90714e7649 100644 --- a/doc/html/boost_dll/getting_started.html +++ b/doc/html/boost_dll/getting_started.html @@ -4,10 +4,10 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Getting started</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> -<link rel="prev" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> +<link rel="prev" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> <link rel="next" href="tutorial.html" title="Tutorial"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -211,7 +211,7 @@ </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> diff --git a/doc/html/boost_dll/limitations.html b/doc/html/boost_dll/limitations.html index 4e974af25b..a8a2b1f28b 100644 --- a/doc/html/boost_dll/limitations.html +++ b/doc/html/boost_dll/limitations.html @@ -4,10 +4,10 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Limitations</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> -<link rel="prev" href="../boost/dll/import_alias.html" title="Function import_alias"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> +<link rel="prev" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"> <link rel="next" href="f_a_q_.html" title="F.A.Q."> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -21,19 +21,20 @@ </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="../boost/dll/import_alias.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="f_a_q_.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="../boost/dll/experimental/import_mangled.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="f_a_q_.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="boost_dll.limitations"></a><a class="link" href="limitations.html" title="Limitations">Limitations</a> </h2></div></div></div> -<div class="toc"><dl> +<div class="toc"><dl class="toc"> <dt><span class="section"><a href="limitations.html#boost_dll.limitations.exporting_weak_symbols__fails_on_mingw__android_">Exporting weak symbols (Fails on MinGW, Android)</a></span></dt> <dt><span class="section"><a href="limitations.html#boost_dll.limitations.user_defined_section_names__fails_on_sunos___oracle_solaris_studio_compilers_">User defined section names (Fails on SunOS + Oracle Solaris Studio Compilers)</a></span></dt> <dt><span class="section"><a href="limitations.html#boost_dll.limitations.multithread">Thread safe library loading (Fails on FreeBSD, MacOS, iOS and some other)</a></span></dt> +<dt><span class="section"><a href="limitations.html#boost_dll.limitations.nested">Nested Function Definitions</a></span></dt> </dl></div> <p> Some platforms and compilers do not provide all the required functionality @@ -105,10 +106,20 @@ <p> </p> </div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_dll.limitations.nested"></a><a class="link" href="limitations.html#boost_dll.limitations.nested" title="Nested Function Definitions">Nested Function Definitions</a> +</h3></div></div></div> +<p> + If a function is defined inside the class-definition it may be interpreted + as always-inline which can lead to the function not being exported at all. + This does however differ between between compilers. + </p> +</div> </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> @@ -116,7 +127,7 @@ </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="../boost/dll/import_alias.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="f_a_q_.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="../boost/dll/experimental/import_mangled.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="f_a_q_.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> </body> </html> diff --git a/doc/html/boost_dll/mangled_import.html b/doc/html/boost_dll/mangled_import.html new file mode 100644 index 0000000000..cb2081690e --- /dev/null +++ b/doc/html/boost_dll/mangled_import.html @@ -0,0 +1,420 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Mangled Import</title> +<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> +<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> +<link rel="prev" href="tutorial.html" title="Tutorial"> +<link rel="next" href="missuses.html" title="Missuses"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table cellpadding="2" width="100%"><tr> +<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td> +<td align="center"><a href="../../../index.html">Home</a></td> +<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> +<td align="center"><a href="../../../more/index.htm">More</a></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="tutorial.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="missuses.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<div class="titlepage"><div><div><h2 class="title" style="clear: both"> +<a name="boost_dll.mangled_import"></a><a class="link" href="mangled_import.html" title="Mangled Import">Mangled Import</a> +</h2></div></div></div> +<div class="toc"><dl class="toc"> +<dt><span class="section"><a href="mangled_import.html#boost_dll.mangled_import.support___requirements">Support + & Requirements</a></span></dt> +<dt><span class="section"><a href="mangled_import.html#boost_dll.mangled_import.mangled_import_example">Mangled + Import Example</a></span></dt> +<dt><span class="section"><a href="mangled_import.html#boost_dll.mangled_import.class_import">Class Import</a></span></dt> +<dt><span class="section"><a href="mangled_import.html#boost_dll.mangled_import.overloading_qualifiers">Overloading + qualifiers</a></span></dt> +</dl></div> +<p> + This section describes the experimental feature of allowing the import of mangled + symbols from an dll. While this feature is unique to this library and looks + quite promising, it is not throroughly tested and thus not considered stable. + </p> +<p> + As a short example we can import the following functions quite easily: + </p> +<p> +</p> +<pre class="programlisting"><span class="comment">//library.dll</span> +<span class="keyword">namespace</span> <span class="identifier">foo</span> <span class="special">{</span> +<span class="keyword">int</span> <span class="identifier">bar</span><span class="special">(</span><span class="keyword">int</span><span class="special">);</span> +<span class="keyword">double</span> <span class="identifier">bar</span><span class="special">(</span><span class="keyword">double</span><span class="special">);</span> +<span class="special">}</span> +</pre> +<p> + </p> +<p> + And the import looks like this: + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">f1</span> <span class="special">=</span> <span class="identifier">import_mangled</span><span class="special"><</span><span class="keyword">int</span><span class="special">(</span><span class="keyword">int</span><span class="special">)>(</span><span class="string">"library.dll"</span><span class="special">,</span> <span class="string">"foo::bar"</span><span class="special">);</span> +<span class="keyword">auto</span> <span class="identifier">f2</span> <span class="special">=</span> <span class="identifier">import_mangled</span><span class="special"><</span><span class="keyword">double</span><span class="special">(</span><span class="keyword">double</span><span class="special">)>(</span><span class="string">"library.dll"</span><span class="special">,</span> <span class="string">"foo::bar"</span><span class="special">);</span> +<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">f1</span><span class="special">(</span><span class="number">42</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> +<span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">f2</span><span class="special">(</span><span class="number">3.2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> +</pre> +<p> + </p> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_dll.mangled_import.support___requirements"></a><a class="link" href="mangled_import.html#boost_dll.mangled_import.support___requirements" title="Support & Requirements">Support + & Requirements</a> +</h3></div></div></div> +<p> + Currently, the Itanium ABI and the MSVC ABI are implemented. The MSVC ABI + requires boost.spirit.x3 support, allowing only the usage of MSVC 2015. The + Itanium API requires C++11. + </p> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> +<li class="listitem"> + Gcc + </li> +<li class="listitem"> + Clang + </li> +<li class="listitem"> + MSVC 2015 + </li> +<li class="listitem"> + Intel C++ + </li> +</ul></div> +<p> + The Itanium API does not import the return type of functions, nor the type + of global variables. + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_dll.mangled_import.mangled_import_example"></a><a class="link" href="mangled_import.html#boost_dll.mangled_import.mangled_import_example" title="Mangled Import Example">Mangled + Import Example</a> +</h3></div></div></div> +<p> + The core of the mangled import is the <code class="computeroutput">smart_library</code> + class. It can import functions and variables in their mangled form; to do + this, the smart_library reads the entire outline of the library and demangles + every entry point in it. That also means, that this class should only be + constructed once. + </p> +<p> + In order to import all the methods in the following library, we will use + the <code class="computeroutput">smart_library</code> . + </p> +<p> + The first thing to do when creating your own plugins is define the plugin + interface. There is an example of an abstract class that will be our plugin + API: + </p> +<p> +</p> +<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span> + +<span class="keyword">namespace</span> <span class="identifier">space</span> <span class="special">{</span> + +<span class="keyword">class</span> <span class="identifier">BOOST_SYMBOL_EXPORT</span> <span class="identifier">my_plugin</span> +<span class="special">{</span> + <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">_name</span><span class="special">;</span> +<span class="keyword">public</span><span class="special">:</span> + <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">name</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> + <span class="keyword">float</span> <span class="identifier">calculate</span><span class="special">(</span><span class="keyword">float</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">float</span> <span class="identifier">y</span><span class="special">);</span> + <span class="keyword">int</span> <span class="identifier">calculate</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">y</span><span class="special">);</span> + <span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">();</span> + <span class="identifier">my_plugin</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> <span class="identifier">name</span><span class="special">);</span> + <span class="identifier">my_plugin</span><span class="special">();</span> + <span class="special">~</span><span class="identifier">my_plugin_api</span><span class="special">();</span> + <span class="keyword">static</span> <span class="keyword">int</span> <span class="identifier">value</span><span class="special">;</span> +<span class="special">};</span> + +<span class="special">}</span> +</pre> +<p> + </p> +<p> + Alright, now we have the defintion for the plugin, so we use it in the following + full-fleshed example. Mind that there is a more convenient solution to import + member-functions which will be discussed later on. This example shows however + what the <code class="computeroutput">smart_lib</code> provides as features. + </p> +<p> + At first we setup the smart library. Mind that the alias class is needed + to provide a type-alias for the my_plugin. + </p> +<p> +</p> +<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">dll</span><span class="special">/</span><span class="identifier">smart_library</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <span class="comment">// for import_alias</span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">memory</span><span class="special">></span> + +<span class="keyword">namespace</span> <span class="identifier">dll</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">;</span> + +<span class="keyword">struct</span> <span class="identifier">alias</span><span class="special">;</span> + +<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span> <span class="special">{</span> + + <span class="identifier">boost</span><span class="special">::</span><span class="identifier">filesystem</span><span class="special">::</span><span class="identifier">path</span> <span class="identifier">lib_path</span><span class="special">(</span><span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]);</span> <span class="comment">// argv[1] contains path to directory with our plugin library</span> + <span class="identifier">dll</span><span class="special">::</span><span class="identifier">smart_lib</span> <span class="identifier">lib</span><span class="special">(</span><span class="identifier">lib_path</span><span class="special">);</span> <span class="comment">// smart library instance</span> +</pre> +<p> + </p> +<p> + In order to create the class, we will need to allocate memory. That of course + means, that we need to know the size; unfortunately it is not exported into + the dll, so we added the static size function for export. Static are used + as plain functions. + </p> +<p> + So we import it, call it and allocate memory. + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">size_f</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">get_function</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">()>(</span><span class="string">"space::my_plugin::size"</span><span class="special">);</span> <span class="comment">//get the size function</span> + +<span class="keyword">auto</span> <span class="identifier">size</span> <span class="special">=</span> <span class="identifier">size_f</span><span class="special">();</span> <span class="comment">// get the size of the class</span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">unique_ptr</span><span class="special"><</span><span class="keyword">char</span><span class="special">[],</span> <span class="identifier">size</span><span class="special">></span> <span class="identifier">buffer</span><span class="special">(</span><span class="keyword">new</span> <span class="keyword">char</span><span class="special">[</span><span class="identifier">size</span><span class="special">]);</span> <span class="comment">//allocate a buffer for the import</span> +<span class="identifier">alias</span> <span class="special">&</span> <span class="identifier">inst</span> <span class="special">=</span> <span class="special">*</span><span class="keyword">reinterpret_cast</span><span class="special"><</span><span class="identifier">alias</span><span class="special">*>(</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">get</span><span class="special">());</span> <span class="comment">//cast it to our alias type.</span> +</pre> +<p> + </p> +<p> + Now, we have the memory size and a reference with our alias type. In order + to use it, we need to register the type as an alias. That will allow the + smart library to resolve the type name. + </p> +<p> +</p> +<pre class="programlisting"><span class="identifier">lib</span><span class="special">.</span><span class="identifier">add_type_alias</span><span class="special">(</span><span class="string">"space::my_plugin"</span><span class="special">);</span> <span class="comment">//add an alias, so i can import a class that is not declared here</span> +</pre> +<p> + </p> +<p> + In order to use the class, we of course need to initialize it, i.e. call + the constructor. The Itanium ABI may also implement an allocating constructor. + That is why a constructor may have two functions; since we already have allocated + the memory we use the standard constructor version, of the constructor from + string. So we select the constructor by passing the signature. + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">ctor</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">get_constructor</span><span class="special"><</span><span class="identifier">alias</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&)>();</span> <span class="comment">//get the constructor</span> +<span class="identifier">ctor</span><span class="special">.</span><span class="identifier">call_standard</span><span class="special">(&</span><span class="identifier">inst</span><span class="special">,</span> <span class="string">"MyName"</span><span class="special">);</span> <span class="comment">//call the non-allocating constructor. The allocating-constructor is a non-portable feature</span> +</pre> +<p> + </p> +<p> + So since the class is now initialized, we can call the name method. If the + function is const and/or volatile the type parameter passed as type must + have the same qualifiers. + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">name_f</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">get_mem_fn</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">alias</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">()>(</span><span class="string">"name"</span><span class="special">);//</span><span class="identifier">import</span> <span class="identifier">the</span> <span class="identifier">name</span> <span class="identifier">function</span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Name Call: "</span> <span class="special"><<</span> <span class="special">(</span><span class="identifier">inst</span><span class="special">.*</span><span class="identifier">name_f</span><span class="special">)()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> +</pre> +<p> + </p> +<p> + Overloaded functions can only be imported seperately. + </p> +<p> +</p> +<pre class="programlisting"><span class="comment">//import both calculate functions</span> +<span class="keyword">auto</span> <span class="identifier">calc_f</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">get_mem_fn</span><span class="special"><</span><span class="identifier">alias</span><span class="special">,</span> <span class="keyword">float</span><span class="special">(</span><span class="keyword">float</span><span class="special">,</span> <span class="keyword">float</span><span class="special">)>(</span><span class="string">"calculate"</span><span class="special">);</span> +<span class="keyword">auto</span> <span class="identifier">calc_i</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">get_mem_fn</span><span class="special"><</span><span class="identifier">alias</span><span class="special">,</span> <span class="keyword">int</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">int</span><span class="special">)></span> <span class="special">(</span><span class="string">"calculate"</span><span class="special">);</span> + +<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"calc(float): "</span> <span class="special"><<</span> <span class="special">(</span><span class="identifier">inst</span><span class="special">.*</span><span class="identifier">calc_f</span><span class="special">)(</span><span class="number">5.</span><span class="special">,</span> <span class="number">2.</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"calc(int) : "</span> <span class="special"><<</span> <span class="special">(</span><span class="identifier">inst</span><span class="special">.*</span><span class="identifier">calc_f</span><span class="special">)(</span><span class="number">5</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> +</pre> +<p> + </p> +<p> + Import of static variable is done like with plain variable. + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="special">&</span> <span class="identifier">var</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">get_variable</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="string">"space::my_plugin::value"</span><span class="special">);</span> +<span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"value "</span> <span class="special"><<</span> <span class="identifier">var</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> +</pre> +<p> + </p> +<p> + Since we are finished, we call the desctructor of the class. + </p> +<p> +</p> +<pre class="programlisting"> <span class="keyword">auto</span> <span class="identifier">dtor</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">get_destructor</span><span class="special"><</span><span class="identifier">alias</span><span class="special">>();</span> <span class="comment">//get the destructor</span> + <span class="identifier">dtor</span><span class="special">.</span><span class="identifier">call_standard</span><span class="special">(&</span><span class="identifier">inst</span><span class="special">);</span> + <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"plugin->calculate(1.5, 1.5) call: "</span> <span class="special"><<</span> <span class="identifier">plugin</span><span class="special">-></span><span class="identifier">calculate</span><span class="special">(</span><span class="number">1.5</span><span class="special">,</span> <span class="number">1.5</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> +<span class="special">}</span> +</pre> +<p> + </p> +<p> + <a class="link" href="mangled_import.html" title="Mangled Import">Back to the Top</a> + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_dll.mangled_import.class_import"></a><a class="link" href="mangled_import.html#boost_dll.mangled_import.class_import" title="Class Import">Class Import</a> +</h3></div></div></div> +<p> + Now it is demonstrated, how mangled and methods may be imported. This is + however a rather versatile way, so an easier interface is provided, which + also allows access to the type_info of an object. + </p> +<p> + We will take the same class and import the same methods, but do it with the + import features. + </p> +<p> + We put the library into a shared_pointer, because every import will hold + such a pointer to it. That is, we do not want to copy it. + </p> +<p> +</p> +<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">dll</span><span class="special">/</span><span class="identifier">smart_library</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">dll</span><span class="special">/</span><span class="identifier">import_mangled</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">dll</span><span class="special">/</span><span class="identifier">import_class</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> + + + +<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span> <span class="special">{</span> + + <span class="identifier">boost</span><span class="special">::</span><span class="identifier">filesystem</span><span class="special">::</span><span class="identifier">path</span> <span class="identifier">lib_path</span><span class="special">(</span><span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]);</span> <span class="comment">// argv[1] contains path to directory with our plugin library</span> + <span class="identifier">smart_library</span> <span class="identifier">lib</span><span class="special">(</span><span class="identifier">lib_path</span><span class="special">);//</span> <span class="identifier">smart</span> <span class="identifier">library</span> <span class="identifier">instance</span> +</pre> +<p> + </p> +<p> + Similar to the previous example, we need the size of the class. + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">size_f</span> <span class="special">=</span> <span class="identifier">import_mangled</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">()>(</span><span class="string">"space::my_plugin::size"</span><span class="special">);</span> <span class="comment">//get the size function</span> + +<span class="keyword">auto</span> <span class="identifier">size</span> <span class="special">=</span> <span class="special">(*</span><span class="identifier">size_f</span><span class="special">)();</span> <span class="comment">// get the size of the class</span> +</pre> +<p> + </p> +<p> + On a side note, we can also import variable easily with that function. + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">value</span> <span class="special">=</span> <span class="identifier">import_mangled</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">lib</span><span class="special">,</span> <span class="string">"space::my_plugin::value"</span><span class="special">);</span> +</pre> +<p> + </p> +<p> + We do the forward declaration on the first call, and invoke the constructor + directly. This is quite simple and allows to invoke the constructor directly. + The destructor will be invoked automatically. + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">cl</span> <span class="special">=</span> <span class="identifier">import_class</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">alias</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&>(</span><span class="identifier">lib</span><span class="special">,</span> <span class="string">"space::my_plugin::some_class"</span><span class="special">,</span> <span class="identifier">size</span><span class="special">,</span> <span class="string">"MyName"</span><span class="special">);</span> +</pre> +<p> + </p> +<p> + Invoking a function will still require to import it first. + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">name</span> <span class="special">=</span> <span class="identifier">import_mangled</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">alias</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">()>(</span><span class="identifier">lib</span><span class="special">,</span> <span class="string">"name"</span><span class="special">);</span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Name: "</span> <span class="special"><<</span> <span class="special">(</span><span class="identifier">cl</span><span class="special">->*</span><span class="identifier">name</span><span class="special">)()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> +</pre> +<p> + </p> +<p> + For overloaded functions, we can import them as groups, which will give us + an object containing the overloads. + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">calc</span> <span class="special">=</span> <span class="identifier">import_mangled</span><span class="special"><</span><span class="identifier">alias</span><span class="special">,</span> <span class="keyword">float</span><span class="special">(</span><span class="keyword">float</span><span class="special">,</span> <span class="keyword">float</span><span class="special">),</span> <span class="keyword">int</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">int</span><span class="special">)>(</span><span class="identifier">lib</span><span class="special">,</span> <span class="string">"calculate"</span><span class="special">);</span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Calc(float): "</span> <span class="special">(</span><span class="identifier">cl</span><span class="special">->*</span><span class="identifier">calc</span><span class="special">)(</span><span class="number">5.f</span><span class="special">,</span> <span class="number">2.f</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Calc(int): "</span> <span class="special">(</span><span class="identifier">cl</span><span class="special">->*</span><span class="identifier">calc</span><span class="special">)(</span><span class="number">5</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> +</pre> +<p> + </p> +<p> + Additionally, we can access the typeinfo like this. + </p> +<p> +</p> +<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">type_info</span> <span class="special">&</span><span class="identifier">ti</span> <span class="special">=</span> <span class="identifier">cl</span><span class="special">.</span><span class="identifier">get_type_info</span><span class="special">();</span> +</pre> +<p> + </p> +<p> + <a class="link" href="mangled_import.html" title="Mangled Import">Back to the Top</a> + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_dll.mangled_import.overloading_qualifiers"></a><a class="link" href="mangled_import.html#boost_dll.mangled_import.overloading_qualifiers" title="Overloading qualifiers">Overloading + qualifiers</a> +</h3></div></div></div> +<p> + Not handled in the example was the question, of how it is handled if the + qualification differs for an overloaded function. This can be done, by passing + the class again with another qualification - a function signature will always + pick the last one provided. + </p> +<p> + If we have this in our plugin: +</p> +<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">plugin</span> +<span class="special">{</span> + <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">int</span><span class="special">);</span> + <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">double</span><span class="special">);</span> + <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + <span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> + <span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="keyword">volatile</span><span class="special">;</span> + <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="keyword">volatile</span><span class="special">;</span> + <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">double</span><span class="special">);</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">;</span> +<span class="special">};</span> +</pre> +<p> + </p> +<p> + we can import them all at once, with the following command: + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">f</span> <span class="special">=</span> <span class="identifier">import_class</span><span class="special"><</span> + <span class="identifier">alias</span><span class="special">,</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">int</span><span class="special">),</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">double</span><span class="special">),</span> <span class="comment">//not qualified</span> + <span class="keyword">const</span> <span class="identifier">alias</span><span class="special">,</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">int</span><span class="special">),</span> <span class="identifier">f</span><span class="special">(),</span> <span class="comment">//const</span> + <span class="keyword">volatile</span> <span class="identifier">alias</span><span class="special">,</span> <span class="identifier">f</span><span class="special">(),</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">int</span><span class="special">),</span> <span class="comment">//volatile</span> + <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="identifier">alias</span><span class="special">,</span> <span class="identifier">f</span><span class="special">(</span><span class="keyword">double</span><span class="special">)//</span><span class="keyword">const</span> <span class="keyword">volatile</span> + <span class="special">>(</span><span class="identifier">lib</span><span class="special">,</span> <span class="string">"f"</span><span class="special">);</span> +</pre> +<p> + </p> +</div> +</div> +<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> +<td align="left"></td> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> + 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) + </p> +</div></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="tutorial.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="missuses.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/html/boost_dll/missuses.html b/doc/html/boost_dll/missuses.html index 6b7f29dd63..45c08ffe28 100644 --- a/doc/html/boost_dll/missuses.html +++ b/doc/html/boost_dll/missuses.html @@ -4,10 +4,10 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Missuses</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> -<link rel="prev" href="tutorial.html" title="Tutorial"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> +<link rel="prev" href="mangled_import.html" title="Mangled Import"> <link rel="next" href="reference.html" title="Reference"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -21,7 +21,7 @@ </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="tutorial.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="mangled_import.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> @@ -37,7 +37,7 @@ this will save a lot of debugging time! </p></td></tr> </table></div> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <span class="bold"><strong>Issue:</strong></span> Program crashes on <code class="computeroutput"><span class="keyword">delete</span></code> or <code class="computeroutput"><span class="identifier">free</span><span class="special">()</span></code>. </li> @@ -49,7 +49,7 @@ </li> </ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <span class="bold"><strong>Issue:</strong></span> Program crashes in <code class="computeroutput"><span class="keyword">catch</span><span class="special">(...)</span></code> block. @@ -82,7 +82,7 @@ </li> </ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <span class="bold"><strong>Issue:</strong></span> Thread local storage seems to be corrupted. @@ -94,7 +94,7 @@ </li> </ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <span class="bold"><strong>Issue:</strong></span> Attempt to call a loaded function crashes or function returns incorrect result. @@ -107,7 +107,7 @@ </li> </ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <span class="bold"><strong>Issue:</strong></span> Program crashes after plugin unload. </li> @@ -142,7 +142,7 @@ </li> <li class="listitem"> <span class="bold"><strong>Typical classes that cause such errors are:</strong></span> - <div class="itemizedlist"><ul class="itemizedlist" type="circle"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> <li class="listitem"> <code class="computeroutput"><span class="identifier">any</span></code> </li> @@ -179,7 +179,7 @@ </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> @@ -187,7 +187,7 @@ </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="tutorial.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="mangled_import.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> </body> </html> diff --git a/doc/html/boost_dll/reference.html b/doc/html/boost_dll/reference.html index a050a599ec..070a18f1d9 100644 --- a/doc/html/boost_dll/reference.html +++ b/doc/html/boost_dll/reference.html @@ -4,9 +4,9 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Reference</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> <link rel="prev" href="missuses.html" title="Missuses"> <link rel="next" href="../BOOST_DLL_FORCE_ALIAS_INSTANTIATION.html" title="Macro BOOST_DLL_FORCE_ALIAS_INSTANTIATION"> </head> @@ -27,14 +27,14 @@ <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="boost_dll.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a> </h2></div></div></div> -<div class="toc"><dl> +<div class="toc"><dl class="toc"> <dt><span class="section"><a href="reference.html#shared_library_reference">Shared Library Reference</a></span></dt> <dt><span class="section"><a href="reference.html#shared_library_refcountable_reference">Shared Library Refcountable Reference</a></span></dt> </dl></div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="shared_library_reference"></a>Shared Library Reference</h3></div></div></div> -<div class="toc"><dl> +<div class="toc"><dl class="toc"> <dt><span class="section"><a href="reference.html#header.boost.dll.alias_hpp">Header <boost/dll/alias.hpp></a></span></dt> <dt><span class="section"><a href="reference.html#header.boost.dll.library_info_hpp">Header <boost/dll/library_info.hpp></a></span></dt> <dt><span class="section"><a href="reference.html#header.boost.dll.runtime_symbol_info_hpp">Header <boost/dll/runtime_symbol_info.hpp></a></span></dt> @@ -44,7 +44,7 @@ </dl></div> <div class="section"> <div class="titlepage"><div><div><h4 class="title"> -<a name="header.boost.dll.alias_hpp"></a>Header <<a href="../../../boost/dll/alias.hpp" target="_top">boost/dll/alias.hpp</a>></h4></div></div></div> +<a name="header.boost.dll.alias_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_60_0/boost/dll/alias.hpp" target="_top">boost/dll/alias.hpp</a>></h4></div></div></div> <p>Includes alias methods and macro. You can include this header or boost/dll/shared_library.hpp to reduce dependencies in case you do not use the refcountable functions. </p> <pre class="synopsis"> @@ -58,7 +58,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h4 class="title"> -<a name="header.boost.dll.library_info_hpp"></a>Header <<a href="../../../boost/dll/library_info.hpp" target="_top">boost/dll/library_info.hpp</a>></h4></div></div></div> +<a name="header.boost.dll.library_info_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_60_0/boost/dll/library_info.hpp" target="_top">boost/dll/library_info.hpp</a>></h4></div></div></div> <p>Contains only the <a class="link" href="../boost/dll/library_info.html" title="Class library_info">boost::dll::library_info</a> class that is capable of extracting different information from binaries. </p> <pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">dll</span> <span class="special">{</span> @@ -68,7 +68,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h4 class="title"> -<a name="header.boost.dll.runtime_symbol_info_hpp"></a>Header <<a href="../../../boost/dll/runtime_symbol_info.hpp" target="_top">boost/dll/runtime_symbol_info.hpp</a>></h4></div></div></div> +<a name="header.boost.dll.runtime_symbol_info_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_60_0/boost/dll/runtime_symbol_info.hpp" target="_top">boost/dll/runtime_symbol_info.hpp</a>></h4></div></div></div> <p>Provides methods for getting acceptable by <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">boost::dll::shared_library</a> location of symbol, source line or program. </p> <pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">dll</span> <span class="special">{</span> @@ -85,29 +85,29 @@ </div> <div class="section"> <div class="titlepage"><div><div><h4 class="title"> -<a name="header.boost.dll.shared_library_hpp"></a>Header <<a href="../../../boost/dll/shared_library.hpp" target="_top">boost/dll/shared_library.hpp</a>></h4></div></div></div> +<a name="header.boost.dll.shared_library_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_60_0/boost/dll/shared_library.hpp" target="_top">boost/dll/shared_library.hpp</a>></h4></div></div></div> <p>Contains the <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">boost::dll::shared_library</a> class, core class for all the DLL/DSO operations. </p> <pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">dll</span> <span class="special">{</span> <span class="keyword">class</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a><span class="special">;</span> <span class="comment">// Very fast equality check that compares the actual DLL/DSO objects. Throws nothing. </span> - <span class="keyword">bool</span> <a name="boost.dll.operator==_idp77511168"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> + <span class="keyword">bool</span> <a name="boost.dll.operator_idm45899629161264"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> <span class="comment">// Very fast inequality check that compares the actual DLL/DSO objects. Throws nothing. </span> - <span class="keyword">bool</span> <a name="boost.dll.operator!=_idp87040208"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> + <span class="keyword">bool</span> <a name="boost.dll.operator_idm45899629157792"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> <span class="comment">// Compare the actual DLL/DSO objects without any guarantee to be stable between runs. Throws nothing. </span> - <span class="keyword">bool</span> <a name="boost.dll.operator_idp87043584"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> + <span class="keyword">bool</span> <a name="boost.dll.operator_idm45899629154320"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> <span class="comment">// Swaps two shared libraries. Does not invalidate symbols and functions loaded from libraries. Throws nothing. </span> - <span class="keyword">void</span> <a name="boost.dll.swap_idp87047072"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lhs<span class="special">,</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> + <span class="keyword">void</span> <a name="boost.dll.swap_idm45899629150832"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lhs<span class="special">,</span> <a class="link" href="../boost/dll/shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> <span class="special">}</span> <span class="special">}</span></pre> </div> <div class="section"> <div class="titlepage"><div><div><h4 class="title"> -<a name="header.boost.dll.shared_library_load_mode_hpp"></a>Header <<a href="../../../boost/dll/shared_library_load_mode.hpp" target="_top">boost/dll/shared_library_load_mode.hpp</a>></h4></div></div></div> +<a name="header.boost.dll.shared_library_load_mode_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_60_0/boost/dll/shared_library_load_mode.hpp" target="_top">boost/dll/shared_library_load_mode.hpp</a>></h4></div></div></div> <p>Contains only the boost::dll::load_mode::type enum and operators related to it. </p> <pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">dll</span> <span class="special">{</span> @@ -115,20 +115,20 @@ <span class="keyword">enum</span> <a class="link" href="../boost/dll/load_mode/type.html" title="Type type">type</a><span class="special">;</span> <span class="comment">// Free operators for load_mode::type flag manipulation. </span> - <span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">type</span> <a name="boost.dll.load_mode.operator_idp71035728"></a><span class="keyword">operator</span><span class="special">|</span><span class="special">(</span><span class="identifier">type</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> - <span class="identifier">BOOST_CXX14_CONSTEXPR</span> <span class="identifier">type</span> <span class="special">&</span> <a name="boost.dll.load_mode.operator_=_idp71038208"></a><span class="keyword">operator</span><span class="special">|=</span><span class="special">(</span><span class="identifier">type</span> <span class="special">&</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> - <span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">type</span> <a name="boost.dll.load_mode.operator&_idp71040448"></a><span class="keyword">operator</span><span class="special">&</span><span class="special">(</span><span class="identifier">type</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> - <span class="identifier">BOOST_CXX14_CONSTEXPR</span> <span class="identifier">type</span> <span class="special">&</span> <a name="boost.dll.load_mode.operator&=_idp15251712"></a><span class="keyword">operator</span><span class="special">&=</span><span class="special">(</span><span class="identifier">type</span> <span class="special">&</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> - <span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">type</span> <a name="boost.dll.load_mode.operator%5E_idp15253952"></a><span class="keyword">operator</span><span class="special">^</span><span class="special">(</span><span class="identifier">type</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> - <span class="identifier">BOOST_CXX14_CONSTEXPR</span> <span class="identifier">type</span> <span class="special">&</span> <a name="boost.dll.load_mode.operator%5E=_idp15256176"></a><span class="keyword">operator</span><span class="special">^=</span><span class="special">(</span><span class="identifier">type</span> <span class="special">&</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> - <span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">type</span> <a name="boost.dll.load_mode.operator~_idp67698784"></a><span class="keyword">operator</span><span class="special">~</span><span class="special">(</span><span class="identifier">type</span> left<span class="special">)</span><span class="special">;</span> + <span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">type</span> <a name="boost.dll.load_mode.operator_idm45899629108656"></a><span class="keyword">operator</span><span class="special">|</span><span class="special">(</span><span class="identifier">type</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> + <span class="identifier">BOOST_CXX14_CONSTEXPR</span> <span class="identifier">type</span> <span class="special">&</span> <a name="boost.dll.load_mode.operator_idm45899629106112"></a><span class="keyword">operator</span><span class="special">|=</span><span class="special">(</span><span class="identifier">type</span> <span class="special">&</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> + <span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">type</span> <a name="boost.dll.load_mode.operator&"></a><span class="keyword">operator</span><span class="special">&</span><span class="special">(</span><span class="identifier">type</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> + <span class="identifier">BOOST_CXX14_CONSTEXPR</span> <span class="identifier">type</span> <span class="special">&</span> <a name="boost.dll.load_mode.operator&="></a><span class="keyword">operator</span><span class="special">&=</span><span class="special">(</span><span class="identifier">type</span> <span class="special">&</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> + <span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">type</span> <a name="boost.dll.load_mode.operator%5E"></a><span class="keyword">operator</span><span class="special">^</span><span class="special">(</span><span class="identifier">type</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> + <span class="identifier">BOOST_CXX14_CONSTEXPR</span> <span class="identifier">type</span> <span class="special">&</span> <a name="boost.dll.load_mode.operator%5E="></a><span class="keyword">operator</span><span class="special">^=</span><span class="special">(</span><span class="identifier">type</span> <span class="special">&</span> left<span class="special">,</span> <span class="identifier">type</span> right<span class="special">)</span><span class="special">;</span> + <span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">type</span> <a name="boost.dll.load_mode.operator~"></a><span class="keyword">operator</span><span class="special">~</span><span class="special">(</span><span class="identifier">type</span> left<span class="special">)</span><span class="special">;</span> <span class="special">}</span> <span class="special">}</span> <span class="special">}</span></pre> </div> <div class="section"> <div class="titlepage"><div><div><h4 class="title"> -<a name="header.boost.dll.smart_library_hpp"></a>Header <<a href="../../../boost/dll/smart_library.hpp" target="_top">boost/dll/smart_library.hpp</a>></h4></div></div></div> +<a name="header.boost.dll.smart_library_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_60_0/boost/dll/smart_library.hpp" target="_top">boost/dll/smart_library.hpp</a>></h4></div></div></div> <p>Contains the <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">boost::dll::experimental::smart_library</a> class for loading mangled symbols. </p> <div class="warning"><table border="0" summary="Warning"> <tr> @@ -145,16 +145,26 @@ <span class="keyword">class</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a><span class="special">;</span> <span class="comment">// Very fast equality check that compares the actual DLL/DSO objects. Throws nothing. </span> - <span class="keyword">bool</span> <a name="boost.dll.experimental.operator==_idp69813728"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> + <span class="keyword">bool</span> <a name="boost.dll.experimental.operator_idm45899628945072"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> <span class="comment">// Very fast inequality check that compares the actual DLL/DSO objects. Throws nothing. </span> - <span class="keyword">bool</span> <a name="boost.dll.experimental.operator!=_idp8065040"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> + <span class="keyword">bool</span> <a name="boost.dll.experimental.operator_idm45899628941600"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> <span class="comment">// Compare the actual DLL/DSO objects without any guarantee to be stable between runs. Throws nothing. </span> - <span class="keyword">bool</span> <a name="boost.dll.experimental.operator_idp8068416"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> + <span class="keyword">bool</span> <a name="boost.dll.experimental.operator_idm45899628938128"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> lhs<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> <span class="comment">// Swaps two shared libraries. Does not invalidate symbols and functions loaded from libraries. Throws nothing. </span> - <span class="keyword">void</span> <a name="boost.dll.experimental.swap_idp8071904"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> lhs<span class="special">,</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> + <span class="keyword">void</span> <a name="boost.dll.experimental.swap_idm45899628934640"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> lhs<span class="special">,</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> rhs<span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> T2<span class="special">></span> + <span class="keyword">void</span> <a class="link" href="../boost/dll/experimental/get_idm45899628931456.html" title="Function template get"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> + <span class="identifier">T</span> <span class="special">&</span> <a name="boost.dll.experimental.get_idm45899628923824"></a><span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> sm<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> name<span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_object</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> + <span class="keyword">auto</span> <a name="boost.dll.experimental.get_idm45899628919280"></a><span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span> sm<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> name<span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_function</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">>></span><span class="special">::</span><span class="identifier">type</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Class<span class="special">,</span> <span class="keyword">typename</span> Signature<span class="special">></span> + <span class="keyword">auto</span> <a class="link" href="../boost/dll/experimental/get_idm45899628914736.html" title="Function template get"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/dll/experimental/smart_library.html" title="Class smart_library">smart_library</a> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> <span class="special">}</span> <span class="special">}</span> <span class="special">}</span></pre> @@ -163,10 +173,14 @@ <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <a name="shared_library_refcountable_reference"></a>Shared Library Refcountable Reference</h3></div></div></div> -<div class="toc"><dl><dt><span class="section"><a href="reference.html#header.boost.dll.import_hpp">Header <boost/dll/import.hpp></a></span></dt></dl></div> +<div class="toc"><dl class="toc"> +<dt><span class="section"><a href="reference.html#header.boost.dll.import_hpp">Header <boost/dll/import.hpp></a></span></dt> +<dt><span class="section"><a href="reference.html#header.boost.dll.import_class_hpp">Header <boost/dll/import_class.hpp></a></span></dt> +<dt><span class="section"><a href="reference.html#header.boost.dll.import_mangled_hpp">Header <boost/dll/import_mangled.hpp></a></span></dt> +</dl></div> <div class="section"> <div class="titlepage"><div><div><h4 class="title"> -<a name="header.boost.dll.import_hpp"></a>Header <<a href="../../../boost/dll/import.hpp" target="_top">boost/dll/import.hpp</a>></h4></div></div></div> +<a name="header.boost.dll.import_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_60_0/boost/dll/import.hpp" target="_top">boost/dll/import.hpp</a>></h4></div></div></div> <p>Contains all the boost::dll::import* reference counting functions that hold a shared pointer to the instance of boost::dll::shared_library. </p> <pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">dll</span> <span class="special">{</span> @@ -201,11 +215,101 @@ <span class="special">}</span> <span class="special">}</span></pre> </div> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="header.boost.dll.import_class_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_60_0/boost/dll/import_class.hpp" target="_top">boost/dll/import_class.hpp</a>></h4></div></div></div> +<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> + <span class="keyword">namespace</span> <span class="identifier">dll</span> <span class="special">{</span> + <span class="keyword">namespace</span> <span class="identifier">experimental</span> <span class="special">{</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a class="link" href="../boost/dll/experimental/import_c_idm45899629424512.html" title="Function import_class"><span class="identifier">import_class</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">smart_library</span> <span class="special">&</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a class="link" href="../boost/dll/experimental/import_c_idm45899629424512.html" title="Function import_class"><span class="identifier">import_class</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">smart_library</span> <span class="special">&</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">,</span> + <span class="identifier">Args</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a class="link" href="../boost/dll/experimental/import_c_idm45899629424512.html" title="Function import_class"><span class="identifier">import_class</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">smart_library</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> + <span class="identifier">Args</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> <a class="link" href="../boost/dll/experimental/import_c_idm45899629424512.html" title="Function import_class"><span class="identifier">import_class</span></a><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&&</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a class="link" href="../boost/dll/experimental/import_c_idm45899629424512.html" title="Function import_class"><span class="identifier">import_class</span></a><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a class="link" href="../boost/dll/experimental/import_c_idm45899629424512.html" title="Function import_class"><span class="identifier">import_class</span></a><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&&</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a class="link" href="../boost/dll/experimental/import_c_idm45899629424512.html" title="Function import_class"><span class="identifier">import_class</span></a><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&&</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">,</span> + <span class="identifier">Args</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a class="link" href="../boost/dll/experimental/import_c_idm45899629424512.html" title="Function import_class"><span class="identifier">import_class</span></a><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> + <span class="identifier">Args</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> <a name="boost.dll.experimental.import_c_idm45899628880816"></a><span class="identifier">import_class</span><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&</span> lib<span class="special">,</span> <span class="identifier">Args</span><span class="special">...</span> args<span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a name="boost.dll.experimental.import_c_idm45899628877056"></a><span class="identifier">import_class</span><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&</span> lib<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> alias_name<span class="special">,</span> + <span class="identifier">Args</span><span class="special">...</span> args<span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a name="boost.dll.experimental.import_c_idm45899628872672"></a><span class="identifier">import_class</span><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&</span> lib<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> size<span class="special">,</span> <span class="identifier">Args</span><span class="special">...</span> args<span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a name="boost.dll.experimental.import_c_idm45899628868288"></a><span class="identifier">import_class</span><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&</span> lib<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> size<span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> alias_name<span class="special">,</span> <span class="identifier">Args</span><span class="special">...</span> args<span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span><span class="special">...</span> Args<span class="special">></span> + <a class="link" href="../boost/dll/experimental/imported_class.html" title="Class template imported_class">imported_class</a><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span> + <a name="boost.dll.experimental.import_c_idm45899628863280"></a><span class="identifier">import_class</span><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&</span> lib<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> alias_name<span class="special">,</span> + <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> size<span class="special">,</span> <span class="identifier">Args</span><span class="special">...</span> args<span class="special">)</span><span class="special">;</span> + <span class="special">}</span> + <span class="special">}</span> +<span class="special">}</span></pre> +</div> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="header.boost.dll.import_mangled_hpp"></a>Header <<a href="http://www.boost.org/doc/libs/1_60_0/boost/dll/import_mangled.hpp" target="_top">boost/dll/import_mangled.hpp</a>></h4></div></div></div> +<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> + <span class="keyword">namespace</span> <span class="identifier">dll</span> <span class="special">{</span> + <span class="keyword">namespace</span> <span class="identifier">experimental</span> <span class="special">{</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">filesystem</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span><span class="special">,</span> + <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">,</span> + <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">filesystem</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">,</span> + <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">smart_library</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">smart_library</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&&</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="identifier">smart_library</span> <span class="special">&&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">shared_library</span> <span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">shared_library</span> <span class="special">&</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="identifier">shared_library</span> <span class="special">&&</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span><span class="special">...</span> Args<span class="special">></span> + <span class="identifier">result_type</span> <a class="link" href="../boost/dll/experimental/import_mangled.html" title="Function import_mangled"><span class="identifier">import_mangled</span></a><span class="special">(</span><span class="identifier">shared_library</span> <span class="special">&&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="special">}</span> + <span class="special">}</span> +<span class="special">}</span></pre> +</div> </div> </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> diff --git a/doc/html/boost_dll/revision_history.html b/doc/html/boost_dll/revision_history.html index f6151e0bb9..41b7cb7522 100644 --- a/doc/html/boost_dll/revision_history.html +++ b/doc/html/boost_dll/revision_history.html @@ -4,9 +4,9 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Revision History</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> <link rel="prev" href="dependencies.html" title="Dependencies"> <link rel="next" href="acknowledgements.html" title="Acknowledgements"> </head> @@ -29,10 +29,10 @@ </h2></div></div></div> <h6> <a name="boost_dll.revision_history.h0"></a> - <span><a name="boost_dll.revision_history.1_0__first_boost_release_"></a></span><a class="link" href="revision_history.html#boost_dll.revision_history.1_0__first_boost_release_">1.0 + <span class="phrase"><a name="boost_dll.revision_history.1_0__first_boost_release_"></a></span><a class="link" href="revision_history.html#boost_dll.revision_history.1_0__first_boost_release_">1.0 (First Boost release)</a> </h6> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> Removed <code class="computeroutput"><span class="identifier">shared_library</span><span class="special">::</span><span class="identifier">load_self</span><span class="special">()</span></code> </li> @@ -71,13 +71,13 @@ </ul></div> <h6> <a name="boost_dll.revision_history.h1"></a> - <span><a name="boost_dll.revision_history.0_2"></a></span><a class="link" href="revision_history.html#boost_dll.revision_history.0_2">0.2</a> + <span class="phrase"><a name="boost_dll.revision_history.0_2"></a></span><a class="link" href="revision_history.html#boost_dll.revision_history.0_2">0.2</a> </h6> <p> Applied comments from "Boost query interest" mails and Boost Incubator, implemented new features: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> Project was renamed to Boost.DLL. </li> @@ -103,7 +103,7 @@ </ul></div> <h6> <a name="boost_dll.revision_history.h2"></a> - <span><a name="boost_dll.revision_history.0_1"></a></span><a class="link" href="revision_history.html#boost_dll.revision_history.0_1">0.1</a> + <span class="phrase"><a name="boost_dll.revision_history.0_1"></a></span><a class="link" href="revision_history.html#boost_dll.revision_history.0_1">0.1</a> </h6> <p> Boost.Plugin 0.1 (Initial Solo Prototype taken from <a href="https://github.com/retf/Boost.Application" target="_top">Boost.Application</a> @@ -112,7 +112,7 @@ </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> diff --git a/doc/html/boost_dll/tutorial.html b/doc/html/boost_dll/tutorial.html index f894830bef..78ba63c8c7 100644 --- a/doc/html/boost_dll/tutorial.html +++ b/doc/html/boost_dll/tutorial.html @@ -4,11 +4,11 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Tutorial</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_dll.html" title="Chapter 10. Boost.DLL"> +<link rel="up" href="../boost_dll.html" title="Chapter 11. Boost.DLL"> <link rel="prev" href="getting_started.html" title="Getting started"> -<link rel="next" href="missuses.html" title="Missuses"> +<link rel="next" href="mangled_import.html" title="Mangled Import"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table cellpadding="2" width="100%"><tr> @@ -21,13 +21,13 @@ </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="getting_started.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="missuses.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="getting_started.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="mangled_import.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="boost_dll.tutorial"></a><a class="link" href="tutorial.html" title="Tutorial">Tutorial</a> </h2></div></div></div> -<div class="toc"><dl> +<div class="toc"><dl class="toc"> <dt><span class="section"><a href="tutorial.html#boost_dll.tutorial.plugin_basics">Plugin basics</a></span></dt> <dt><span class="section"><a href="tutorial.html#boost_dll.tutorial.factory_method_in_plugin">Factory method in plugin</a></span></dt> @@ -47,7 +47,7 @@ a C function from Windows dll</a></span></dt> </dl></div> <p> - Tutorial is provided to give you an idea of how to create and use plugins. + This Tutorial is provided to give you an idea of how to create and use plugins. </p> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> @@ -152,7 +152,7 @@ Destructing my_plugin_sum ;o) <p> <span class="bold"><strong>Full sources:</strong></span> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/apolukhin/Boost.DLL/blob/develop/example/tutorial_common/my_plugin_api.hpp" target="_top">example/tutorial_common/my_plugin_api.hpp</a> </li> @@ -275,7 +275,7 @@ Plugin Name: aggregator <p> <span class="bold"><strong>Full sources:</strong></span> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/apolukhin/Boost.DLL/blob/develop/example/tutorial2/my_plugin_aggregator.cpp" target="_top">example/tutorial2/my_plugin_aggregator.cpp</a> </li> @@ -345,7 +345,7 @@ Destructing my_plugin_sum ;o) <p> <span class="bold"><strong>Full sources:</strong></span> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/apolukhin/Boost.DLL/blob/develop/example/tutorial3/tutorial3.cpp" target="_top">example/tutorial3/tutorial3.cpp</a> </li> @@ -368,7 +368,7 @@ Destructing my_plugin_sum ;o) <p> Linking plugin into the executable has the advantages of </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> reducing common size of distribution </li> @@ -506,7 +506,7 @@ Destructing my_plugin_static <p> <span class="bold"><strong>Full sources:</strong></span> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/apolukhin/Boost.DLL/blob/develop/example/tutorial4/static_plugin.hpp" target="_top">example/tutorial4/static_plugin.hpp</a> </li> @@ -629,7 +629,7 @@ Destructing my_plugin_sum ;o) <p> <span class="bold"><strong>Full sources:</strong></span> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/apolukhin/Boost.DLL/blob/develop/example/tutorial5/load_all.cpp" target="_top">example/tutorial5/load_all.cpp</a> </li> @@ -747,7 +747,7 @@ After library unload. <p> <span class="bold"><strong>Full sources:</strong></span> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/apolukhin/Boost.DLL/blob/develop/example/tutorial6/on_unload_lib.cpp" target="_top">example/tutorial6/on_unload_lib.cpp</a> </li> @@ -868,7 +868,7 @@ Function 'howdy' prints: <p> <span class="bold"><strong>Full sources:</strong></span> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/apolukhin/Boost.DLL/blob/develop/example/tutorial7/library1.cpp" target="_top">example/tutorial7/library1.cpp</a> </li> @@ -1144,7 +1144,7 @@ location: "/tutorial8_static"</pre> <p> <span class="bold"><strong>Full sources:</strong></span> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a href="https://github.com/apolukhin/Boost.DLL/blob/develop/example/tutorial8/refcounting_api.hpp" target="_top">example/tutorial8/refcounting_api.hpp</a> </li> @@ -1220,7 +1220,7 @@ location: "/tutorial8_static"</pre> <p> <span class="bold"><strong>Full sources:</strong></span> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <a href="https://github.com/apolukhin/Boost.DLL/blob/develop/example/tutorial9/tutorial9.cpp" target="_top">example/tutorial9/tutorial9.cpp</a> </li></ul></div> <p> @@ -1230,7 +1230,7 @@ location: "/tutorial8_static"</pre> </div> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015, 2016 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<p> 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) </p> @@ -1238,7 +1238,7 @@ location: "/tutorial8_static"</pre> </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="getting_started.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="missuses.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="getting_started.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_dll.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="mangled_import.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> </body> </html> |