2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-31 08:22:18 +00:00
Files
python/doc/html/reference/high_level_components/module_hpp/macros.html
2015-08-05 07:21:49 -04:00

74 lines
4.8 KiB
HTML

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Macros</title>
<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Boost.Python Reference Manual">
<link rel="up" href="../module_hpp.html" title="module.hpp">
<link rel="prev" href="../module_hpp.html" title="module.hpp">
<link rel="next" href="examples.html" title="Examples">
</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="../../../images/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="../module_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../module_hpp.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="high_level_components.module_hpp.macros"></a><a class="link" href="macros.html" title="Macros">Macros</a>
</h3></div></div></div>
<p>
<code class="computeroutput"><span class="identifier">BOOST_PYTHON_MODULE</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></code>
is used to declare Python module initialization functions. The name argument
must exactly match the name of the module to be initialized, and must conform
to Python's identifier naming rules. Where you would normally write
</p>
<pre class="programlisting"><span class="keyword">extern</span> <span class="string">"C"</span> <span class="keyword">void</span> <span class="identifier">initname</span><span class="special">()</span>
<span class="special">{</span>
<span class="special">...</span>
<span class="special">}</span>
</pre>
<p>
Boost.Python modules should be initialized with
</p>
<pre class="programlisting"><span class="identifier">BOOST_PYTHON_MODULE</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span>
<span class="special">{</span>
<span class="special">...</span>
<span class="special">}</span>
</pre>
<p>
This macro generates two functions in the scope where it is used: <code class="computeroutput"><span class="keyword">extern</span> <span class="string">"C"</span>
<span class="keyword">void</span> <span class="identifier">initname</span><span class="special">()</span></code>, and <code class="computeroutput"><span class="keyword">void</span>
<span class="identifier">init_module_name</span><span class="special">()</span></code>,
whose body must follow the macro invocation. <code class="computeroutput"><span class="identifier">init_name</span></code>
passes <code class="computeroutput"><span class="identifier">init_module_name</span></code>
to <code class="computeroutput"><span class="identifier">handle_exception</span><span class="special">()</span></code>
so that any C++ exceptions generated are safely processeed. During the
body of <code class="computeroutput"><span class="identifier">init_name</span></code>, the
current scope refers to the module being initialized.
</p>
</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 &#169; 2002-2005, 2015 David Abrahams, Stefan Seefeld<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../module_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../module_hpp.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>