Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > media > contrib-backports > by-pkgid > 4f5f2dc0f55b453456458df885792b0b > files > 504

ucommon-doc-5.0.4-1mdv2010.2.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>ucommon: ucommon/platform.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>ucommon/platform.h File Reference</h1>
<p>Various miscellaneous platform specific headers and defines.  
<a href="#_details">More...</a></p>
<code>#include &lt;<a class="el" href="a00194_source.html">pthread.h</a>&gt;</code><br/>
<code>#include &lt;features.h&gt;</code><br/>
<code>#include &lt;bits/wordsize.h&gt;</code><br/>
<code>#include &lt;stddef.h&gt;</code><br/>
<code>#include &lt;bits/types.h&gt;</code><br/>
<code>#include &lt;time.h&gt;</code><br/>
<code>#include &lt;signal.h&gt;</code><br/>
<code>#include &lt;endian.h&gt;</code><br/>
<code>#include &lt;bits/sigset.h&gt;</code><br/>
<code>#include &lt;bits/pthreadtypes.h&gt;</code><br/>
<code>#include &lt;sys/types.h&gt;</code><br/>
<div class="dynheader">
Include dependency graph for platform.h:</div>
<div class="dynsection">
<div class="center"><img src="a00253.png" border="0" usemap="#ucommon_2platform_8h_map" alt=""/></div>
</div>
<div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dynsection">
<div class="center"><img src="a00254.png" border="0" usemap="#ucommon_2platform_8hdep_map" alt=""/></div>
<map name="ucommon_2platform_8hdep_map" id="ucommon_2platform_8hdep">
<area shape="rect" id="node4" href="a00177.html" title="Locking classes for member function automatic operations." alt="" coords="93,305,275,332"/><area shape="rect" id="node6" href="a00202.html" title="Thread classes and sychronization objects." alt="" coords="501,380,683,406"/><area shape="rect" id="node8" href="a00181.html" title="Threadsafe object containers." alt="" coords="308,454,529,481"/><area shape="rect" id="node10" href="a00204.html" title="Top level include file for the GNU uCommon C++ core library." alt="" coords="1551,678,1743,705"/><area shape="rect" id="node12" href="a00196.html" title="This library holds basic cryptographic functions and secure socket support for use..." alt="" coords="735,753,916,780"/><area shape="rect" id="node14" href="a00185.html" title="Thread&#45;aware file system manipulation class." alt="" coords="1681,454,1844,481"/><area shape="rect" id="node16" href="a00180.html" title="Classes which use the buffer protocol to stream data." alt="" coords="1839,529,2020,556"/><area shape="rect" id="node23" href="a00200.html" title="Any ucommon streaming classes that are built from std::streamio facilities and that..." alt="" coords="1377,529,1559,556"/><area shape="rect" id="node36" href="a00178.html" title="Atomic pointers and locks." alt="" coords="2160,156,2341,182"/><area shape="rect" id="node39" href="a00179.html" title="A simple class to perform bitmap manipulation." alt="" coords="2365,156,2547,182"/><area shape="rect" id="node44" href="a00182.html" title="Support for various automatic counting objects." alt="" coords="2401,230,2593,257"/><area shape="rect" id="node47" href="a00183.html" title="Basic classes for manipulating time and date based data, particularly that may be..." alt="" coords="2449,454,2652,481"/><area shape="rect" id="node51" href="a00186.html" title="Generic templates for C++." alt="" coords="1857,81,2060,108"/><area shape="rect" id="node54" href="a00192.html" title="A common object base class with auto&#45;pointer support." alt="" coords="1803,156,1984,182"/><area shape="rect" id="node56" href="a00188.html" title="Linked objects, lists, templates, and containers." alt="" coords="947,230,1128,257"/><area shape="rect" id="node59" href="a00187.html" title="Parsing of config files that have keyword/value pairs." alt="" coords="757,380,949,406"/><area shape="rect" id="node63" href="a00190.html" title="Private heaps, pools, and associations." alt="" coords="667,305,848,332"/><area shape="rect" id="node83" href="a00201.html" title="A common string class and character string support functions." alt="" coords="1780,380,1961,406"/><area shape="rect" id="node105" href="a00191.html" title="Support classes for manipulation of numbers as strings." alt="" coords="2589,380,2781,406"/><area shape="rect" id="node110" href="a00193.html" title="The GNU Common C++ persistance engine by Daniel Silverstone." alt="" coords="2723,604,2915,630"/><area shape="rect" id="node113" href="a00195.html" title="Abstract interfaces and support." alt="" coords="1393,230,1604,257"/><area shape="rect" id="node124" href="a00199.html" title="Placeholder for future classes that require stl support." alt="" coords="2856,81,3008,108"/><area shape="rect" id="node27" href="a00189.html" title="Support for memory mapped objects." alt="" coords="868,454,1049,481"/><area shape="rect" id="node32" href="a00206.html" title="Basic array and reusable object factory heap support." alt="" coords="511,529,692,556"/><area shape="rect" id="node18" href="a00197.html" title="Generic shell parsing and application services." alt="" coords="1684,604,1855,630"/><area shape="rect" id="node70" href="a00198.html" title="Common socket class and address manipulation." alt="" coords="1124,454,1305,481"/><area shape="rect" id="node76" href="a00203.html" title="Realtime timers and timer queues." alt="" coords="1075,305,1256,332"/><area shape="rect" id="node93" href="a00205.html" title="Basic UCommon Unicode support." alt="" coords="1929,604,2121,630"/><area shape="rect" id="node96" href="a00207.html" title="XML &quot;SAX&quot; (stream) parsing support from GNU Common C++." alt="" coords="1353,454,1505,481"/></map>
</div>

