src.dualinventive.com/jjacobs/dinetrpcll-sniffer/libdi/3rdparty/mpack/docs/group__config.html

482 lines
29 KiB
HTML

<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>MPack: Configuration Options</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-mpack-css.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">MPack
&#160;<span id="projectnumber">0.8.2</span>
</div>
<div id="projectbrief">A C encoding/decoding library for the MessagePack serialization format.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Pages</span></a></li>
<li class="current"><a href="modules.html"><span>Modules</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Configuration Options</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>Defines the MPack configuration options. </p>
<p>Copy <code>mpack-config.h.sample</code> to <code>mpack-config.h</code> somewhere in your project's include tree and, optionally, edit it to suit your setup. In almost all cases you can leave this file with the default config.</p>
<p>You can also override the default configuration by pre-defining options to 0 or 1. </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Features</h2></td></tr>
<tr class="memitem:gafc71f44de1132a4efed4e2d450eb8197"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gafc71f44de1132a4efed4e2d450eb8197">MPACK_READER</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gafc71f44de1132a4efed4e2d450eb8197"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables compilation of the base Tag Reader. <a href="#gafc71f44de1132a4efed4e2d450eb8197">More...</a><br /></td></tr>
<tr class="separator:gafc71f44de1132a4efed4e2d450eb8197"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6e845bcb4582176785c92cbdb091c4a5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga6e845bcb4582176785c92cbdb091c4a5">MPACK_EXPECT</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga6e845bcb4582176785c92cbdb091c4a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables compilation of the static Expect API. <a href="#ga6e845bcb4582176785c92cbdb091c4a5">More...</a><br /></td></tr>
<tr class="separator:ga6e845bcb4582176785c92cbdb091c4a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaac5bc095026e6f851370c966845bb91f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaac5bc095026e6f851370c966845bb91f">MPACK_NODE</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gaac5bc095026e6f851370c966845bb91f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables compilation of the dynamic Node API. <a href="#gaac5bc095026e6f851370c966845bb91f">More...</a><br /></td></tr>
<tr class="separator:gaac5bc095026e6f851370c966845bb91f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga76dacaad0bc2e5bb9421338f1eeecd0f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga76dacaad0bc2e5bb9421338f1eeecd0f">MPACK_WRITER</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga76dacaad0bc2e5bb9421338f1eeecd0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables compilation of the Writer. <a href="#ga76dacaad0bc2e5bb9421338f1eeecd0f">More...</a><br /></td></tr>
<tr class="separator:ga76dacaad0bc2e5bb9421338f1eeecd0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Dependencies</h2></td></tr>
<tr class="memitem:ga94840bf23dac204b9fe48c769777400e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga94840bf23dac204b9fe48c769777400e">MPACK_STDLIB</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga94840bf23dac204b9fe48c769777400e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the use of C stdlib. <a href="#ga94840bf23dac204b9fe48c769777400e">More...</a><br /></td></tr>
<tr class="separator:ga94840bf23dac204b9fe48c769777400e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab26adf73d74737f21ee1ec6bf8f213c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gab26adf73d74737f21ee1ec6bf8f213c6">MPACK_STDIO</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gab26adf73d74737f21ee1ec6bf8f213c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the use of C stdio. <a href="#gab26adf73d74737f21ee1ec6bf8f213c6">More...</a><br /></td></tr>
<tr class="separator:gab26adf73d74737f21ee1ec6bf8f213c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
System Functions</h2></td></tr>
<tr class="memitem:gaae24f07943fceb85820a88fa72373482"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaae24f07943fceb85820a88fa72373482">MPACK_MALLOC</a>&#160;&#160;&#160;malloc</td></tr>
<tr class="memdesc:gaae24f07943fceb85820a88fa72373482"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the memory allocation function used by MPack. <a href="#gaae24f07943fceb85820a88fa72373482">More...</a><br /></td></tr>
<tr class="separator:gaae24f07943fceb85820a88fa72373482"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga298d7c2e4093bcfe361088df9e35956a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga298d7c2e4093bcfe361088df9e35956a">MPACK_FREE</a>&#160;&#160;&#160;free</td></tr>
<tr class="memdesc:ga298d7c2e4093bcfe361088df9e35956a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the memory free function used by MPack. <a href="#ga298d7c2e4093bcfe361088df9e35956a">More...</a><br /></td></tr>
<tr class="separator:ga298d7c2e4093bcfe361088df9e35956a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga811ae202f55b9c6a15f6c3ea138964fa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga811ae202f55b9c6a15f6c3ea138964fa">MPACK_REALLOC</a>&#160;&#160;&#160;realloc</td></tr>
<tr class="memdesc:ga811ae202f55b9c6a15f6c3ea138964fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the realloc function used by MPack. <a href="#ga811ae202f55b9c6a15f6c3ea138964fa">More...</a><br /></td></tr>
<tr class="separator:ga811ae202f55b9c6a15f6c3ea138964fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Debugging options</h2></td></tr>
<tr class="memitem:gaad55f98fb20f7c0de53eada292bab51b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gaad55f98fb20f7c0de53eada292bab51b">MPACK_DEBUG</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gaad55f98fb20f7c0de53eada292bab51b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables debug features. <a href="#gaad55f98fb20f7c0de53eada292bab51b">More...</a><br /></td></tr>
<tr class="separator:gaad55f98fb20f7c0de53eada292bab51b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae7e35c73ea60e1638bb3c906102eee28"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gae7e35c73ea60e1638bb3c906102eee28">MPACK_STRINGS</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gae7e35c73ea60e1638bb3c906102eee28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables descriptive error and type strings. <a href="#gae7e35c73ea60e1638bb3c906102eee28">More...</a><br /></td></tr>
<tr class="separator:gae7e35c73ea60e1638bb3c906102eee28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9fd42292abe10e1581d75a4f8d457d61"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga9fd42292abe10e1581d75a4f8d457d61">MPACK_CUSTOM_ASSERT</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:ga9fd42292abe10e1581d75a4f8d457d61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this to 1 to implement a custom mpack_assert_fail() function. <a href="#ga9fd42292abe10e1581d75a4f8d457d61">More...</a><br /></td></tr>
<tr class="separator:ga9fd42292abe10e1581d75a4f8d457d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8c3a10274e55f106c8734fb65c575321"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga8c3a10274e55f106c8734fb65c575321">MPACK_READ_TRACKING</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga8c3a10274e55f106c8734fb65c575321"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables compound type size tracking for readers. <a href="#ga8c3a10274e55f106c8734fb65c575321">More...</a><br /></td></tr>
<tr class="separator:ga8c3a10274e55f106c8734fb65c575321"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga82020e4a54933931ed83698cc65491c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga82020e4a54933931ed83698cc65491c1">MPACK_WRITE_TRACKING</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga82020e4a54933931ed83698cc65491c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables compound type size tracking for writers. <a href="#ga82020e4a54933931ed83698cc65491c1">More...</a><br /></td></tr>
<tr class="separator:ga82020e4a54933931ed83698cc65491c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Miscellaneous</h2></td></tr>
<tr class="memitem:ga44e59b9d1a21ea2f489c0dcc5b52d166"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga44e59b9d1a21ea2f489c0dcc5b52d166">MPACK_OPTIMIZE_FOR_SIZE</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:ga44e59b9d1a21ea2f489c0dcc5b52d166"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether to optimize for size or speed. <a href="#ga44e59b9d1a21ea2f489c0dcc5b52d166">More...</a><br /></td></tr>
<tr class="separator:ga44e59b9d1a21ea2f489c0dcc5b52d166"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga30464f0269454ad72c7fb1b0b477225b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga30464f0269454ad72c7fb1b0b477225b">MPACK_STACK_SIZE</a>&#160;&#160;&#160;4096</td></tr>
<tr class="memdesc:ga30464f0269454ad72c7fb1b0b477225b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stack space in bytes to use when initializing a reader or writer with a stack-allocated buffer. <a href="#ga30464f0269454ad72c7fb1b0b477225b">More...</a><br /></td></tr>
<tr class="separator:ga30464f0269454ad72c7fb1b0b477225b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga95eeff0ce89e4bbb0bb75888df2da6b4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga95eeff0ce89e4bbb0bb75888df2da6b4">MPACK_BUFFER_SIZE</a>&#160;&#160;&#160;4096</td></tr>
<tr class="memdesc:ga95eeff0ce89e4bbb0bb75888df2da6b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Buffer size to use for allocated buffers (such as for a file writer.) <a href="#ga95eeff0ce89e4bbb0bb75888df2da6b4">More...</a><br /></td></tr>
<tr class="separator:ga95eeff0ce89e4bbb0bb75888df2da6b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga41e1f9cc9a9b4934473bb1997fa1d27c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#ga41e1f9cc9a9b4934473bb1997fa1d27c">MPACK_NODE_PAGE_SIZE</a>&#160;&#160;&#160;4096</td></tr>
<tr class="memdesc:ga41e1f9cc9a9b4934473bb1997fa1d27c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of an allocated node page in bytes. <a href="#ga41e1f9cc9a9b4934473bb1997fa1d27c">More...</a><br /></td></tr>
<tr class="separator:ga41e1f9cc9a9b4934473bb1997fa1d27c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabb291403e270476673d09faaba8304a7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gabb291403e270476673d09faaba8304a7">MPACK_NODE_INITIAL_DEPTH</a>&#160;&#160;&#160;8</td></tr>
<tr class="memdesc:gabb291403e270476673d09faaba8304a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The initial depth for the node parser. <a href="#gabb291403e270476673d09faaba8304a7">More...</a><br /></td></tr>
<tr class="separator:gabb291403e270476673d09faaba8304a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab1318ead9efc98fed887169d8dc37fe4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__config.html#gab1318ead9efc98fed887169d8dc37fe4">MPACK_NODE_MAX_DEPTH_WITHOUT_MALLOC</a>&#160;&#160;&#160;32</td></tr>
<tr class="memdesc:gab1318ead9efc98fed887169d8dc37fe4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum depth for the node parser if <a class="el" href="group__config.html#gaae24f07943fceb85820a88fa72373482">MPACK_MALLOC</a> is not available. <a href="#gab1318ead9efc98fed887169d8dc37fe4">More...</a><br /></td></tr>
<tr class="separator:gab1318ead9efc98fed887169d8dc37fe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga95eeff0ce89e4bbb0bb75888df2da6b4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_BUFFER_SIZE&#160;&#160;&#160;4096</td>
</tr>
</table>
</div><div class="memdoc">
<p>Buffer size to use for allocated buffers (such as for a file writer.) </p>
<p>Starting with a single page and growing as needed seems to provide the best performance with minimal memory waste. Increasing this does not improve performance even when writing huge messages. </p>
</div>
</div>
<a class="anchor" id="ga9fd42292abe10e1581d75a4f8d457d61"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_CUSTOM_ASSERT&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>Set this to 1 to implement a custom mpack_assert_fail() function. </p>
<p>This function must not return, and must have the following signature:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> mpack_assert_fail(<span class="keyword">const</span> <span class="keywordtype">char</span>* message)</div></div><!-- fragment --><p>Asserts are only used when <a class="el" href="group__config.html#gaad55f98fb20f7c0de53eada292bab51b">MPACK_DEBUG</a> is enabled, and can be triggered by bugs in MPack or bugs due to incorrect usage of MPack. </p>
</div>
</div>
<a class="anchor" id="gaad55f98fb20f7c0de53eada292bab51b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_DEBUG&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables debug features. </p>
<p>You may want to wrap this around your own debug preprocs. By default, this is enabled if <code>DEBUG</code> or <code>_DEBUG</code> are defined.</p>
<p>Note that <a class="el" href="group__config.html#gaad55f98fb20f7c0de53eada292bab51b">MPACK_DEBUG</a> cannot be defined differently for different source files because it affects layout of structs defined in header files. Your entire project must be compiled with the same value of <a class="el" href="group__config.html#gaad55f98fb20f7c0de53eada292bab51b">MPACK_DEBUG</a>. (This is why <code>NDEBUG</code> is not used.) </p>
</div>
</div>
<a class="anchor" id="ga6e845bcb4582176785c92cbdb091c4a5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_EXPECT&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables compilation of the static Expect API. </p>
</div>
</div>
<a class="anchor" id="ga298d7c2e4093bcfe361088df9e35956a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_FREE&#160;&#160;&#160;free</td>
</tr>
</table>
</div><div class="memdoc">
<p>Defines the memory free function used by MPack. </p>
<p>This is used by helpers for automatically allocating data the correct size. If this macro is undefined, the allocation helpers will not be compiled.</p>
<p>The default is free() if <a class="el" href="group__config.html#gaae24f07943fceb85820a88fa72373482">MPACK_MALLOC</a> has not been customized and <a class="el" href="group__config.html#ga94840bf23dac204b9fe48c769777400e">MPACK_STDLIB</a> is enabled. </p>
</div>
</div>
<a class="anchor" id="gaae24f07943fceb85820a88fa72373482"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_MALLOC&#160;&#160;&#160;malloc</td>
</tr>
</table>
</div><div class="memdoc">
<p>Defines the memory allocation function used by MPack. </p>
<p>This is used by helpers for automatically allocating data the correct size, and for debugging functions. If this macro is undefined, the allocation helpers will not be compiled.</p>
<p>The default is malloc() if <a class="el" href="group__config.html#ga94840bf23dac204b9fe48c769777400e">MPACK_STDLIB</a> is enabled. </p>
</div>
</div>
<a class="anchor" id="gaac5bc095026e6f851370c966845bb91f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_NODE&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables compilation of the dynamic Node API. </p>
</div>
</div>
<a class="anchor" id="gabb291403e270476673d09faaba8304a7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_NODE_INITIAL_DEPTH&#160;&#160;&#160;8</td>
</tr>
</table>
</div><div class="memdoc">
<p>The initial depth for the node parser. </p>
<p>When MPACK_MALLOC is available, the node parser has no practical depth limit, and it is not recursive so there is no risk of overflowing the call stack. </p>
</div>
</div>
<a class="anchor" id="gab1318ead9efc98fed887169d8dc37fe4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_NODE_MAX_DEPTH_WITHOUT_MALLOC&#160;&#160;&#160;32</td>
</tr>
</table>
</div><div class="memdoc">
<p>The maximum depth for the node parser if <a class="el" href="group__config.html#gaae24f07943fceb85820a88fa72373482">MPACK_MALLOC</a> is not available. </p>
<p>The parsing stack is placed on the call stack. </p>
</div>
</div>
<a class="anchor" id="ga41e1f9cc9a9b4934473bb1997fa1d27c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_NODE_PAGE_SIZE&#160;&#160;&#160;4096</td>
</tr>
</table>
</div><div class="memdoc">
<p>Size of an allocated node page in bytes. </p>
<p>The children for a given compound element must be contiguous, so larger pages than this may be allocated as needed. (Safety checks exist to prevent malicious data from causing too large allocations.)</p>
<p>Nodes are 16 bytes on most common architectures (32-bit and 64-bit.)</p>
<p>Using as many nodes fit in one memory page seems to provide the best performance, and has very little waste when parsing small messages. </p>
</div>
</div>
<a class="anchor" id="ga44e59b9d1a21ea2f489c0dcc5b52d166"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_OPTIMIZE_FOR_SIZE&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>Whether to optimize for size or speed. </p>
<p>Optimizing for size simplifies some parsing and encoding algorithms at the expense of speed, and saves a few kilobytes of space in the resulting executable.</p>
<p>This automatically detects -Os with GCC/Clang. Unfortunately there doesn't seem to be a macro defined for /Os under MSVC. </p>
</div>
</div>
<a class="anchor" id="ga8c3a10274e55f106c8734fb65c575321"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_READ_TRACKING&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables compound type size tracking for readers. </p>
<p>This ensures that the correct number of elements or bytes are read from a compound type.</p>
<p>This is enabled by default in debug builds (provided a malloc() is available.) </p>
</div>
</div>
<a class="anchor" id="gafc71f44de1132a4efed4e2d450eb8197"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_READER&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables compilation of the base Tag Reader. </p>
</div>
</div>
<a class="anchor" id="ga811ae202f55b9c6a15f6c3ea138964fa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_REALLOC&#160;&#160;&#160;realloc</td>
</tr>
</table>
</div><div class="memdoc">
<p>Defines the realloc function used by MPack. </p>
<p>It is used by growable buffers to resize more efficiently.</p>
<p>The default is realloc() if <a class="el" href="group__config.html#gaae24f07943fceb85820a88fa72373482">MPACK_MALLOC</a> has not been customized and <a class="el" href="group__config.html#ga94840bf23dac204b9fe48c769777400e">MPACK_STDLIB</a> is enabled.</p>
<p>This is optional, even when <a class="el" href="group__config.html#gaae24f07943fceb85820a88fa72373482">MPACK_MALLOC</a> is used. If <a class="el" href="group__config.html#gaae24f07943fceb85820a88fa72373482">MPACK_MALLOC</a> is set and <a class="el" href="group__config.html#ga811ae202f55b9c6a15f6c3ea138964fa">MPACK_REALLOC</a> is not, <a class="el" href="group__config.html#gaae24f07943fceb85820a88fa72373482">MPACK_MALLOC</a> is used with a simple copy to grow buffers. </p>
</div>
</div>
<a class="anchor" id="ga30464f0269454ad72c7fb1b0b477225b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_STACK_SIZE&#160;&#160;&#160;4096</td>
</tr>
</table>
</div><div class="memdoc">
<p>Stack space in bytes to use when initializing a reader or writer with a stack-allocated buffer. </p>
</div>
</div>
<a class="anchor" id="gab26adf73d74737f21ee1ec6bf8f213c6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_STDIO&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables the use of C stdio. </p>
<p>This adds helpers for easily reading/writing C files and makes debugging easier. </p>
</div>
</div>
<a class="anchor" id="ga94840bf23dac204b9fe48c769777400e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_STDLIB&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables the use of C stdlib. </p>
<p>This allows the library to use malloc for debugging and in allocation helpers. </p>
</div>
</div>
<a class="anchor" id="gae7e35c73ea60e1638bb3c906102eee28"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_STRINGS&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables descriptive error and type strings. </p>
<p>This can be turned off (by defining it to 0) to maximize space savings on embedded devices. If this is disabled, string functions such as <a class="el" href="group__common.html#gae275cfb03fa60ffac086ae2230c3d470" title="Converts an MPack error to a string. ">mpack_error_to_string()</a> and <a class="el" href="group__common.html#ga3b259cbb9ea12088346ff897676219d0" title="Converts an MPack type to a string. ">mpack_type_to_string()</a> return an empty string.</p>
<p>This is on by default if it is not defined. </p>
</div>
</div>
<a class="anchor" id="ga82020e4a54933931ed83698cc65491c1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_WRITE_TRACKING&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables compound type size tracking for writers. </p>
<p>This ensures that the correct number of elements or bytes are written in a compound type.</p>
<p>Note that without write tracking enabled, it is possible for buggy code to emit invalid MessagePack without flagging an error by writing the wrong number of elements or bytes in a compound type. With tracking enabled, MPack will catch such errors and break on the offending line of code.</p>
<p>This is enabled by default in debug builds (provided a malloc() is available.) </p>
</div>
</div>
<a class="anchor" id="ga76dacaad0bc2e5bb9421338f1eeecd0f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MPACK_WRITER&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enables compilation of the Writer. </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>