Sophie

Sophie

distrib > Mageia > 1 > i586 > by-pkgid > 64656f00434e190abe8506174ca339ed > files > 725

ucommon-doc-4.3.1-1.mga1.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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">ucommon</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;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 id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('a00193.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<h1>ucommon/platform.h File Reference</h1>  </div>
</div>
<div class="contents">

<p>Various miscellaneous platform specific headers and defines.  
<a href="#_details">More...</a></p>
<div class="textblock"><code>#include &lt;pthread.h&gt;</code><br/>
<code>#include &lt;signal.h&gt;</code><br/>
<code>#include &lt;sys/stat.h&gt;</code><br/>
<code>#include &lt;sys/types.h&gt;</code><br/>
<code>#include &lt;stdint.h&gt;</code><br/>
<code>#include &lt;unistd.h&gt;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &lt;errno.h&gt;</code><br/>
<code>#include &lt;assert.h&gt;</code><br/>
</div><div class="textblock"><div class="dynheader">
Include dependency graph for platform.h:</div>
<div class="dyncontent">
<div class="center"><img src="a00252.png" border="0" usemap="#ucommon_2platform_8h" alt=""/></div>
<map name="ucommon_2platform_8h" id="ucommon_2platform_8h">
<area shape="rect" id="node3" href="a00239_source.html" title="pthread.h" alt="" coords="713,80,825,107"/><area shape="rect" id="node39" href="a00244_source.html" title="signal.h" alt="" coords="2108,80,2209,107"/><area shape="rect" id="node66" href="a00245_source.html" title="stdint.h" alt="" coords="2988,80,3089,107"/><area shape="rect" id="node72" href="a00246_source.html" title="unistd.h" alt="" coords="4271,155,4372,181"/><area shape="rect" id="node85" href="a00248_source.html" title="stdlib.h" alt="" coords="3673,80,3775,107"/><area shape="rect" id="node98" href="a00250_source.html" title="errno.h" alt="" coords="3239,80,3329,107"/><area shape="rect" id="node103" href="a00251_source.html" title="assert.h" alt="" coords="3113,80,3215,107"/><area shape="rect" id="node5" href="a00240_source.html" title="features.h" alt="" coords="164,155,287,181"/><area shape="rect" id="node11" href="a00241_source.html" title="endian.h" alt="" coords="511,155,612,181"/><area shape="rect" id="node19" href="a00242_source.html" title="sched.h" alt="" coords="636,155,727,181"/><area shape="rect" id="node26" href="a00243_source.html" title="time.h" alt="" coords="1712,229,1795,256"/><area shape="rect" id="node83" href="a00247_source.html" title="getopt.h" alt="" coords="4604,229,4705,256"/><area shape="rect" id="node94" href="a00249_source.html" title="alloca.h" alt="" coords="3673,155,3775,181"/></map>
</div>
</div>
<p><a href="a00193_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00206.html">ucc</a></td></tr>