<p><a href="a00194_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00208.html">ucommon</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Common namespace for all ucommon objects. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad10ef148ba8327bd530fc6c32c1e181c"></a><!-- doxytag: member="platform.h::__EXPORT" ref="ad10ef148ba8327bd530fc6c32c1e181c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__EXPORT</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ed18cba305b6aa05dbdacdada3db4df"></a><!-- doxytag: member="platform.h::__LOCAL" ref="a5ed18cba305b6aa05dbdacdada3db4df" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__LOCAL</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca890f63cdea692ad06a46c1745b9601"></a><!-- doxytag: member="platform.h::__MALLOC" ref="aca890f63cdea692ad06a46c1745b9601" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__MALLOC</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4aee2a17d54e97aad863f89aeec81370"></a><!-- doxytag: member="platform.h::__PRINTF" ref="a4aee2a17d54e97aad863f89aeec81370" args="(x, y)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__PRINTF</b>(x, y)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ea98d56fe3aecbf554d3feaccf6ece9"></a><!-- doxytag: member="platform.h::__SCANF" ref="a8ea98d56fe3aecbf554d3feaccf6ece9" args="(x, y)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>__SCANF</b>(x, y)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad44924736167f82a10ae2891fc98a608"></a><!-- doxytag: member="platform.h::_POSIX_PTHREAD_SEMANTICS" ref="ad44924736167f82a10ae2891fc98a608" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>_POSIX_PTHREAD_SEMANTICS</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a443747bad6a2c99b390ad3b41496e860"></a><!-- doxytag: member="platform.h::_THREADSAFE" ref="a443747bad6a2c99b390ad3b41496e860" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>_THREADSAFE</b>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24d2d71eea325f5251ed56373cc83efd"></a><!-- doxytag: member="platform.h::_UCOMMON_EXTENDED_" ref="a24d2d71eea325f5251ed56373cc83efd" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>_UCOMMON_EXTENDED_</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed2dc2ccf257c8305725af7d5fc471e5"></a><!-- doxytag: member="platform.h::crit" ref="aed2dc2ccf257c8305725af7d5fc471e5" args="(x, text)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>crit</b>(x, text)&nbsp;&nbsp;&nbsp;if(!(x)) cpr_runtime_error(text)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28886d59fbdc2dccd82cc4887e967d0d"></a><!-- doxytag: member="platform.h::END_NAMESPACE" ref="a28886d59fbdc2dccd82cc4887e967d0d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>END_NAMESPACE</b>&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fdc7facea201bfce4ad308105f88d0c"></a><!-- doxytag: member="platform.h::INVALID_HANDLE_VALUE" ref="a5fdc7facea201bfce4ad308105f88d0c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>INVALID_HANDLE_VALUE</b>&nbsp;&nbsp;&nbsp;-1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26769957ec1a2beaf223f33b66ee64ab"></a><!-- doxytag: member="platform.h::INVALID_SOCKET" ref="a26769957ec1a2beaf223f33b66ee64ab" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>INVALID_SOCKET</b>&nbsp;&nbsp;&nbsp;-1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a453fa17a6ece9c8d96c6312c2e333dd9"></a><!-- doxytag: member="platform.h::NAMESPACE_UCOMMON" ref="a453fa17a6ece9c8d96c6312c2e333dd9" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NAMESPACE_UCOMMON</b>&nbsp;&nbsp;&nbsp;namespace ucommon {</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8de3ed741dadc9c979a4ff17c0a9116e"></a><!-- doxytag: member="platform.h::NDEBUG" ref="a8de3ed741dadc9c979a4ff17c0a9116e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>NDEBUG</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b0e54f1ca1e0a9ce1cfd20e7a22b8f9"></a><!-- doxytag: member="platform.h::PROGRAM_EXIT" ref="a8b0e54f1ca1e0a9ce1cfd20e7a22b8f9" args="(code)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PROGRAM_EXIT</b>(code)&nbsp;&nbsp;&nbsp;return code</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef5ca8866cc3f53c0801c614c1fecfe8"></a><!-- doxytag: member="platform.h::PROGRAM_MAIN" ref="aef5ca8866cc3f53c0801c614c1fecfe8" args="(argc, argv)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PROGRAM_MAIN</b>(argc, argv)&nbsp;&nbsp;&nbsp;extern &quot;C&quot; int main(int argc, char **argv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29f642485be9a0f4c56373bc2f8db1dd"></a><!-- doxytag: member="platform.h::SERVICE_MAIN" ref="a29f642485be9a0f4c56373bc2f8db1dd" args="(id, argc, argv)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>SERVICE_MAIN</b>(id, argc, argv)&nbsp;&nbsp;&nbsp;void service_##id(int argc, char **argv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe6604c42dad18d6d9ec76a270ef850d"></a><!-- doxytag: member="platform.h::UCOMMON_ABI" ref="abe6604c42dad18d6d9ec76a270ef850d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>UCOMMON_ABI</b>&nbsp;&nbsp;&nbsp;5</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e4fce0fa13b36f8b31f4d56111b0a44"></a><!-- doxytag: member="platform.h::UCOMMON_NAMESPACE" ref="a6e4fce0fa13b36f8b31f4d56111b0a44" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>UCOMMON_NAMESPACE</b>&nbsp;&nbsp;&nbsp;ucommon</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24d43e2415633d5eb6ab3ea29733cf49"></a><!-- doxytag: member="platform.h::cpr_service_t" ref="a24d43e2415633d5eb6ab3ea29733cf49" args=")(int argc, char **argv)" -->
typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>cpr_service_t</b> )(int argc, char **argv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1540dca57d43779772b9c10fc2f17f83"></a><!-- doxytag: member="platform.h::fd_t" ref="a1540dca57d43779772b9c10fc2f17f83" args="" -->
typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><b>fd_t</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bcc2ce32e3b6f7502f4e3bf46b342ba"></a><!-- doxytag: member="platform.h::Integer" ref="a8bcc2ce32e3b6f7502f4e3bf46b342ba" args="" -->
typedef long&nbsp;</td><td class="memItemRight" valign="bottom"><b>Integer</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a445a5f0e2a34c9d97d69a3c2d1957907"></a><!-- doxytag: member="platform.h::Real" ref="a445a5f0e2a34c9d97d69a3c2d1957907" args="" -->
typedef double&nbsp;</td><td class="memItemRight" valign="bottom"><b>Real</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html#a564498016effaee1f3384e07b7ced24f">sighandler_t</a> )(int)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient typedef for signal handlers.  <a href="#a564498016effaee1f3384e07b7ced24f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30353f381f5fccbb956eea1f3a110b6c"></a><!-- doxytag: member="platform.h::socket_t" ref="a30353f381f5fccbb956eea1f3a110b6c" args="" -->
typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><b>socket_t</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Typedef for millisecond timer values.  <a href="#af412159e5cef839836a5e7b19ee75d1c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7161af27b4528120d5a94d59db0352fb"></a><!-- doxytag: member="platform.h::Unsigned" ref="a7161af27b4528120d5a94d59db0352fb" args="" -->
typedef unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><b>Unsigned</b></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html#aec6d33ffff1d527a4f54ec7d94787a27">cpr_memalloc</a> (size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Portable memory allocation helper function.  <a href="#aec6d33ffff1d527a4f54ec7d94787a27"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html#a4f34bef5a6063f977cf3b41e6d7db116">cpr_memassign</a> (size_t size, caddr_t address, size_t known)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Portable memory placement helper function.  <a href="#a4f34bef5a6063f977cf3b41e6d7db116"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html#a4880da985609d497e8ddb71652ca1e33">cpr_memswap</a> (void *mem1, void *mem2, size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Portable swap code.  <a href="#a4880da985609d497e8ddb71652ca1e33"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html#a873d0643afa826c6af4071f189005015">cpr_runtime_error</a> (const char *text)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function to handle runtime errors.  <a href="#a873d0643afa826c6af4071f189005015"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">T *&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00194.html#a5fc126f9a4406cb2d0d054488cf00809">init</a> (T *memory)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Template function to initialize memory by invoking default constructor.  <a href="#a5fc126f9a4406cb2d0d054488cf00809"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc9e88b75cd2a5f1031bfd07840049cc"></a><!-- doxytag: member="platform.h::lsb_getlong" ref="afc9e88b75cd2a5f1031bfd07840049cc" args="(uint8_t *b)" -->
uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>lsb_getlong</b> (uint8_t *b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8790a4aef4c019a4047f1448180522ee"></a><!-- doxytag: member="platform.h::lsb_getshort" ref="a8790a4aef4c019a4047f1448180522ee" args="(uint8_t *b)" -->
uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>lsb_getshort</b> (uint8_t *b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a458254936d4ad346438ca2d04e03c94c"></a><!-- doxytag: member="platform.h::lsb_setlong" ref="a458254936d4ad346438ca2d04e03c94c" args="(uint8_t *b, uint32_t v)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>lsb_setlong</b> (uint8_t *b, uint32_t v)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aa5331fca6fa075085f526eb51d4bc7"></a><!-- doxytag: member="platform.h::lsb_setshort" ref="a8aa5331fca6fa075085f526eb51d4bc7" args="(uint8_t *b, uint16_t v)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>lsb_setshort</b> (uint8_t *b, uint16_t v)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5489c1da20ad993afcbd7a53dbb61ac1"></a><!-- doxytag: member="platform.h::msb_getlong" ref="a5489c1da20ad993afcbd7a53dbb61ac1" args="(uint8_t *b)" -->
uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>msb_getlong</b> (uint8_t *b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6190a908026c9c8c29556261da527bae"></a><!-- doxytag: member="platform.h::msb_getshort" ref="a6190a908026c9c8c29556261da527bae" args="(uint8_t *b)" -->
uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>msb_getshort</b> (uint8_t *b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad07a04ca9c73478552b61bb4e70f473"></a><!-- doxytag: member="platform.h::msb_setlong" ref="aad07a04ca9c73478552b61bb4e70f473" args="(uint8_t *b, uint32_t v)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>msb_setlong</b> (uint8_t *b, uint32_t v)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4dfb426b2a9be9a8c777ff91e42d6c1d"></a><!-- doxytag: member="platform.h::msb_setshort" ref="a4dfb426b2a9be9a8c777ff91e42d6c1d" args="(uint8_t *b, uint16_t v)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>msb_setshort</b> (uint8_t *b, uint16_t v)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html#a51dc097f57d77981bcf963b87423e85f">operator new</a> (size_t size, caddr_t address, size_t known)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A placement new operator where we know the allocated size.  <a href="#a51dc097f57d77981bcf963b87423e85f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html#accc8c72bfa1e4436b32153e649479690">operator new</a> (size_t size, caddr_t address)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A placement new operator where we assume the size of memory is good.  <a href="#accc8c72bfa1e4436b32153e649479690"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00194.html#a2c7ac8dd4bafcd4e8fc240be94321b7a">operator new</a> (size_t size, size_t extra)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Overdraft new to allocate extra memory for object from heap.  <a href="#a2c7ac8dd4bafcd4e8fc240be94321b7a"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Various miscellaneous platform specific headers and defines. </p>
<p>This is used to support ucommon on different platforms. The ucommon library assumes at least a real posix threading library is present or will build thread support native on Microsoft Windows legacy platform. This header also deals with issues related to common base types. </p>

<p>Definition in file <a class="el" href="a00194_source.html">platform.h</a>.</p>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="a564498016effaee1f3384e07b7ced24f"></a><!-- doxytag: member="platform.h::sighandler_t" ref="a564498016effaee1f3384e07b7ced24f" args=")(int)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="a00194.html#a564498016effaee1f3384e07b7ced24f">sighandler_t</a>)(int)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convenient typedef for signal handlers. </p>

<p>Definition at line <a class="el" href="a00194_source.html#l00309">309</a> of file <a class="el" href="a00194_source.html">platform.h</a>.</p>

</div>
</div>
<a class="anchor" id="af412159e5cef839836a5e7b19ee75d1c"></a><!-- doxytag: member="platform.h::timeout_t" ref="af412159e5cef839836a5e7b19ee75d1c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef unsigned long <a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Typedef for millisecond timer values. </p>

<p>Definition at line <a class="el" href="a00194_source.html#l00311">311</a> of file <a class="el" href="a00194_source.html">platform.h</a>.</p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="aec6d33ffff1d527a4f54ec7d94787a27"></a><!-- doxytag: member="platform.h::cpr_memalloc" ref="aec6d33ffff1d527a4f54ec7d94787a27" args="(size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* cpr_memalloc </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Portable memory allocation helper function. </p>
<p>Handles out of heap error as a runtime error. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of memory block to allocate from heap. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>memory address of allocated heap space. </dd></dl>

</div>
</div>
<a class="anchor" id="a4f34bef5a6063f977cf3b41e6d7db116"></a><!-- doxytag: member="platform.h::cpr_memassign" ref="a4f34bef5a6063f977cf3b41e6d7db116" args="(size_t size, caddr_t address, size_t known)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* cpr_memassign </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">caddr_t&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>known</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Portable memory placement helper function. </p>
<p>This is used to process "placement" new operators where a new object is constructed over a pre-allocated area of memory. This handles invalid values through runtime error. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of object being constructed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>where the object is being placed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>known</em>&nbsp;</td><td>size of the location we are constructing the object in. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a4880da985609d497e8ddb71652ca1e33"></a><!-- doxytag: member="platform.h::cpr_memswap" ref="a4880da985609d497e8ddb71652ca1e33" args="(void *mem1, void *mem2, size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cpr_memswap </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>mem1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>mem2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Portable swap code. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>mem1</em>&nbsp;</td><td>to swap. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mem2</em>&nbsp;</td><td>to swap. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of swap area. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a873d0643afa826c6af4071f189005015"></a><!-- doxytag: member="platform.h::cpr_runtime_error" ref="a873d0643afa826c6af4071f189005015" args="(const char *text)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cpr_runtime_error </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>text</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Function to handle runtime errors. </p>
<p>When using the standard C library, runtime errors are handled by a simple abort. When using the stdc++ library with stdexcept, then std::runtime_error will be thrown. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>text</em>&nbsp;</td><td>of runtime error. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a5fc126f9a4406cb2d0d054488cf00809"></a><!-- doxytag: member="platform.h::init" ref="a5fc126f9a4406cb2d0d054488cf00809" args="(T *memory)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">T* init </td>
          <td>(</td>
          <td class="paramtype">T *&nbsp;</td>
          <td class="paramname"> <em>memory</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Template function to initialize memory by invoking default constructor. </p>
<p>If NULL is passed, then NULL is returned without any constructor called. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>memory</em>&nbsp;</td><td>to initialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>memory initialized. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00006.html#a0">cipher.cpp</a>, and <a class="el" href="a00004.html#a0">ssl.cpp</a>.</dd>
</dl>
<p>Definition at line <a class="el" href="a00194_source.html#l00537">537</a> of file <a class="el" href="a00194_source.html">platform.h</a>.</p>

</div>
</div>
<a class="anchor" id="a51dc097f57d77981bcf963b87423e85f"></a><!-- doxytag: member="platform.h::operator new" ref="a51dc097f57d77981bcf963b87423e85f" args="(size_t size, caddr_t address, size_t known)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* operator new </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">caddr_t&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>known</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A placement new operator where we know the allocated size. </p>
<p>We find out how much memory is needed by the new and can prevent the object from exceeding the available space we are placing the object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of memory needed for object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>where to place object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>known</em>&nbsp;</td><td>size of location we are placing object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>memory we placed object. </dd></dl>

<p>Definition at line <a class="el" href="a00194_source.html#l00478">478</a> of file <a class="el" href="a00194_source.html">platform.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00194_a51dc097f57d77981bcf963b87423e85f_cgraph.png" border="0" usemap="#a00194_a51dc097f57d77981bcf963b87423e85f_cgraph_map" alt=""></div>
<map name="a00194_a51dc097f57d77981bcf963b87423e85f_cgraph_map" id="a00194_a51dc097f57d77981bcf963b87423e85f_cgraph">
<area shape="rect" id="node3" href="a00194.html#a4f34bef5a6063f977cf3b41e6d7db116" title="Portable memory placement helper function." alt="" coords="197,5,349,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="accc8c72bfa1e4436b32153e649479690"></a><!-- doxytag: member="platform.h::operator new" ref="accc8c72bfa1e4436b32153e649479690" args="(size_t size, caddr_t address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* operator new </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">caddr_t&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A placement new operator where we assume the size of memory is good. </p>
<p>We construct the object at a specified place in memory which we assume is valid for our needs. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of memory needed for object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>where to place object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>memory we placed object. </dd></dl>

<p>Definition at line <a class="el" href="a00194_source.html#l00465">465</a> of file <a class="el" href="a00194_source.html">platform.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00194_accc8c72bfa1e4436b32153e649479690_cgraph.png" border="0" usemap="#a00194_accc8c72bfa1e4436b32153e649479690_cgraph_map" alt=""></div>
<map name="a00194_accc8c72bfa1e4436b32153e649479690_cgraph_map" id="a00194_accc8c72bfa1e4436b32153e649479690_cgraph">
<area shape="rect" id="node3" href="a00194.html#a4f34bef5a6063f977cf3b41e6d7db116" title="Portable memory placement helper function." alt="" coords="197,5,349,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a2c7ac8dd4bafcd4e8fc240be94321b7a"></a><!-- doxytag: member="platform.h::operator new" ref="a2c7ac8dd4bafcd4e8fc240be94321b7a" args="(size_t size, size_t extra)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* operator new </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>extra</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Overdraft new to allocate extra memory for object from heap. </p>
<p>This is used for objects that must have a known class size but store extra data behind the class. The last member might be an unsized or 0 element array, and the actual size needed from the heap is hence not the size of the class itself but is known by the routine allocating the object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>extra</em>&nbsp;</td><td>heap space needed for data. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="a00194_source.html#l00454">454</a> of file <a class="el" href="a00194_source.html">platform.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00194_a2c7ac8dd4bafcd4e8fc240be94321b7a_cgraph.png" border="0" usemap="#a00194_a2c7ac8dd4bafcd4e8fc240be94321b7a_cgraph_map" alt=""></div>
<map name="a00194_a2c7ac8dd4bafcd4e8fc240be94321b7a_cgraph_map" id="a00194_a2c7ac8dd4bafcd4e8fc240be94321b7a_cgraph">
<area shape="rect" id="node3" href="a00194.html#aec6d33ffff1d527a4f54ec7d94787a27" title="Portable memory allocation helper function." alt="" coords="199,5,340,32"/></map>
</div>
</p>

</div>
</div>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jul 14 16:39:08 2011 for ucommon by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>