<p><tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><p>Common namespace for all ucommon objects. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
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&#160;</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&#160;</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&#160;</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&#160;</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&#160;</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&#160;</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="ac15da069257627fefd71d875d538b73d"></a><!-- doxytag: member="platform.h::_REENTRANT" ref="ac15da069257627fefd71d875d538b73d" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>_REENTRANT</b>&#160;&#160;&#160;1</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&#160;</td><td class="memItemRight" valign="bottom"><b>_THREADSAFE</b>&#160;&#160;&#160;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&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><b>crit</b>(x, text)&#160;&#160;&#160;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&#160;</td><td class="memItemRight" valign="bottom"><b>END_NAMESPACE</b>&#160;&#160;&#160;}</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&#160;</td><td class="memItemRight" valign="bottom"><b>INVALID_HANDLE_VALUE</b>&#160;&#160;&#160;-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&#160;</td><td class="memItemRight" valign="bottom"><b>INVALID_SOCKET</b>&#160;&#160;&#160;-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&#160;</td><td class="memItemRight" valign="bottom"><b>NAMESPACE_UCOMMON</b>&#160;&#160;&#160;namespace ucc {</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&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><b>PROGRAM_EXIT</b>(code)&#160;&#160;&#160;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&#160;</td><td class="memItemRight" valign="bottom"><b>PROGRAM_MAIN</b>(argc, argv)&#160;&#160;&#160;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&#160;</td><td class="memItemRight" valign="bottom"><b>SERVICE_MAIN</b>(id, argc, argv)&#160;&#160;&#160;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&#160;</td><td class="memItemRight" valign="bottom"><b>UCOMMON_ABI</b>&#160;&#160;&#160;4</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&#160;</td><td class="memItemRight" valign="bottom"><b>UCOMMON_NAMESPACE</b>&#160;&#160;&#160;ucc</td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
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(*&#160;</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&#160;</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&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><b>Real</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html#a564498016effaee1f3384e07b7ced24f">sighandler_t</a> )(int)</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><b>socket_t</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><b>Unsigned</b></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html#aec6d33ffff1d527a4f54ec7d94787a27">cpr_memalloc</a> (size_t size)</td></tr>
<tr><td class="mdescLeft">&#160;</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 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html#a4f34bef5a6063f977cf3b41e6d7db116">cpr_memassign</a> (size_t size, caddr_t address, size_t known)</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html#a4880da985609d497e8ddb71652ca1e33">cpr_memswap</a> (void *mem1, void *mem2, size_t size)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Portable swap code.  <a href="#a4880da985609d497e8ddb71652ca1e33"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html#a873d0643afa826c6af4071f189005015">cpr_runtime_error</a> (const char *text)</td></tr>
<tr><td class="mdescLeft">&#160;</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 *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00193.html#a5fc126f9a4406cb2d0d054488cf00809">init</a> (T *memory)</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</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&#160;</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&#160;</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&#160;</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&#160;</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&#160;</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&#160;</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&#160;</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 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html#a51dc097f57d77981bcf963b87423e85f">operator new</a> (size_t size, caddr_t address, size_t known)</td></tr>
<tr><td class="mdescLeft">&#160;</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 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html#a2c7ac8dd4bafcd4e8fc240be94321b7a">operator new</a> (size_t size, size_t extra)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Overdraft new to allocate extra memory for object from heap.  <a href="#a2c7ac8dd4bafcd4e8fc240be94321b7a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00193.html#accc8c72bfa1e4436b32153e649479690">operator new</a> (size_t size, caddr_t address)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A placement new operator where we assume the size of memory is good.  <a href="#accc8c72bfa1e4436b32153e649479690"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<div class="textblock"><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="a00193_source.html">platform.h</a>.</p>
</div><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="a00193.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="a00193_source.html#l00304">304</a> of file <a class="el" href="a00193_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="a00193.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="a00193_source.html#l00306">306</a> of file <a class="el" href="a00193_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&#160;</td>
          <td class="paramname"><em>size</em></td><td>)</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 class="params">
    <tr><td class="paramname">size</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&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">caddr_t&#160;</td>
          <td class="paramname"><em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>known</em>&#160;</td>
        </tr>
        <tr>
          <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 class="params">
    <tr><td class="paramname">size</td><td>of object being constructed. </td></tr>
    <tr><td class="paramname">address</td><td>where the object is being placed. </td></tr>
    <tr><td class="paramname">known</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 *&#160;</td>
          <td class="paramname"><em>mem1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>mem2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <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 class="params">
    <tr><td class="paramname">mem1</td><td>to swap. </td></tr>
    <tr><td class="paramname">mem2</td><td>to swap. </td></tr>
    <tr><td class="paramname">size</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 *&#160;</td>
          <td class="paramname"><em>text</em></td><td>)</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 class="params">
    <tr><td class="paramname">text</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 *&#160;</td>
          <td class="paramname"><em>memory</em></td><td>)</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 class="params">
    <tr><td class="paramname">memory</td><td>to initialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>memory initialized. </dd></dl>

<p>Definition at line <a class="el" href="a00193_source.html#l00532">532</a> of file <a class="el" href="a00193_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&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">caddr_t&#160;</td>
          <td class="paramname"><em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>known</em>&#160;</td>
        </tr>
        <tr>
          <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 class="params">
    <tr><td class="paramname">size</td><td>of memory needed for object. </td></tr>
    <tr><td class="paramname">address</td><td>where to place object. </td></tr>
    <tr><td class="paramname">known</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="a00193_source.html#l00473">473</a> of file <a class="el" href="a00193_source.html">platform.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="a00193_a51dc097f57d77981bcf963b87423e85f_cgraph.png" border="0" usemap="#a00193_a51dc097f57d77981bcf963b87423e85f_cgraph" alt=""/></div>
<map name="a00193_a51dc097f57d77981bcf963b87423e85f_cgraph" id="a00193_a51dc097f57d77981bcf963b87423e85f_cgraph">
<area shape="rect" id="node3" href="a00193.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&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>extra</em>&#160;</td>
        </tr>
        <tr>
          <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 class="params">
    <tr><td class="paramname">size</td><td>of object. </td></tr>
    <tr><td class="paramname">extra</td><td>heap space needed for data. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="a00193_source.html#l00449">449</a> of file <a class="el" href="a00193_source.html">platform.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="a00193_a2c7ac8dd4bafcd4e8fc240be94321b7a_cgraph.png" border="0" usemap="#a00193_a2c7ac8dd4bafcd4e8fc240be94321b7a_cgraph" alt=""/></div>
<map name="a00193_a2c7ac8dd4bafcd4e8fc240be94321b7a_cgraph" id="a00193_a2c7ac8dd4bafcd4e8fc240be94321b7a_cgraph">
<area shape="rect" id="node3" href="a00193.html#aec6d33ffff1d527a4f54ec7d94787a27" title="Portable memory allocation helper function." alt="" coords="199,5,340,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&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">caddr_t&#160;</td>
          <td class="paramname"><em>address</em>&#160;</td>
        </tr>
        <tr>
          <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 class="params">
    <tr><td class="paramname">size</td><td>of memory needed for object. </td></tr>
    <tr><td class="paramname">address</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="a00193_source.html#l00460">460</a> of file <a class="el" href="a00193_source.html">platform.h</a>.</p>

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

</div>
</div>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="a00193.html">platform.h</a>      </li>
      <li class="footer">Generated on Wed Apr 13 2011 22:39:47 for ucommon by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </li>
    </ul>
  </div>

</body>
</html>