Files
rtabmap/api/latest/classrtabmap_1_1DBDriver.html
T

1368 lines
142 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>RTAB-Map: rtabmap::DBDriver Class Reference</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="custom.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">window.RTABMAP_DOC_ROOT="";</script>
<script type="text/javascript" src="../versions.js"></script>
<script type="text/javascript" src="version-switcher.js"></script>
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">DoxygenAwesomeDarkModeToggle.init();</script>
</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 id="projectrow">
<td id="projectalign">
<div id="projectname">RTAB-Map<span id="projectnumber">&#160;0.23.12</span>
</div>
<div id="projectbrief">Real-Time Appearance-Based Mapping</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classrtabmap_1_1DBDriver.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classrtabmap_1_1DBDriver-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">rtabmap::DBDriver Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
<p>Abstract database driver for RTAB-Map maps (signatures, links, words, statistics).
<a href="classrtabmap_1_1DBDriver.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="DBDriver_8h_source.html">DBDriver.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for rtabmap::DBDriver:</div>
<div class="dyncontent">
<div class="center"><img src="classrtabmap_1_1DBDriver__inherit__graph.png" border="0" usemap="#artabmap_1_1DBDriver_inherit__map" alt="Inheritance graph"/></div>
<map name="artabmap_1_1DBDriver_inherit__map" id="artabmap_1_1DBDriver_inherit__map">
<area shape="rect" title="Abstract database driver for RTAB&#45;Map maps (signatures, links, words, statistics)." alt="" coords="28,152,172,177"/>
<area shape="rect" href="classrtabmap_1_1DBDriverSqlite3.html" title="SQLite3 implementation of DBDriver for RTAB&#45;Map map databases." alt="" coords="5,225,195,251"/>
<area shape="poly" title=" " alt="" coords="103,191,103,225,97,225,97,191"/>
<area shape="rect" href="classUThread.html" title=" " alt="" coords="45,79,155,104"/>
<area shape="poly" title=" " alt="" coords="103,118,103,152,97,152,97,118"/>
<area shape="rect" href="classUThreadC_3_01void_01_4.html" title=" " alt="" coords="28,5,172,31"/>
<area shape="poly" title=" " alt="" coords="103,44,103,79,97,79,97,44"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for rtabmap::DBDriver:</div>
<div class="dyncontent">
<div class="center"><img src="classrtabmap_1_1DBDriver__coll__graph.png" border="0" usemap="#artabmap_1_1DBDriver_coll__map" alt="Collaboration graph"/></div>
<map name="artabmap_1_1DBDriver_coll__map" id="artabmap_1_1DBDriver_coll__map">
<area shape="rect" title="Abstract database driver for RTAB&#45;Map maps (signatures, links, words, statistics)." alt="" coords="5,152,149,177"/>
<area shape="rect" href="classUThread.html" title=" " alt="" coords="22,79,133,104"/>
<area shape="poly" title=" " alt="" coords="80,118,80,152,75,152,75,118"/>
<area shape="rect" href="classUThreadC_3_01void_01_4.html" title=" " alt="" coords="5,5,149,31"/>
<area shape="poly" title=" " alt="" coords="80,44,80,79,75,79,75,44"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3c73e045d9bdf8cad1c58efc9d930427" id="r_a3c73e045d9bdf8cad1c58efc9d930427"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a3c73e045d9bdf8cad1c58efc9d930427">parseParameters</a> (const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;parameters)</td></tr>
<tr class="memdesc:a3c73e045d9bdf8cad1c58efc9d930427"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse driver parameters from the map (e.g. target schema version). <br /></td></tr>
<tr class="separator:a3c73e045d9bdf8cad1c58efc9d930427"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ecd6182f404d8e6822b66a54f1d248a" id="r_a0ecd6182f404d8e6822b66a54f1d248a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a0ecd6182f404d8e6822b66a54f1d248a">isInMemory</a> () const</td></tr>
<tr class="memdesc:a0ecd6182f404d8e6822b66a54f1d248a"><td class="mdescLeft">&#160;</td><td class="mdescRight">True when no database file URL was set at open time. <br /></td></tr>
<tr class="separator:a0ecd6182f404d8e6822b66a54f1d248a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79365611bce06aeda0d078641be89cab" id="r_a79365611bce06aeda0d078641be89cab"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a79365611bce06aeda0d078641be89cab">getUrl</a> () const</td></tr>
<tr class="separator:a79365611bce06aeda0d078641be89cab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a456bc49e8e60e0c754078a4b09e3f1a1" id="r_a456bc49e8e60e0c754078a4b09e3f1a1"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a456bc49e8e60e0c754078a4b09e3f1a1">getTargetVersion</a> () const</td></tr>
<tr class="separator:a456bc49e8e60e0c754078a4b09e3f1a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1510e157f3ab8df3284528369a6d88f" id="r_ad1510e157f3ab8df3284528369a6d88f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#ad1510e157f3ab8df3284528369a6d88f">asyncSave</a> (<a class="el" href="classrtabmap_1_1Signature.html">Signature</a> *s)</td></tr>
<tr class="memdesc:ad1510e157f3ab8df3284528369a6d88f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Queue a signature for deferred save; ownership is transferred. <br /></td></tr>
<tr class="separator:ad1510e157f3ab8df3284528369a6d88f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88eee22aa9707a6993f734fe29f6af5d" id="r_a88eee22aa9707a6993f734fe29f6af5d"><td class="memItemLeft" align="right" valign="top"><a id="a88eee22aa9707a6993f734fe29f6af5d" name="a88eee22aa9707a6993f734fe29f6af5d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>asyncSave</b> (<a class="el" href="classrtabmap_1_1VisualWord.html">VisualWord</a> *vw)</td></tr>
<tr class="memdesc:a88eee22aa9707a6993f734fe29f6af5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Queue a visual word for deferred save; ownership is transferred. <br /></td></tr>
<tr class="separator:a88eee22aa9707a6993f734fe29f6af5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4a0036162994c2ef76d4236e2a7ea0a" id="r_ab4a0036162994c2ef76d4236e2a7ea0a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#ab4a0036162994c2ef76d4236e2a7ea0a">emptyTrashes</a> (bool async=false)</td></tr>
<tr class="memdesc:ab4a0036162994c2ef76d4236e2a7ea0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flush queued signatures and visual words to the database. <br /></td></tr>
<tr class="separator:ab4a0036162994c2ef76d4236e2a7ea0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada0df079a28dd5c2cc37baf2f3f8e79d" id="r_ada0df079a28dd5c2cc37baf2f3f8e79d"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#ada0df079a28dd5c2cc37baf2f3f8e79d">getEmptyTrashesTime</a> () const</td></tr>
<tr class="separator:ada0df079a28dd5c2cc37baf2f3f8e79d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab635aa1b5087868f3bc3e27cc3bd92ab" id="r_ab635aa1b5087868f3bc3e27cc3bd92ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#ab635aa1b5087868f3bc3e27cc3bd92ab">setTimestampUpdateEnabled</a> (bool enabled)</td></tr>
<tr class="separator:ab635aa1b5087868f3bc3e27cc3bd92ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbf62fc6967cf618e6b2aece44f45230" id="r_abbf62fc6967cf618e6b2aece44f45230"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#abbf62fc6967cf618e6b2aece44f45230">generateGraph</a> (const std::string &amp;fileName, const std::set&lt; int &gt; &amp;ids=std::set&lt; int &gt;(), const std::map&lt; int, <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;otherSignatures=std::map&lt; int, <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt;())</td></tr>
<tr class="memdesc:abbf62fc6967cf618e6b2aece44f45230"><td class="mdescLeft">&#160;</td><td class="mdescRight">Export the pose graph to a Graphviz DOT file for visualization. <br /></td></tr>
<tr class="separator:abbf62fc6967cf618e6b2aece44f45230"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a835fc23bd4f6532af71f3aadfb8037d8" id="r_a835fc23bd4f6532af71f3aadfb8037d8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a835fc23bd4f6532af71f3aadfb8037d8">executeNoResult</a> (const std::string &amp;sql) const</td></tr>
<tr class="memdesc:a835fc23bd4f6532af71f3aadfb8037d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run a SQL statement that does not return result rows. <br /></td></tr>
<tr class="separator:a835fc23bd4f6532af71f3aadfb8037d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Direct database updates</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Write node or link data immediately (not via the async trash). </p>
</div></td></tr>
<tr class="memitem:acfb5fed58aad744050c392a8d346926b" id="r_acfb5fed58aad744050c392a8d346926b"><td class="memItemLeft" align="right" valign="top"><a id="acfb5fed58aad744050c392a8d346926b" name="acfb5fed58aad744050c392a8d346926b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>addLink</b> (const <a class="el" href="classrtabmap_1_1Link.html">Link</a> &amp;link)</td></tr>
<tr class="memdesc:acfb5fed58aad744050c392a8d346926b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert or replace a link in the database. <br /></td></tr>
<tr class="separator:acfb5fed58aad744050c392a8d346926b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c3c7536423a956e74d3f609ee814717" id="r_a7c3c7536423a956e74d3f609ee814717"><td class="memItemLeft" align="right" valign="top"><a id="a7c3c7536423a956e74d3f609ee814717" name="a7c3c7536423a956e74d3f609ee814717"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>removeLink</b> (int from, int to)</td></tr>
<tr class="memdesc:a7c3c7536423a956e74d3f609ee814717"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a link between two nodes. <br /></td></tr>
<tr class="separator:a7c3c7536423a956e74d3f609ee814717"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94eb69c07a44343c008654b1401dce80" id="r_a94eb69c07a44343c008654b1401dce80"><td class="memItemLeft" align="right" valign="top"><a id="a94eb69c07a44343c008654b1401dce80" name="a94eb69c07a44343c008654b1401dce80"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>updateLink</b> (const <a class="el" href="classrtabmap_1_1Link.html">Link</a> &amp;link)</td></tr>
<tr class="memdesc:a94eb69c07a44343c008654b1401dce80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update an existing link in the database. <br /></td></tr>
<tr class="separator:a94eb69c07a44343c008654b1401dce80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f5e8e0b367e49cfbba7c96b28306a61" id="r_a2f5e8e0b367e49cfbba7c96b28306a61"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a2f5e8e0b367e49cfbba7c96b28306a61">updateOccupancyGrid</a> (int nodeId, const cv::Mat &amp;ground, const cv::Mat &amp;obstacles, const cv::Mat &amp;empty, float cellSize, const cv::Point3f &amp;viewpoint)</td></tr>
<tr class="memdesc:a2f5e8e0b367e49cfbba7c96b28306a61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update occupancy grid cells for a node. <br /></td></tr>
<tr class="separator:a2f5e8e0b367e49cfbba7c96b28306a61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d59931a9496cf1b23568f79fc421cc1" id="r_a6d59931a9496cf1b23568f79fc421cc1"><td class="memItemLeft" align="right" valign="top"><a id="a6d59931a9496cf1b23568f79fc421cc1" name="a6d59931a9496cf1b23568f79fc421cc1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>updateCalibration</b> (int nodeId, const std::vector&lt; <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &gt; &amp;models, const std::vector&lt; <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &gt; &amp;stereoModels)</td></tr>
<tr class="memdesc:a6d59931a9496cf1b23568f79fc421cc1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update camera calibration stored for a node. <br /></td></tr>
<tr class="separator:a6d59931a9496cf1b23568f79fc421cc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a02d595356e2dd0ed8b8933a6c4e811" id="r_a3a02d595356e2dd0ed8b8933a6c4e811"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a3a02d595356e2dd0ed8b8933a6c4e811">updateDepthImage</a> (int nodeId, const cv::Mat &amp;image, const std::string &amp;format)</td></tr>
<tr class="memdesc:a3a02d595356e2dd0ed8b8933a6c4e811"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the depth image stored for a node. <br /></td></tr>
<tr class="separator:a3a02d595356e2dd0ed8b8933a6c4e811"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d167e53d447d77dd3fe35665f8a661b" id="r_a7d167e53d447d77dd3fe35665f8a661b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a7d167e53d447d77dd3fe35665f8a661b">updateLaserScan</a> (int nodeId, const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &amp;scan)</td></tr>
<tr class="memdesc:a7d167e53d447d77dd3fe35665f8a661b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the laser scan stored for a node. <br /></td></tr>
<tr class="separator:a7d167e53d447d77dd3fe35665f8a661b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Session exports and map artifacts</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p><a class="el" href="classrtabmap_1_1Statistics.html" title="Collects and manages runtime statistics for RTAB-Map.">Statistics</a>, preview image, optimized poses, 2D map, mesh and FLANN index. </p>
</div></td></tr>
<tr class="memitem:a898f008bec52ee82902f21824e9c7e1d" id="r_a898f008bec52ee82902f21824e9c7e1d"><td class="memItemLeft" align="right" valign="top"><a id="a898f008bec52ee82902f21824e9c7e1d" name="a898f008bec52ee82902f21824e9c7e1d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>addInfoAfterRun</b> (int stMemSize, int lastSignAdded, int processMemUsed, int databaseMemUsed, int dictionarySize, const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;parameters) const</td></tr>
<tr class="separator:a898f008bec52ee82902f21824e9c7e1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4dbccd0dabf72da724488692b1713832" id="r_a4dbccd0dabf72da724488692b1713832"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a4dbccd0dabf72da724488692b1713832">addStatistics</a> (const <a class="el" href="classrtabmap_1_1Statistics.html">Statistics</a> &amp;statistics, bool saveWmState) const</td></tr>
<tr class="memdesc:a4dbccd0dabf72da724488692b1713832"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a <a class="el" href="classrtabmap_1_1Statistics.html">Statistics</a> record for a processed node. <br /></td></tr>
<tr class="separator:a4dbccd0dabf72da724488692b1713832"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8323a53d20e4ade6b1c7b268c473a170" id="r_a8323a53d20e4ade6b1c7b268c473a170"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a8323a53d20e4ade6b1c7b268c473a170">savePreviewImage</a> (const cv::Mat &amp;image) const</td></tr>
<tr class="memdesc:a8323a53d20e4ade6b1c7b268c473a170"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save the map preview thumbnail in the Admin table. <br /></td></tr>
<tr class="separator:a8323a53d20e4ade6b1c7b268c473a170"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1423596308a8baf123ecbc7fdfc1e82" id="r_aa1423596308a8baf123ecbc7fdfc1e82"><td class="memItemLeft" align="right" valign="top"><a id="aa1423596308a8baf123ecbc7fdfc1e82" name="aa1423596308a8baf123ecbc7fdfc1e82"></a>
cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><b>loadPreviewImage</b> () const</td></tr>
<tr class="memdesc:aa1423596308a8baf123ecbc7fdfc1e82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load and uncompress the map preview thumbnail from the Admin table. <br /></td></tr>
<tr class="separator:aa1423596308a8baf123ecbc7fdfc1e82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab91ad40e4273485e5f0951fac32c22e4" id="r_ab91ad40e4273485e5f0951fac32c22e4"><td class="memItemLeft" align="right" valign="top"><a id="ab91ad40e4273485e5f0951fac32c22e4" name="ab91ad40e4273485e5f0951fac32c22e4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>saveOptimizedPoses</b> (const std::map&lt; int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &gt; &amp;optimizedPoses, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;lastlocalizationPose) const</td></tr>
<tr class="memdesc:ab91ad40e4273485e5f0951fac32c22e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Persist graph-optimized poses and last localization pose. <br /></td></tr>
<tr class="separator:ab91ad40e4273485e5f0951fac32c22e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ef8c39b350634d21b57b1c07b029e55" id="r_a6ef8c39b350634d21b57b1c07b029e55"><td class="memItemLeft" align="right" valign="top"><a id="a6ef8c39b350634d21b57b1c07b029e55" name="a6ef8c39b350634d21b57b1c07b029e55"></a>
std::map&lt; int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>loadOptimizedPoses</b> (<a class="el" href="classrtabmap_1_1Transform.html">Transform</a> *lastlocalizationPose=0) const</td></tr>
<tr class="memdesc:a6ef8c39b350634d21b57b1c07b029e55"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load optimized poses; optional last localization pose output. <br /></td></tr>
<tr class="separator:a6ef8c39b350634d21b57b1c07b029e55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5bed0d1f92c1cc864dedf99b99a44037" id="r_a5bed0d1f92c1cc864dedf99b99a44037"><td class="memItemLeft" align="right" valign="top"><a id="a5bed0d1f92c1cc864dedf99b99a44037" name="a5bed0d1f92c1cc864dedf99b99a44037"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>save2DMap</b> (const cv::Mat &amp;map, float xMin, float yMin, float cellSize) const</td></tr>
<tr class="memdesc:a5bed0d1f92c1cc864dedf99b99a44037"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save the assembled 2D occupancy grid and its origin metadata. <br /></td></tr>
<tr class="separator:a5bed0d1f92c1cc864dedf99b99a44037"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3d68850f4bb114e897e37af6b1c858a" id="r_aa3d68850f4bb114e897e37af6b1c858a"><td class="memItemLeft" align="right" valign="top"><a id="aa3d68850f4bb114e897e37af6b1c858a" name="aa3d68850f4bb114e897e37af6b1c858a"></a>
cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><b>load2DMap</b> (float &amp;xMin, float &amp;yMin, float &amp;cellSize) const</td></tr>
<tr class="memdesc:aa3d68850f4bb114e897e37af6b1c858a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load the 2D map and fill origin/cell size outputs. <br /></td></tr>
<tr class="separator:aa3d68850f4bb114e897e37af6b1c858a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22d5643353b8d49bcc94c5a4abbc9a39" id="r_a22d5643353b8d49bcc94c5a4abbc9a39"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a22d5643353b8d49bcc94c5a4abbc9a39">saveOptimizedMesh</a> (const cv::Mat &amp;cloud, const std::vector&lt; std::vector&lt; std::vector&lt; RTABMAP_PCL_INDEX &gt; &gt; &gt; &amp;polygons=std::vector&lt; std::vector&lt; std::vector&lt; RTABMAP_PCL_INDEX &gt; &gt; &gt;(), const std::vector&lt; std::vector&lt; Eigen::Vector2f &gt; &gt; &amp;texCoords=std::vector&lt; std::vector&lt; Eigen::Vector2f &gt; &gt;(), const cv::Mat &amp;textures=cv::Mat()) const</td></tr>
<tr class="memdesc:a22d5643353b8d49bcc94c5a4abbc9a39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Persist the global optimized 3D mesh to the database. <br /></td></tr>
<tr class="separator:a22d5643353b8d49bcc94c5a4abbc9a39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac012fb9b51432dab5436fb6fff7fbd8a" id="r_ac012fb9b51432dab5436fb6fff7fbd8a"><td class="memItemLeft" align="right" valign="top"><a id="ac012fb9b51432dab5436fb6fff7fbd8a" name="ac012fb9b51432dab5436fb6fff7fbd8a"></a>
cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><b>loadOptimizedMesh</b> (std::vector&lt; std::vector&lt; std::vector&lt; RTABMAP_PCL_INDEX &gt; &gt; &gt; *polygons=0, std::vector&lt; std::vector&lt; Eigen::Vector2f &gt; &gt; *texCoords=0, cv::Mat *textures=0) const</td></tr>
<tr class="separator:ac012fb9b51432dab5436fb6fff7fbd8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33c2abff50e61f35efbbdbe530963fea" id="r_a33c2abff50e61f35efbbdbe530963fea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a33c2abff50e61f35efbbdbe530963fea">saveFlannIndex</a> (const std::vector&lt; unsigned char &gt; &amp;indexData) const</td></tr>
<tr class="memdesc:a33c2abff50e61f35efbbdbe530963fea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Persist the visual word dictionary FLANN index (serialized blob). <br /></td></tr>
<tr class="separator:a33c2abff50e61f35efbbdbe530963fea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Connection and database introspection</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Mutex-protected wrappers around protected <code>*Query</code>() methods. </p>
</div></td></tr>
<tr class="memitem:ac6c0a2260ba2c3cc030136c9609142f5" id="r_ac6c0a2260ba2c3cc030136c9609142f5"><td class="memItemLeft" align="right" valign="top"><a id="ac6c0a2260ba2c3cc030136c9609142f5" name="ac6c0a2260ba2c3cc030136c9609142f5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>openConnection</b> (const std::string &amp;url, bool overwritten=false, bool readOnly=false)</td></tr>
<tr class="memdesc:ac6c0a2260ba2c3cc030136c9609142f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open or create the database at <code>url</code> (empty <code>url</code> uses an in-memory database). <br /></td></tr>
<tr class="separator:ac6c0a2260ba2c3cc030136c9609142f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb644a203d148d0b29db41aea04c949f" id="r_abb644a203d148d0b29db41aea04c949f"><td class="memItemLeft" align="right" valign="top"><a id="abb644a203d148d0b29db41aea04c949f" name="abb644a203d148d0b29db41aea04c949f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>closeConnection</b> (bool save=true, const std::string &amp;outputUrl=&quot;&quot;)</td></tr>
<tr class="memdesc:abb644a203d148d0b29db41aea04c949f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the connection; optionally flush trashes and save in-memory DB to <code>outputUrl</code>. <br /></td></tr>
<tr class="separator:abb644a203d148d0b29db41aea04c949f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b1222cf6e75d7365b5b90c37bca2a85" id="r_a7b1222cf6e75d7365b5b90c37bca2a85"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a7b1222cf6e75d7365b5b90c37bca2a85">isConnected</a> () const</td></tr>
<tr class="separator:a7b1222cf6e75d7365b5b90c37bca2a85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a618043a677e3990eeb7706795bd60f6e" id="r_a618043a677e3990eeb7706795bd60f6e"><td class="memItemLeft" align="right" valign="top"><a id="a618043a677e3990eeb7706795bd60f6e" name="a618043a677e3990eeb7706795bd60f6e"></a>
unsigned long&#160;</td><td class="memItemRight" valign="bottom"><b>getMemoryUsed</b> () const</td></tr>
<tr class="separator:a618043a677e3990eeb7706795bd60f6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9adb7be1463016917f24a3db5f1e8264" id="r_a9adb7be1463016917f24a3db5f1e8264"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a9adb7be1463016917f24a3db5f1e8264">getDatabaseVersion</a> () const</td></tr>
<tr class="separator:a9adb7be1463016917f24a3db5f1e8264"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab01fce920bcfc055894e82b00e8fcb41" id="r_ab01fce920bcfc055894e82b00e8fcb41"><td class="memItemLeft" align="right" valign="top"><a id="ab01fce920bcfc055894e82b00e8fcb41" name="ab01fce920bcfc055894e82b00e8fcb41"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getNodesMemoryUsed</b> () const</td></tr>
<tr class="separator:ab01fce920bcfc055894e82b00e8fcb41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e18f1e6b3b789906d9227e11d62468b" id="r_a4e18f1e6b3b789906d9227e11d62468b"><td class="memItemLeft" align="right" valign="top"><a id="a4e18f1e6b3b789906d9227e11d62468b" name="a4e18f1e6b3b789906d9227e11d62468b"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getLinksMemoryUsed</b> () const</td></tr>
<tr class="separator:a4e18f1e6b3b789906d9227e11d62468b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2d82949007b523b28ce02a293e4832c" id="r_ac2d82949007b523b28ce02a293e4832c"><td class="memItemLeft" align="right" valign="top"><a id="ac2d82949007b523b28ce02a293e4832c" name="ac2d82949007b523b28ce02a293e4832c"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getImagesMemoryUsed</b> () const</td></tr>
<tr class="separator:ac2d82949007b523b28ce02a293e4832c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad13f88401a1bd493186679cd3f66478f" id="r_ad13f88401a1bd493186679cd3f66478f"><td class="memItemLeft" align="right" valign="top"><a id="ad13f88401a1bd493186679cd3f66478f" name="ad13f88401a1bd493186679cd3f66478f"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getDepthImagesMemoryUsed</b> () const</td></tr>
<tr class="separator:ad13f88401a1bd493186679cd3f66478f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e028b3c503d5147674589d481dd32db" id="r_a1e028b3c503d5147674589d481dd32db"><td class="memItemLeft" align="right" valign="top"><a id="a1e028b3c503d5147674589d481dd32db" name="a1e028b3c503d5147674589d481dd32db"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getCalibrationsMemoryUsed</b> () const</td></tr>
<tr class="separator:a1e028b3c503d5147674589d481dd32db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dfbea3149dbc7658d06424c29e13b60" id="r_a5dfbea3149dbc7658d06424c29e13b60"><td class="memItemLeft" align="right" valign="top"><a id="a5dfbea3149dbc7658d06424c29e13b60" name="a5dfbea3149dbc7658d06424c29e13b60"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getGridsMemoryUsed</b> () const</td></tr>
<tr class="separator:a5dfbea3149dbc7658d06424c29e13b60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace3edda0060c5e4eba2ec472ed5ad915" id="r_ace3edda0060c5e4eba2ec472ed5ad915"><td class="memItemLeft" align="right" valign="top"><a id="ace3edda0060c5e4eba2ec472ed5ad915" name="ace3edda0060c5e4eba2ec472ed5ad915"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getLaserScansMemoryUsed</b> () const</td></tr>
<tr class="separator:ace3edda0060c5e4eba2ec472ed5ad915"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af29b2ac7474f39de793d7ad076cca904" id="r_af29b2ac7474f39de793d7ad076cca904"><td class="memItemLeft" align="right" valign="top"><a id="af29b2ac7474f39de793d7ad076cca904" name="af29b2ac7474f39de793d7ad076cca904"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getUserDataMemoryUsed</b> () const</td></tr>
<tr class="separator:af29b2ac7474f39de793d7ad076cca904"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a561c5c8e79deeafdda012a90c3b9ee1f" id="r_a561c5c8e79deeafdda012a90c3b9ee1f"><td class="memItemLeft" align="right" valign="top"><a id="a561c5c8e79deeafdda012a90c3b9ee1f" name="a561c5c8e79deeafdda012a90c3b9ee1f"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getWordsMemoryUsed</b> () const</td></tr>
<tr class="separator:a561c5c8e79deeafdda012a90c3b9ee1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab68e45bc262a6ee9f1d65be55eb79cc" id="r_aab68e45bc262a6ee9f1d65be55eb79cc"><td class="memItemLeft" align="right" valign="top"><a id="aab68e45bc262a6ee9f1d65be55eb79cc" name="aab68e45bc262a6ee9f1d65be55eb79cc"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getFeaturesMemoryUsed</b> () const</td></tr>
<tr class="separator:aab68e45bc262a6ee9f1d65be55eb79cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2491adf7299140eeef41f8d7e8c545f7" id="r_a2491adf7299140eeef41f8d7e8c545f7"><td class="memItemLeft" align="right" valign="top"><a id="a2491adf7299140eeef41f8d7e8c545f7" name="a2491adf7299140eeef41f8d7e8c545f7"></a>
long&#160;</td><td class="memItemRight" valign="bottom"><b>getStatisticsMemoryUsed</b> () const</td></tr>
<tr class="separator:a2491adf7299140eeef41f8d7e8c545f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a587ef103249c066bdec1a5f00b84cd" id="r_a5a587ef103249c066bdec1a5f00b84cd"><td class="memItemLeft" align="right" valign="top"><a id="a5a587ef103249c066bdec1a5f00b84cd" name="a5a587ef103249c066bdec1a5f00b84cd"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>getLastNodesSize</b> () const</td></tr>
<tr class="separator:a5a587ef103249c066bdec1a5f00b84cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf457aaf64a92fbfd4367fceba17de67" id="r_aaf457aaf64a92fbfd4367fceba17de67"><td class="memItemLeft" align="right" valign="top"><a id="aaf457aaf64a92fbfd4367fceba17de67" name="aaf457aaf64a92fbfd4367fceba17de67"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>getLastDictionarySize</b> () const</td></tr>
<tr class="separator:aaf457aaf64a92fbfd4367fceba17de67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb03cbb5a3effd865d8cfe34be8b1116" id="r_afb03cbb5a3effd865d8cfe34be8b1116"><td class="memItemLeft" align="right" valign="top"><a id="afb03cbb5a3effd865d8cfe34be8b1116" name="afb03cbb5a3effd865d8cfe34be8b1116"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>getTotalNodesSize</b> () const</td></tr>
<tr class="separator:afb03cbb5a3effd865d8cfe34be8b1116"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afce15460894b4ce2d232fe66fa579cf3" id="r_afce15460894b4ce2d232fe66fa579cf3"><td class="memItemLeft" align="right" valign="top"><a id="afce15460894b4ce2d232fe66fa579cf3" name="afce15460894b4ce2d232fe66fa579cf3"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>getTotalDictionarySize</b> () const</td></tr>
<tr class="separator:afce15460894b4ce2d232fe66fa579cf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e3b98f37e0d62bd25a80f7807966acd" id="r_a6e3b98f37e0d62bd25a80f7807966acd"><td class="memItemLeft" align="right" valign="top"><a id="a6e3b98f37e0d62bd25a80f7807966acd" name="a6e3b98f37e0d62bd25a80f7807966acd"></a>
<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getLastParameters</b> () const</td></tr>
<tr class="separator:a6e3b98f37e0d62bd25a80f7807966acd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81ce18eb2852589e68c19f2a6d479a6b" id="r_a81ce18eb2852589e68c19f2a6d479a6b"><td class="memItemLeft" align="right" valign="top"><a id="a81ce18eb2852589e68c19f2a6d479a6b" name="a81ce18eb2852589e68c19f2a6d479a6b"></a>
std::map&lt; std::string, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getStatistics</b> (int nodeId, double &amp;stamp, std::vector&lt; int &gt; *wmState=0) const</td></tr>
<tr class="separator:a81ce18eb2852589e68c19f2a6d479a6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89e168fa08b30e1f48125ca8cb79db22" id="r_a89e168fa08b30e1f48125ca8cb79db22"><td class="memItemLeft" align="right" valign="top"><a id="a89e168fa08b30e1f48125ca8cb79db22" name="a89e168fa08b30e1f48125ca8cb79db22"></a>
std::map&lt; int, std::pair&lt; std::map&lt; std::string, float &gt;, double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getAllStatistics</b> () const</td></tr>
<tr class="separator:a89e168fa08b30e1f48125ca8cb79db22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf5484d62a10d4ca7363f1b29036e8e4" id="r_aaf5484d62a10d4ca7363f1b29036e8e4"><td class="memItemLeft" align="right" valign="top"><a id="aaf5484d62a10d4ca7363f1b29036e8e4" name="aaf5484d62a10d4ca7363f1b29036e8e4"></a>
std::map&lt; int, std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getAllStatisticsWmStates</b> () const</td></tr>
<tr class="separator:aaf5484d62a10d4ca7363f1b29036e8e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Load and query</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Load signatures, words, links and node metadata from the database. </p>
</div></td></tr>
<tr class="memitem:a86f2fa102eb4269cd2cc6093f4b848d8" id="r_a86f2fa102eb4269cd2cc6093f4b848d8"><td class="memItemLeft" align="right" valign="top"><a id="a86f2fa102eb4269cd2cc6093f4b848d8" name="a86f2fa102eb4269cd2cc6093f4b848d8"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>load</b> (<a class="el" href="classrtabmap_1_1VWDictionary.html">VWDictionary</a> &amp;dictionary, bool lastStateOnly=true, bool idsOnly=false) const</td></tr>
<tr class="separator:a86f2fa102eb4269cd2cc6093f4b848d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb034e015bb81a24b4a7dc9bc9903bb2" id="r_aeb034e015bb81a24b4a7dc9bc9903bb2"><td class="memItemLeft" align="right" valign="top"><a id="aeb034e015bb81a24b4a7dc9bc9903bb2" name="aeb034e015bb81a24b4a7dc9bc9903bb2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>loadLastNodes</b> (std::list&lt; <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;signatures, bool loadWordIdsOnly=false) const</td></tr>
<tr class="separator:aeb034e015bb81a24b4a7dc9bc9903bb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a713d7a6dabdcfbb8d733dba2a20120" id="r_a0a713d7a6dabdcfbb8d733dba2a20120"><td class="memItemLeft" align="right" valign="top"><a id="a0a713d7a6dabdcfbb8d733dba2a20120" name="a0a713d7a6dabdcfbb8d733dba2a20120"></a>
<a class="el" href="classrtabmap_1_1Signature.html">Signature</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>loadSignature</b> (int id, bool *loadedFromTrash=0)</td></tr>
<tr class="memdesc:a0a713d7a6dabdcfbb8d733dba2a20120"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load one signature by id; caller must delete the returned pointer. <br /></td></tr>
<tr class="separator:a0a713d7a6dabdcfbb8d733dba2a20120"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedd6cce596ad8f6693a3ff412f375f1f" id="r_aedd6cce596ad8f6693a3ff412f375f1f"><td class="memItemLeft" align="right" valign="top"><a id="aedd6cce596ad8f6693a3ff412f375f1f" name="aedd6cce596ad8f6693a3ff412f375f1f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>loadSignatures</b> (const std::list&lt; int &gt; &amp;ids, std::list&lt; <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;signatures, std::set&lt; int &gt; *loadedFromTrash=0, bool loadWordIdsOnly=false)</td></tr>
<tr class="separator:aedd6cce596ad8f6693a3ff412f375f1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe5837cd7a9544113de53b9b9f072d4a" id="r_abe5837cd7a9544113de53b9b9f072d4a"><td class="memItemLeft" align="right" valign="top"><a id="abe5837cd7a9544113de53b9b9f072d4a" name="abe5837cd7a9544113de53b9b9f072d4a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>loadWords</b> (const std::set&lt; int &gt; &amp;wordIds, std::list&lt; <a class="el" href="classrtabmap_1_1VisualWord.html">VisualWord</a> * &gt; &amp;vws)</td></tr>
<tr class="separator:abe5837cd7a9544113de53b9b9f072d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac45bb42a45bfe75bb845b716fedcd853" id="r_ac45bb42a45bfe75bb845b716fedcd853"><td class="memItemLeft" align="right" valign="top"><a id="ac45bb42a45bfe75bb845b716fedcd853" name="ac45bb42a45bfe75bb845b716fedcd853"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>loadNodeData</b> (<a class="el" href="classrtabmap_1_1Signature.html">Signature</a> &amp;signature, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const</td></tr>
<tr class="separator:ac45bb42a45bfe75bb845b716fedcd853"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafe9f077eb93b63b1a61017af1287c9a" id="r_aafe9f077eb93b63b1a61017af1287c9a"><td class="memItemLeft" align="right" valign="top"><a id="aafe9f077eb93b63b1a61017af1287c9a" name="aafe9f077eb93b63b1a61017af1287c9a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>loadNodeData</b> (std::list&lt; <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const</td></tr>
<tr class="separator:aafe9f077eb93b63b1a61017af1287c9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a327d33aeacb2c59185f2c6df35f26693" id="r_a327d33aeacb2c59185f2c6df35f26693"><td class="memItemLeft" align="right" valign="top"><a id="a327d33aeacb2c59185f2c6df35f26693" name="a327d33aeacb2c59185f2c6df35f26693"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getNodeData</b> (int signatureId, <a class="el" href="classrtabmap_1_1SensorData.html">SensorData</a> &amp;data, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const</td></tr>
<tr class="separator:a327d33aeacb2c59185f2c6df35f26693"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f97d302ead75f54be80947864be1f7a" id="r_a6f97d302ead75f54be80947864be1f7a"><td class="memItemLeft" align="right" valign="top"><a id="a6f97d302ead75f54be80947864be1f7a" name="a6f97d302ead75f54be80947864be1f7a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>getCalibration</b> (int signatureId, std::vector&lt; <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &gt; &amp;models, std::vector&lt; <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &gt; &amp;stereoModels) const</td></tr>
<tr class="separator:a6f97d302ead75f54be80947864be1f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad69ff590647bf2fa43980b3b07d5af2d" id="r_ad69ff590647bf2fa43980b3b07d5af2d"><td class="memItemLeft" align="right" valign="top"><a id="ad69ff590647bf2fa43980b3b07d5af2d" name="ad69ff590647bf2fa43980b3b07d5af2d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>getLaserScanInfo</b> (int signatureId, <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &amp;info) const</td></tr>
<tr class="separator:ad69ff590647bf2fa43980b3b07d5af2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a964959deeb8effabec6b1377925f1f41" id="r_a964959deeb8effabec6b1377925f1f41"><td class="memItemLeft" align="right" valign="top"><a id="a964959deeb8effabec6b1377925f1f41" name="a964959deeb8effabec6b1377925f1f41"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>getNodeInfo</b> (int signatureId, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;pose, int &amp;mapId, int &amp;weight, std::string &amp;label, double &amp;stamp, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;groundTruthPose, std::vector&lt; float &gt; &amp;velocity, <a class="el" href="classrtabmap_1_1GPS.html">GPS</a> &amp;gps, <a class="el" href="namespacertabmap.html#ac175ef40b7a4acb632232d3d96a1199a">EnvSensors</a> &amp;sensors) const</td></tr>
<tr class="separator:a964959deeb8effabec6b1377925f1f41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28d67e0d43ead127bb93a7eff5e377b0" id="r_a28d67e0d43ead127bb93a7eff5e377b0"><td class="memItemLeft" align="right" valign="top"><a id="a28d67e0d43ead127bb93a7eff5e377b0" name="a28d67e0d43ead127bb93a7eff5e377b0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getLocalFeatures</b> (int signatureId, std::multimap&lt; int, int &gt; &amp;words, std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, std::vector&lt; cv::Point3f &gt; &amp;points, cv::Mat &amp;descriptors) const</td></tr>
<tr class="separator:a28d67e0d43ead127bb93a7eff5e377b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab00d50127b8b5bb92f8605e35aaca4d" id="r_aab00d50127b8b5bb92f8605e35aaca4d"><td class="memItemLeft" align="right" valign="top"><a id="aab00d50127b8b5bb92f8605e35aaca4d" name="aab00d50127b8b5bb92f8605e35aaca4d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>loadLinks</b> (int signatureId, std::multimap&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;links, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> type=<a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a>) const</td></tr>
<tr class="memdesc:aab00d50127b8b5bb92f8605e35aaca4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load outgoing links from <code>signatureId</code>, optionally filtered by <code>type</code>. <br /></td></tr>
<tr class="separator:aab00d50127b8b5bb92f8605e35aaca4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3d5cf217da174f6c7d038ff64408a21" id="r_ab3d5cf217da174f6c7d038ff64408a21"><td class="memItemLeft" align="right" valign="top"><a id="ab3d5cf217da174f6c7d038ff64408a21" name="ab3d5cf217da174f6c7d038ff64408a21"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getWeight</b> (int signatureId, int &amp;weight) const</td></tr>
<tr class="separator:ab3d5cf217da174f6c7d038ff64408a21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a952f8efa1f34b1f8bbce96b36c2fa371" id="r_a952f8efa1f34b1f8bbce96b36c2fa371"><td class="memItemLeft" align="right" valign="top"><a id="a952f8efa1f34b1f8bbce96b36c2fa371" name="a952f8efa1f34b1f8bbce96b36c2fa371"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getLastNodeIds</b> (std::set&lt; int &gt; &amp;ids) const</td></tr>
<tr class="separator:a952f8efa1f34b1f8bbce96b36c2fa371"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebe66df25ecbd37437dadb5ec0588ffa" id="r_aebe66df25ecbd37437dadb5ec0588ffa"><td class="memItemLeft" align="right" valign="top"><a id="aebe66df25ecbd37437dadb5ec0588ffa" name="aebe66df25ecbd37437dadb5ec0588ffa"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getAllNodeIds</b> (std::set&lt; int &gt; &amp;ids, bool ignoreChildren=false, bool ignoreBadSignatures=false, bool ignoreIntermediateNodes=false) const</td></tr>
<tr class="separator:aebe66df25ecbd37437dadb5ec0588ffa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae17b06f603d813a01122cad5414ace3e" id="r_ae17b06f603d813a01122cad5414ace3e"><td class="memItemLeft" align="right" valign="top"><a id="ae17b06f603d813a01122cad5414ace3e" name="ae17b06f603d813a01122cad5414ace3e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getAllOdomPoses</b> (std::map&lt; int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &gt; &amp;poses, bool ignoreChildren=false, bool ignoreIntermediateNodes=false) const</td></tr>
<tr class="separator:ae17b06f603d813a01122cad5414ace3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b8ac5c830686b6a666d0ecf01b569f1" id="r_a6b8ac5c830686b6a666d0ecf01b569f1"><td class="memItemLeft" align="right" valign="top"><a id="a6b8ac5c830686b6a666d0ecf01b569f1" name="a6b8ac5c830686b6a666d0ecf01b569f1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getAllLinks</b> (std::multimap&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;links, bool ignoreNullLinks=true, bool withLandmarks=false) const</td></tr>
<tr class="separator:a6b8ac5c830686b6a666d0ecf01b569f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51effc2b152b177fa9f91d219487ff0e" id="r_a51effc2b152b177fa9f91d219487ff0e"><td class="memItemLeft" align="right" valign="top"><a id="a51effc2b152b177fa9f91d219487ff0e" name="a51effc2b152b177fa9f91d219487ff0e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getLastNodeId</b> (int &amp;id) const</td></tr>
<tr class="separator:a51effc2b152b177fa9f91d219487ff0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba43b53a98817d34015a19850ead770f" id="r_aba43b53a98817d34015a19850ead770f"><td class="memItemLeft" align="right" valign="top"><a id="aba43b53a98817d34015a19850ead770f" name="aba43b53a98817d34015a19850ead770f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getLastMapId</b> (int &amp;mapId) const</td></tr>
<tr class="separator:aba43b53a98817d34015a19850ead770f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd7bd8d39e782633f8146cb322f12082" id="r_acd7bd8d39e782633f8146cb322f12082"><td class="memItemLeft" align="right" valign="top"><a id="acd7bd8d39e782633f8146cb322f12082" name="acd7bd8d39e782633f8146cb322f12082"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getLastWordId</b> (int &amp;id) const</td></tr>
<tr class="separator:acd7bd8d39e782633f8146cb322f12082"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbf2871e1f6811a462cc9b540a83c835" id="r_adbf2871e1f6811a462cc9b540a83c835"><td class="memItemLeft" align="right" valign="top"><a id="adbf2871e1f6811a462cc9b540a83c835" name="adbf2871e1f6811a462cc9b540a83c835"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getInvertedIndexNi</b> (int signatureId, int &amp;ni) const</td></tr>
<tr class="separator:adbf2871e1f6811a462cc9b540a83c835"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade0e3efdb1616b95e08e1ac87ec56505" id="r_ade0e3efdb1616b95e08e1ac87ec56505"><td class="memItemLeft" align="right" valign="top"><a id="ade0e3efdb1616b95e08e1ac87ec56505" name="ade0e3efdb1616b95e08e1ac87ec56505"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getNodesObservingLandmark</b> (int landmarkId, std::map&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;nodes) const</td></tr>
<tr class="separator:ade0e3efdb1616b95e08e1ac87ec56505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5e8f1fae336521636e7a4225ac9cd3e" id="r_ac5e8f1fae336521636e7a4225ac9cd3e"><td class="memItemLeft" align="right" valign="top"><a id="ac5e8f1fae336521636e7a4225ac9cd3e" name="ac5e8f1fae336521636e7a4225ac9cd3e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getNodeIdByLabel</b> (const std::string &amp;label, int &amp;id) const</td></tr>
<tr class="separator:ac5e8f1fae336521636e7a4225ac9cd3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29c0a104f08c19a1bd5d8c577204915d" id="r_a29c0a104f08c19a1bd5d8c577204915d"><td class="memItemLeft" align="right" valign="top"><a id="a29c0a104f08c19a1bd5d8c577204915d" name="a29c0a104f08c19a1bd5d8c577204915d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getAllLabels</b> (std::map&lt; int, std::string &gt; &amp;labels) const</td></tr>
<tr class="separator:a29c0a104f08c19a1bd5d8c577204915d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classUThread"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classUThread')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classUThread.html">UThread</a></td></tr>
<tr class="memitem:a05a92f95e2a8900f27b09ddf907b97be inherit pub_methods_classUThread" id="r_a05a92f95e2a8900f27b09ddf907b97be"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a05a92f95e2a8900f27b09ddf907b97be">UThread</a> (<a class="el" href="classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153">Priority</a> priority=kPNormal)</td></tr>
<tr class="separator:a05a92f95e2a8900f27b09ddf907b97be inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a437580d224111e60cbe2626f0e4cb12e inherit pub_methods_classUThread" id="r_a437580d224111e60cbe2626f0e4cb12e"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a437580d224111e60cbe2626f0e4cb12e">~UThread</a> ()</td></tr>
<tr class="separator:a437580d224111e60cbe2626f0e4cb12e inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a051e9adcf24f92b9c8e31acd06bad88c inherit pub_methods_classUThread" id="r_a051e9adcf24f92b9c8e31acd06bad88c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a051e9adcf24f92b9c8e31acd06bad88c">start</a> ()</td></tr>
<tr class="separator:a051e9adcf24f92b9c8e31acd06bad88c inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dfefcfd68b453da08ddba9836f35965 inherit pub_methods_classUThread" id="r_a8dfefcfd68b453da08ddba9836f35965"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a8dfefcfd68b453da08ddba9836f35965">kill</a> ()</td></tr>
<tr class="separator:a8dfefcfd68b453da08ddba9836f35965 inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf33c0e4b656af76da100e7d4f69ed1d inherit pub_methods_classUThread" id="r_acf33c0e4b656af76da100e7d4f69ed1d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#acf33c0e4b656af76da100e7d4f69ed1d">join</a> (bool killFirst=false)</td></tr>
<tr class="separator:acf33c0e4b656af76da100e7d4f69ed1d inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80418be3a80a01ddd05a863b58787b43 inherit pub_methods_classUThread" id="r_a80418be3a80a01ddd05a863b58787b43"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a80418be3a80a01ddd05a863b58787b43">setPriority</a> (<a class="el" href="classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153">Priority</a> priority)</td></tr>
<tr class="separator:a80418be3a80a01ddd05a863b58787b43 inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabcf31acae6ca5b8503ec320acbc11f8 inherit pub_methods_classUThread" id="r_aabcf31acae6ca5b8503ec320acbc11f8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#aabcf31acae6ca5b8503ec320acbc11f8">setAffinity</a> (int cpu=0)</td></tr>
<tr class="separator:aabcf31acae6ca5b8503ec320acbc11f8 inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac80eff7d48382fd230141ca286370d33 inherit pub_methods_classUThread" id="r_ac80eff7d48382fd230141ca286370d33"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#ac80eff7d48382fd230141ca286370d33">isCreating</a> () const</td></tr>
<tr class="separator:ac80eff7d48382fd230141ca286370d33 inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38e2b22f0616ed4128312baff9cfeba9 inherit pub_methods_classUThread" id="r_a38e2b22f0616ed4128312baff9cfeba9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a38e2b22f0616ed4128312baff9cfeba9">isRunning</a> () const</td></tr>
<tr class="separator:a38e2b22f0616ed4128312baff9cfeba9 inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c4554ad881c0532239a0930c2ebfe24 inherit pub_methods_classUThread" id="r_a2c4554ad881c0532239a0930c2ebfe24"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a2c4554ad881c0532239a0930c2ebfe24">isIdle</a> () const</td></tr>
<tr class="separator:a2c4554ad881c0532239a0930c2ebfe24 inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a0d0de0f78eab72512941ccd048477b inherit pub_methods_classUThread" id="r_a3a0d0de0f78eab72512941ccd048477b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a3a0d0de0f78eab72512941ccd048477b">isKilled</a> () const</td></tr>
<tr class="separator:a3a0d0de0f78eab72512941ccd048477b inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f404f03046fa89dced06514f040b2af inherit pub_methods_classUThread" id="r_a4f404f03046fa89dced06514f040b2af"><td class="memItemLeft" align="right" valign="top">Handle&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a4f404f03046fa89dced06514f040b2af">getThreadHandle</a> () const</td></tr>
<tr class="separator:a4f404f03046fa89dced06514f040b2af inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40e8ea82c06ed20bb6266a6a42a8f51f inherit pub_methods_classUThread" id="r_a40e8ea82c06ed20bb6266a6a42a8f51f"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a40e8ea82c06ed20bb6266a6a42a8f51f">getThreadId</a> () const</td></tr>
<tr class="separator:a40e8ea82c06ed20bb6266a6a42a8f51f inherit pub_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classUThreadC_3_01void_01_4"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classUThreadC_3_01void_01_4')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classUThreadC_3_01void_01_4.html">UThreadC&lt; void &gt;</a></td></tr>
<tr class="memitem:a724a5919ea1f1e74b69a9073d532e400 inherit pub_methods_classUThreadC_3_01void_01_4" id="r_a724a5919ea1f1e74b69a9073d532e400"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a724a5919ea1f1e74b69a9073d532e400">Create</a> (Handle *const &amp;H=0, const bool &amp;CreateDetached=false, const unsigned int &amp;StackSize=0, const bool &amp;CancelEnable=false, const bool &amp;CancelAsync=false) const</td></tr>
<tr class="separator:a724a5919ea1f1e74b69a9073d532e400 inherit pub_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5af5c76be4b8e6b746a77146a3d7021a inherit pub_methods_classUThreadC_3_01void_01_4" id="r_a5af5c76be4b8e6b746a77146a3d7021a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a5af5c76be4b8e6b746a77146a3d7021a">Create</a> (unsigned long &amp;ThreadId, Handle *const &amp;H=0, const bool &amp;CreateDetached=false, const unsigned int &amp;StackSize=0, const bool &amp;CancelEnable=false, const bool &amp;CancelAsync=false) const</td></tr>
<tr class="separator:a5af5c76be4b8e6b746a77146a3d7021a inherit pub_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a724a5919ea1f1e74b69a9073d532e400 inherit pub_methods_classUThreadC_3_01void_01_4" id="r_a724a5919ea1f1e74b69a9073d532e400"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a724a5919ea1f1e74b69a9073d532e400">Create</a> (Handle *const &amp;H=0, const bool &amp;CreateDetached=false, const unsigned int &amp;StackSize=0, const bool &amp;CancelEnable=false, const bool &amp;CancelAsync=false) const</td></tr>
<tr class="separator:a724a5919ea1f1e74b69a9073d532e400 inherit pub_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5af5c76be4b8e6b746a77146a3d7021a inherit pub_methods_classUThreadC_3_01void_01_4" id="r_a5af5c76be4b8e6b746a77146a3d7021a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a5af5c76be4b8e6b746a77146a3d7021a">Create</a> (unsigned long &amp;ThreadId, Handle *const &amp;H=0, const bool &amp;CreateDetached=false, const unsigned int &amp;StackSize=0, const bool &amp;CancelEnable=false, const bool &amp;CancelAsync=false) const</td></tr>
<tr class="separator:a5af5c76be4b8e6b746a77146a3d7021a inherit pub_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a1f75e440b35243ccad645052bc4a12f9" id="r_a1f75e440b35243ccad645052bc4a12f9"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classrtabmap_1_1DBDriver.html">DBDriver</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrtabmap_1_1DBDriver.html#a1f75e440b35243ccad645052bc4a12f9">create</a> (const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;parameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>())</td></tr>
<tr class="memdesc:a1f75e440b35243ccad645052bc4a12f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Factory: returns a SQLite database driver (<a class="el" href="classrtabmap_1_1DBDriverSqlite3.html">DBDriverSqlite3</a>). <br /></td></tr>
<tr class="separator:a1f75e440b35243ccad645052bc4a12f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_classUThread"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classUThread')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classUThread.html">UThread</a></td></tr>
<tr class="memitem:a6fa5e2358a86c5185371fd14305021aa inherit pub_static_methods_classUThread" id="r_a6fa5e2358a86c5185371fd14305021aa"><td class="memItemLeft" align="right" valign="top">static unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a6fa5e2358a86c5185371fd14305021aa">currentThreadId</a> ()</td></tr>
<tr class="separator:a6fa5e2358a86c5185371fd14305021aa inherit pub_static_methods_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_classUThreadC_3_01void_01_4"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classUThreadC_3_01void_01_4')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classUThreadC_3_01void_01_4.html">UThreadC&lt; void &gt;</a></td></tr>
<tr class="memitem:a17eb99ec0990246c0c7161e6bec84c74 inherit pub_static_methods_classUThreadC_3_01void_01_4" id="r_a17eb99ec0990246c0c7161e6bec84c74"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a17eb99ec0990246c0c7161e6bec84c74">Create</a> (const Handler &amp;Function, Handle *const &amp;H=0, const bool &amp;CreateDetached=false, const unsigned int &amp;StackSize=0, const bool &amp;CancelEnable=false, const bool &amp;CancelAsync=false)</td></tr>
<tr class="separator:a17eb99ec0990246c0c7161e6bec84c74 inherit pub_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1584a3a80d86181ff66784cf0f8c2392 inherit pub_static_methods_classUThreadC_3_01void_01_4" id="r_a1584a3a80d86181ff66784cf0f8c2392"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a1584a3a80d86181ff66784cf0f8c2392">Join</a> (Handle H)</td></tr>
<tr class="separator:a1584a3a80d86181ff66784cf0f8c2392 inherit pub_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec2af3352538bb8e45916c468e6960dc inherit pub_static_methods_classUThreadC_3_01void_01_4" id="r_aec2af3352538bb8e45916c468e6960dc"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#aec2af3352538bb8e45916c468e6960dc">Kill</a> (Handle H)</td></tr>
<tr class="separator:aec2af3352538bb8e45916c468e6960dc inherit pub_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a591f5bfcea463cfaa2249bbcdd3ab522 inherit pub_static_methods_classUThreadC_3_01void_01_4" id="r_a591f5bfcea463cfaa2249bbcdd3ab522"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a591f5bfcea463cfaa2249bbcdd3ab522">Detach</a> (Handle H)</td></tr>
<tr class="separator:a591f5bfcea463cfaa2249bbcdd3ab522 inherit pub_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17eb99ec0990246c0c7161e6bec84c74 inherit pub_static_methods_classUThreadC_3_01void_01_4" id="r_a17eb99ec0990246c0c7161e6bec84c74"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a17eb99ec0990246c0c7161e6bec84c74">Create</a> (const Handler &amp;Function, Handle *const &amp;H=0, const bool &amp;CreateDetached=false, const unsigned int &amp;StackSize=0, const bool &amp;CancelEnable=false, const bool &amp;CancelAsync=false)</td></tr>
<tr class="separator:a17eb99ec0990246c0c7161e6bec84c74 inherit pub_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d704989d9a19f552ac0387c143cad95 inherit pub_static_methods_classUThreadC_3_01void_01_4" id="r_a1d704989d9a19f552ac0387c143cad95"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a1d704989d9a19f552ac0387c143cad95">Join</a> (const Handle &amp;H)</td></tr>
<tr class="separator:a1d704989d9a19f552ac0387c143cad95 inherit pub_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a83aaa66db8ee6f07482130091690e3 inherit pub_static_methods_classUThreadC_3_01void_01_4" id="r_a4a83aaa66db8ee6f07482130091690e3"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a4a83aaa66db8ee6f07482130091690e3">Kill</a> (const Handle &amp;H)</td></tr>
<tr class="separator:a4a83aaa66db8ee6f07482130091690e3 inherit pub_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a094155ec7163e19480ed2181ef8032ed inherit pub_static_methods_classUThreadC_3_01void_01_4" id="r_a094155ec7163e19480ed2181ef8032ed"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a094155ec7163e19480ed2181ef8032ed">Detach</a> (const Handle &amp;H)</td></tr>
<tr class="separator:a094155ec7163e19480ed2181ef8032ed inherit pub_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a5f90eb62bb559d42611dbe7ffe11328e" id="r_a5f90eb62bb559d42611dbe7ffe11328e"><td class="memItemLeft" align="right" valign="top"><a id="a5f90eb62bb559d42611dbe7ffe11328e" name="a5f90eb62bb559d42611dbe7ffe11328e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>DBDriver</b> (const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;parameters=<a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>())</td></tr>
<tr class="memdesc:a5f90eb62bb559d42611dbe7ffe11328e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Protected constructor for subclasses. <br /></td></tr>
<tr class="separator:a5f90eb62bb559d42611dbe7ffe11328e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Backend implementation (subclass responsibility)</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Pure virtual SQL/backend hooks invoked by public wrappers above.</p>
<p>These are called with <code>_dbSafeAccessMutex</code> locked. Implementations must not call public methods that look in the trash (they lock <code>_trashesMutex</code>), as it would invert the lock order used by <a class="el" href="classrtabmap_1_1DBDriver.html#ab4a0036162994c2ef76d4236e2a7ea0a" title="Flush queued signatures and visual words to the database.">emptyTrashes()</a> and could deadlock. Call the corresponding <code>*Query</code>() method directly instead (e.g., getLastIdQuery("Word", id) instead of getLastWordId(id)). </p>
</div></td></tr>
<tr class="memitem:ad26be8fe4acdd961b33d1c459a6c3379" id="r_ad26be8fe4acdd961b33d1c459a6c3379"><td class="memItemLeft" align="right" valign="top"><a id="ad26be8fe4acdd961b33d1c459a6c3379" name="ad26be8fe4acdd961b33d1c459a6c3379"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>connectDatabaseQuery</b> (const std::string &amp;url, bool overwritten=false, bool readOnly=false)=0</td></tr>
<tr class="separator:ad26be8fe4acdd961b33d1c459a6c3379"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a427d0edf323a83c06c2c20dbc55bf5a6" id="r_a427d0edf323a83c06c2c20dbc55bf5a6"><td class="memItemLeft" align="right" valign="top"><a id="a427d0edf323a83c06c2c20dbc55bf5a6" name="a427d0edf323a83c06c2c20dbc55bf5a6"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>disconnectDatabaseQuery</b> (bool save=true, const std::string &amp;outputUrl=&quot;&quot;)=0</td></tr>
<tr class="separator:a427d0edf323a83c06c2c20dbc55bf5a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae354e4c3340fa2f60995760690ccf168" id="r_ae354e4c3340fa2f60995760690ccf168"><td class="memItemLeft" align="right" valign="top"><a id="ae354e4c3340fa2f60995760690ccf168" name="ae354e4c3340fa2f60995760690ccf168"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>isConnectedQuery</b> () const =0</td></tr>
<tr class="separator:ae354e4c3340fa2f60995760690ccf168"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad72c3f1419fd211260c25c4eb9a74810" id="r_ad72c3f1419fd211260c25c4eb9a74810"><td class="memItemLeft" align="right" valign="top"><a id="ad72c3f1419fd211260c25c4eb9a74810" name="ad72c3f1419fd211260c25c4eb9a74810"></a>
virtual unsigned long&#160;</td><td class="memItemRight" valign="bottom"><b>getMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:ad72c3f1419fd211260c25c4eb9a74810"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abad694886dbc5beef1acf659616a0c25" id="r_abad694886dbc5beef1acf659616a0c25"><td class="memItemLeft" align="right" valign="top"><a id="abad694886dbc5beef1acf659616a0c25" name="abad694886dbc5beef1acf659616a0c25"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>getDatabaseVersionQuery</b> (std::string &amp;version) const =0</td></tr>
<tr class="separator:abad694886dbc5beef1acf659616a0c25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e2f091b1a3560040fd266acc194a342" id="r_a8e2f091b1a3560040fd266acc194a342"><td class="memItemLeft" align="right" valign="top"><a id="a8e2f091b1a3560040fd266acc194a342" name="a8e2f091b1a3560040fd266acc194a342"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getNodesMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:a8e2f091b1a3560040fd266acc194a342"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ef41ce9ac0b81d261290f956eb5a29c" id="r_a3ef41ce9ac0b81d261290f956eb5a29c"><td class="memItemLeft" align="right" valign="top"><a id="a3ef41ce9ac0b81d261290f956eb5a29c" name="a3ef41ce9ac0b81d261290f956eb5a29c"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getLinksMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:a3ef41ce9ac0b81d261290f956eb5a29c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13e190d86e59f06d063b94922f43fa46" id="r_a13e190d86e59f06d063b94922f43fa46"><td class="memItemLeft" align="right" valign="top"><a id="a13e190d86e59f06d063b94922f43fa46" name="a13e190d86e59f06d063b94922f43fa46"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getImagesMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:a13e190d86e59f06d063b94922f43fa46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe05bcf9bd204856b8c26a4de36b64fa" id="r_abe05bcf9bd204856b8c26a4de36b64fa"><td class="memItemLeft" align="right" valign="top"><a id="abe05bcf9bd204856b8c26a4de36b64fa" name="abe05bcf9bd204856b8c26a4de36b64fa"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getDepthImagesMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:abe05bcf9bd204856b8c26a4de36b64fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2482c506c028af1684d44e162a53e5c" id="r_aa2482c506c028af1684d44e162a53e5c"><td class="memItemLeft" align="right" valign="top"><a id="aa2482c506c028af1684d44e162a53e5c" name="aa2482c506c028af1684d44e162a53e5c"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getCalibrationsMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:aa2482c506c028af1684d44e162a53e5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abef713749cb8e00ca04432c07fdb49fd" id="r_abef713749cb8e00ca04432c07fdb49fd"><td class="memItemLeft" align="right" valign="top"><a id="abef713749cb8e00ca04432c07fdb49fd" name="abef713749cb8e00ca04432c07fdb49fd"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getGridsMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:abef713749cb8e00ca04432c07fdb49fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a248f90e1e9b574fed13826e808f49594" id="r_a248f90e1e9b574fed13826e808f49594"><td class="memItemLeft" align="right" valign="top"><a id="a248f90e1e9b574fed13826e808f49594" name="a248f90e1e9b574fed13826e808f49594"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getLaserScansMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:a248f90e1e9b574fed13826e808f49594"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a036fa10f8e92580b611d6ec08509fc94" id="r_a036fa10f8e92580b611d6ec08509fc94"><td class="memItemLeft" align="right" valign="top"><a id="a036fa10f8e92580b611d6ec08509fc94" name="a036fa10f8e92580b611d6ec08509fc94"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getUserDataMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:a036fa10f8e92580b611d6ec08509fc94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a4283525413989a45996c857a308e41" id="r_a9a4283525413989a45996c857a308e41"><td class="memItemLeft" align="right" valign="top"><a id="a9a4283525413989a45996c857a308e41" name="a9a4283525413989a45996c857a308e41"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getWordsMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:a9a4283525413989a45996c857a308e41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af94bc681de38ef87da52d4db9e008160" id="r_af94bc681de38ef87da52d4db9e008160"><td class="memItemLeft" align="right" valign="top"><a id="af94bc681de38ef87da52d4db9e008160" name="af94bc681de38ef87da52d4db9e008160"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getFeaturesMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:af94bc681de38ef87da52d4db9e008160"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56cfc1d393982d587e385e0dc4ed1687" id="r_a56cfc1d393982d587e385e0dc4ed1687"><td class="memItemLeft" align="right" valign="top"><a id="a56cfc1d393982d587e385e0dc4ed1687" name="a56cfc1d393982d587e385e0dc4ed1687"></a>
virtual long&#160;</td><td class="memItemRight" valign="bottom"><b>getStatisticsMemoryUsedQuery</b> () const =0</td></tr>
<tr class="separator:a56cfc1d393982d587e385e0dc4ed1687"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13c56a9fc9bc141bb353fa859dd3df07" id="r_a13c56a9fc9bc141bb353fa859dd3df07"><td class="memItemLeft" align="right" valign="top"><a id="a13c56a9fc9bc141bb353fa859dd3df07" name="a13c56a9fc9bc141bb353fa859dd3df07"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>getLastNodesSizeQuery</b> () const =0</td></tr>
<tr class="separator:a13c56a9fc9bc141bb353fa859dd3df07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac32cf7ef31c75ffcaece1d2f98928996" id="r_ac32cf7ef31c75ffcaece1d2f98928996"><td class="memItemLeft" align="right" valign="top"><a id="ac32cf7ef31c75ffcaece1d2f98928996" name="ac32cf7ef31c75ffcaece1d2f98928996"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>getLastDictionarySizeQuery</b> () const =0</td></tr>
<tr class="separator:ac32cf7ef31c75ffcaece1d2f98928996"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad207fdbbc410435236b58a39744c7b8e" id="r_ad207fdbbc410435236b58a39744c7b8e"><td class="memItemLeft" align="right" valign="top"><a id="ad207fdbbc410435236b58a39744c7b8e" name="ad207fdbbc410435236b58a39744c7b8e"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>getTotalNodesSizeQuery</b> () const =0</td></tr>
<tr class="separator:ad207fdbbc410435236b58a39744c7b8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a95a9b7db5e7446ef71c044b23a2f8f" id="r_a8a95a9b7db5e7446ef71c044b23a2f8f"><td class="memItemLeft" align="right" valign="top"><a id="a8a95a9b7db5e7446ef71c044b23a2f8f" name="a8a95a9b7db5e7446ef71c044b23a2f8f"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>getTotalDictionarySizeQuery</b> () const =0</td></tr>
<tr class="separator:a8a95a9b7db5e7446ef71c044b23a2f8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa09fe90a3559e90035ab1cfba8467b4c" id="r_aa09fe90a3559e90035ab1cfba8467b4c"><td class="memItemLeft" align="right" valign="top"><a id="aa09fe90a3559e90035ab1cfba8467b4c" name="aa09fe90a3559e90035ab1cfba8467b4c"></a>
virtual <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getLastParametersQuery</b> () const =0</td></tr>
<tr class="separator:aa09fe90a3559e90035ab1cfba8467b4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9263b9879e4d1a9f02a4ce38b98d24b" id="r_ae9263b9879e4d1a9f02a4ce38b98d24b"><td class="memItemLeft" align="right" valign="top"><a id="ae9263b9879e4d1a9f02a4ce38b98d24b" name="ae9263b9879e4d1a9f02a4ce38b98d24b"></a>
virtual std::map&lt; std::string, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getStatisticsQuery</b> (int nodeId, double &amp;stamp, std::vector&lt; int &gt; *wmState) const =0</td></tr>
<tr class="separator:ae9263b9879e4d1a9f02a4ce38b98d24b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a089a21e79dba34d9c1f5afae35cfe332" id="r_a089a21e79dba34d9c1f5afae35cfe332"><td class="memItemLeft" align="right" valign="top"><a id="a089a21e79dba34d9c1f5afae35cfe332" name="a089a21e79dba34d9c1f5afae35cfe332"></a>
virtual std::map&lt; int, std::pair&lt; std::map&lt; std::string, float &gt;, double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getAllStatisticsQuery</b> () const =0</td></tr>
<tr class="separator:a089a21e79dba34d9c1f5afae35cfe332"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1be56da314987f63a5b571a815d46038" id="r_a1be56da314987f63a5b571a815d46038"><td class="memItemLeft" align="right" valign="top"><a id="a1be56da314987f63a5b571a815d46038" name="a1be56da314987f63a5b571a815d46038"></a>
virtual std::map&lt; int, std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getAllStatisticsWmStatesQuery</b> () const =0</td></tr>
<tr class="separator:a1be56da314987f63a5b571a815d46038"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedc3f1af9bf45e93458674e9c748b3a7" id="r_aedc3f1af9bf45e93458674e9c748b3a7"><td class="memItemLeft" align="right" valign="top"><a id="aedc3f1af9bf45e93458674e9c748b3a7" name="aedc3f1af9bf45e93458674e9c748b3a7"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>executeNoResultQuery</b> (const std::string &amp;sql) const =0</td></tr>
<tr class="separator:aedc3f1af9bf45e93458674e9c748b3a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48ce6289b1d35e73da28cca5e9cfaf3f" id="r_a48ce6289b1d35e73da28cca5e9cfaf3f"><td class="memItemLeft" align="right" valign="top"><a id="a48ce6289b1d35e73da28cca5e9cfaf3f" name="a48ce6289b1d35e73da28cca5e9cfaf3f"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getWeightQuery</b> (int signatureId, int &amp;weight) const =0</td></tr>
<tr class="separator:a48ce6289b1d35e73da28cca5e9cfaf3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6b56ad911296d1e23b921081c5963f8" id="r_ae6b56ad911296d1e23b921081c5963f8"><td class="memItemLeft" align="right" valign="top"><a id="ae6b56ad911296d1e23b921081c5963f8" name="ae6b56ad911296d1e23b921081c5963f8"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>saveQuery</b> (const std::list&lt; <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;signatures)=0</td></tr>
<tr class="separator:ae6b56ad911296d1e23b921081c5963f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd880c291203a9b26e3e27d2732d6ecd" id="r_abd880c291203a9b26e3e27d2732d6ecd"><td class="memItemLeft" align="right" valign="top"><a id="abd880c291203a9b26e3e27d2732d6ecd" name="abd880c291203a9b26e3e27d2732d6ecd"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>saveQuery</b> (const std::list&lt; <a class="el" href="classrtabmap_1_1VisualWord.html">VisualWord</a> * &gt; &amp;words) const =0</td></tr>
<tr class="separator:abd880c291203a9b26e3e27d2732d6ecd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef6afd53ae425e7042c4408dc8be6da7" id="r_aef6afd53ae425e7042c4408dc8be6da7"><td class="memItemLeft" align="right" valign="top"><a id="aef6afd53ae425e7042c4408dc8be6da7" name="aef6afd53ae425e7042c4408dc8be6da7"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>updateQuery</b> (const std::list&lt; <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;signatures, bool updateTimestamp) const =0</td></tr>
<tr class="separator:aef6afd53ae425e7042c4408dc8be6da7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa22fd347c480b5b701fcb198e10d084a" id="r_aa22fd347c480b5b701fcb198e10d084a"><td class="memItemLeft" align="right" valign="top"><a id="aa22fd347c480b5b701fcb198e10d084a" name="aa22fd347c480b5b701fcb198e10d084a"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>updateQuery</b> (const std::list&lt; <a class="el" href="classrtabmap_1_1VisualWord.html">VisualWord</a> * &gt; &amp;words, bool updateTimestamp) const =0</td></tr>
<tr class="separator:aa22fd347c480b5b701fcb198e10d084a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86c808af5987483c9ee058088150a2f0" id="r_a86c808af5987483c9ee058088150a2f0"><td class="memItemLeft" align="right" valign="top"><a id="a86c808af5987483c9ee058088150a2f0" name="a86c808af5987483c9ee058088150a2f0"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>addLinkQuery</b> (const <a class="el" href="classrtabmap_1_1Link.html">Link</a> &amp;link) const =0</td></tr>
<tr class="separator:a86c808af5987483c9ee058088150a2f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e8e9f1798f7850cba3fc27608ff2d59" id="r_a7e8e9f1798f7850cba3fc27608ff2d59"><td class="memItemLeft" align="right" valign="top"><a id="a7e8e9f1798f7850cba3fc27608ff2d59" name="a7e8e9f1798f7850cba3fc27608ff2d59"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>updateLinkQuery</b> (const <a class="el" href="classrtabmap_1_1Link.html">Link</a> &amp;link) const =0</td></tr>
<tr class="separator:a7e8e9f1798f7850cba3fc27608ff2d59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae65083e1ba90963b1d85237ae640f583" id="r_ae65083e1ba90963b1d85237ae640f583"><td class="memItemLeft" align="right" valign="top"><a id="ae65083e1ba90963b1d85237ae640f583" name="ae65083e1ba90963b1d85237ae640f583"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>updateOccupancyGridQuery</b> (int nodeId, const cv::Mat &amp;ground, const cv::Mat &amp;obstacles, const cv::Mat &amp;empty, float cellSize, const cv::Point3f &amp;viewpoint) const =0</td></tr>
<tr class="separator:ae65083e1ba90963b1d85237ae640f583"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcec2e9e0bf093936e403d4ea6dbd1bf" id="r_afcec2e9e0bf093936e403d4ea6dbd1bf"><td class="memItemLeft" align="right" valign="top"><a id="afcec2e9e0bf093936e403d4ea6dbd1bf" name="afcec2e9e0bf093936e403d4ea6dbd1bf"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>updateCalibrationQuery</b> (int nodeId, const std::vector&lt; <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &gt; &amp;models, const std::vector&lt; <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &gt; &amp;stereoModels) const =0</td></tr>
<tr class="separator:afcec2e9e0bf093936e403d4ea6dbd1bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca19d9638a0f8d990dd3b959701d7eb1" id="r_aca19d9638a0f8d990dd3b959701d7eb1"><td class="memItemLeft" align="right" valign="top"><a id="aca19d9638a0f8d990dd3b959701d7eb1" name="aca19d9638a0f8d990dd3b959701d7eb1"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>updateDepthImageQuery</b> (int nodeId, const cv::Mat &amp;image, const std::string &amp;format) const =0</td></tr>
<tr class="separator:aca19d9638a0f8d990dd3b959701d7eb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3b5e3effa145b99bd25fb8a7a70450c" id="r_af3b5e3effa145b99bd25fb8a7a70450c"><td class="memItemLeft" align="right" valign="top"><a id="af3b5e3effa145b99bd25fb8a7a70450c" name="af3b5e3effa145b99bd25fb8a7a70450c"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>updateLaserScanQuery</b> (int nodeId, const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &amp;scan) const =0</td></tr>
<tr class="separator:af3b5e3effa145b99bd25fb8a7a70450c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3543051cb202da796c580f19bce96266" id="r_a3543051cb202da796c580f19bce96266"><td class="memItemLeft" align="right" valign="top"><a id="a3543051cb202da796c580f19bce96266" name="a3543051cb202da796c580f19bce96266"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>addStatisticsQuery</b> (const <a class="el" href="classrtabmap_1_1Statistics.html">Statistics</a> &amp;statistics, bool saveWmState) const =0</td></tr>
<tr class="separator:a3543051cb202da796c580f19bce96266"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab40f8b35b06953065eacef60d39b93aa" id="r_ab40f8b35b06953065eacef60d39b93aa"><td class="memItemLeft" align="right" valign="top"><a id="ab40f8b35b06953065eacef60d39b93aa" name="ab40f8b35b06953065eacef60d39b93aa"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>savePreviewImageQuery</b> (const cv::Mat &amp;image) const =0</td></tr>
<tr class="separator:ab40f8b35b06953065eacef60d39b93aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc2d016e21e2f646d55e819e659dfb07" id="r_abc2d016e21e2f646d55e819e659dfb07"><td class="memItemLeft" align="right" valign="top"><a id="abc2d016e21e2f646d55e819e659dfb07" name="abc2d016e21e2f646d55e819e659dfb07"></a>
virtual cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><b>loadPreviewImageQuery</b> () const =0</td></tr>
<tr class="separator:abc2d016e21e2f646d55e819e659dfb07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada432b738d85a626285d74996818a718" id="r_ada432b738d85a626285d74996818a718"><td class="memItemLeft" align="right" valign="top"><a id="ada432b738d85a626285d74996818a718" name="ada432b738d85a626285d74996818a718"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>saveOptimizedPosesQuery</b> (const std::map&lt; int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &gt; &amp;optimizedPoses, const <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;lastlocalizationPose) const =0</td></tr>
<tr class="separator:ada432b738d85a626285d74996818a718"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1fff06426ddf3600f1ae63f2e9b4a15e" id="r_a1fff06426ddf3600f1ae63f2e9b4a15e"><td class="memItemLeft" align="right" valign="top"><a id="a1fff06426ddf3600f1ae63f2e9b4a15e" name="a1fff06426ddf3600f1ae63f2e9b4a15e"></a>
virtual std::map&lt; int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>loadOptimizedPosesQuery</b> (<a class="el" href="classrtabmap_1_1Transform.html">Transform</a> *lastlocalizationPose=0) const =0</td></tr>
<tr class="separator:a1fff06426ddf3600f1ae63f2e9b4a15e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a141336066b656a3ed8aad29b39f56f5f" id="r_a141336066b656a3ed8aad29b39f56f5f"><td class="memItemLeft" align="right" valign="top"><a id="a141336066b656a3ed8aad29b39f56f5f" name="a141336066b656a3ed8aad29b39f56f5f"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>save2DMapQuery</b> (const cv::Mat &amp;map, float xMin, float yMin, float cellSize) const =0</td></tr>
<tr class="separator:a141336066b656a3ed8aad29b39f56f5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa9fc785b8df919458186030cab4937f" id="r_afa9fc785b8df919458186030cab4937f"><td class="memItemLeft" align="right" valign="top"><a id="afa9fc785b8df919458186030cab4937f" name="afa9fc785b8df919458186030cab4937f"></a>
virtual cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><b>load2DMapQuery</b> (float &amp;xMin, float &amp;yMin, float &amp;cellSize) const =0</td></tr>
<tr class="separator:afa9fc785b8df919458186030cab4937f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f6783f3d70d6620e7a75107a631e6fd" id="r_a6f6783f3d70d6620e7a75107a631e6fd"><td class="memItemLeft" align="right" valign="top"><a id="a6f6783f3d70d6620e7a75107a631e6fd" name="a6f6783f3d70d6620e7a75107a631e6fd"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>saveOptimizedMeshQuery</b> (const cv::Mat &amp;cloud, const std::vector&lt; std::vector&lt; std::vector&lt; RTABMAP_PCL_INDEX &gt; &gt; &gt; &amp;polygons, const std::vector&lt; std::vector&lt; Eigen::Vector2f &gt; &gt; &amp;texCoords, const cv::Mat &amp;textures) const =0</td></tr>
<tr class="separator:a6f6783f3d70d6620e7a75107a631e6fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3b97b171d104bdc4504b4f01c5906f5" id="r_ab3b97b171d104bdc4504b4f01c5906f5"><td class="memItemLeft" align="right" valign="top"><a id="ab3b97b171d104bdc4504b4f01c5906f5" name="ab3b97b171d104bdc4504b4f01c5906f5"></a>
virtual cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><b>loadOptimizedMeshQuery</b> (std::vector&lt; std::vector&lt; std::vector&lt; RTABMAP_PCL_INDEX &gt; &gt; &gt; *polygons, std::vector&lt; std::vector&lt; Eigen::Vector2f &gt; &gt; *texCoords, cv::Mat *textures) const =0</td></tr>
<tr class="separator:ab3b97b171d104bdc4504b4f01c5906f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb1e4b1213ab24133489f52e79d3752b" id="r_aeb1e4b1213ab24133489f52e79d3752b"><td class="memItemLeft" align="right" valign="top"><a id="aeb1e4b1213ab24133489f52e79d3752b" name="aeb1e4b1213ab24133489f52e79d3752b"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>saveFlannIndexQuery</b> (const std::vector&lt; unsigned char &gt; &amp;indexData) const =0</td></tr>
<tr class="separator:aeb1e4b1213ab24133489f52e79d3752b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba03ab69fbdb4efe495e37176be2fe3c" id="r_aba03ab69fbdb4efe495e37176be2fe3c"><td class="memItemLeft" align="right" valign="top"><a id="aba03ab69fbdb4efe495e37176be2fe3c" name="aba03ab69fbdb4efe495e37176be2fe3c"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>loadQuery</b> (<a class="el" href="classrtabmap_1_1VWDictionary.html">VWDictionary</a> &amp;dictionary, bool lastStateOnly=true, bool idsOnly=false) const =0</td></tr>
<tr class="separator:aba03ab69fbdb4efe495e37176be2fe3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0cc94fcfd6fecf37e7c37285582f595" id="r_af0cc94fcfd6fecf37e7c37285582f595"><td class="memItemLeft" align="right" valign="top"><a id="af0cc94fcfd6fecf37e7c37285582f595" name="af0cc94fcfd6fecf37e7c37285582f595"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>loadLastNodesQuery</b> (std::list&lt; <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;signatures, bool loadWordIdsOnly) const =0</td></tr>
<tr class="separator:af0cc94fcfd6fecf37e7c37285582f595"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8335597595e18cd0f060d03a6f69ced1" id="r_a8335597595e18cd0f060d03a6f69ced1"><td class="memItemLeft" align="right" valign="top"><a id="a8335597595e18cd0f060d03a6f69ced1" name="a8335597595e18cd0f060d03a6f69ced1"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>loadSignaturesQuery</b> (const std::list&lt; int &gt; &amp;ids, std::list&lt; <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;signatures, bool loadWordIdsOnly) const =0</td></tr>
<tr class="separator:a8335597595e18cd0f060d03a6f69ced1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1a2add5977feb1a197b64946d982fe" id="r_ada1a2add5977feb1a197b64946d982fe"><td class="memItemLeft" align="right" valign="top"><a id="ada1a2add5977feb1a197b64946d982fe" name="ada1a2add5977feb1a197b64946d982fe"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>loadWordsQuery</b> (const std::set&lt; int &gt; &amp;wordIds, std::list&lt; <a class="el" href="classrtabmap_1_1VisualWord.html">VisualWord</a> * &gt; &amp;vws) const =0</td></tr>
<tr class="separator:ada1a2add5977feb1a197b64946d982fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a905e2ec8c1029c6704145cbbe1a61e81" id="r_a905e2ec8c1029c6704145cbbe1a61e81"><td class="memItemLeft" align="right" valign="top"><a id="a905e2ec8c1029c6704145cbbe1a61e81" name="a905e2ec8c1029c6704145cbbe1a61e81"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>loadLinksQuery</b> (int signatureId, std::multimap&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;links, <a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e">Link::Type</a> type=<a class="el" href="classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4">Link::kUndef</a>) const =0</td></tr>
<tr class="separator:a905e2ec8c1029c6704145cbbe1a61e81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72ce5fa6eeda2d88563880d5eb74995e" id="r_a72ce5fa6eeda2d88563880d5eb74995e"><td class="memItemLeft" align="right" valign="top"><a id="a72ce5fa6eeda2d88563880d5eb74995e" name="a72ce5fa6eeda2d88563880d5eb74995e"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>loadNodeDataQuery</b> (std::list&lt; <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const =0</td></tr>
<tr class="separator:a72ce5fa6eeda2d88563880d5eb74995e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae80144aef3b826748ad2363d2e43451c" id="r_ae80144aef3b826748ad2363d2e43451c"><td class="memItemLeft" align="right" valign="top"><a id="ae80144aef3b826748ad2363d2e43451c" name="ae80144aef3b826748ad2363d2e43451c"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>getCalibrationQuery</b> (int signatureId, std::vector&lt; <a class="el" href="classrtabmap_1_1CameraModel.html">CameraModel</a> &gt; &amp;models, std::vector&lt; <a class="el" href="classrtabmap_1_1StereoCameraModel.html">StereoCameraModel</a> &gt; &amp;stereoModels) const =0</td></tr>
<tr class="separator:ae80144aef3b826748ad2363d2e43451c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2f60adc81a30ab3aa5b8644c37e2f65" id="r_ae2f60adc81a30ab3aa5b8644c37e2f65"><td class="memItemLeft" align="right" valign="top"><a id="ae2f60adc81a30ab3aa5b8644c37e2f65" name="ae2f60adc81a30ab3aa5b8644c37e2f65"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>getLaserScanInfoQuery</b> (int signatureId, <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &amp;info) const =0</td></tr>
<tr class="separator:ae2f60adc81a30ab3aa5b8644c37e2f65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9eada5e7b9c478a15b3a4428c7df8aac" id="r_a9eada5e7b9c478a15b3a4428c7df8aac"><td class="memItemLeft" align="right" valign="top"><a id="a9eada5e7b9c478a15b3a4428c7df8aac" name="a9eada5e7b9c478a15b3a4428c7df8aac"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>getNodeInfoQuery</b> (int signatureId, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;pose, int &amp;mapId, int &amp;weight, std::string &amp;label, double &amp;stamp, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &amp;groundTruthPose, std::vector&lt; float &gt; &amp;velocity, <a class="el" href="classrtabmap_1_1GPS.html">GPS</a> &amp;gps, <a class="el" href="namespacertabmap.html#ac175ef40b7a4acb632232d3d96a1199a">EnvSensors</a> &amp;sensors) const =0</td></tr>
<tr class="separator:a9eada5e7b9c478a15b3a4428c7df8aac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54ebc27d440e041543e1f3744ce67753" id="r_a54ebc27d440e041543e1f3744ce67753"><td class="memItemLeft" align="right" valign="top"><a id="a54ebc27d440e041543e1f3744ce67753" name="a54ebc27d440e041543e1f3744ce67753"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getLocalFeaturesQuery</b> (int signatureId, std::multimap&lt; int, int &gt; &amp;words, std::vector&lt; cv::KeyPoint &gt; &amp;keypoints, std::vector&lt; cv::Point3f &gt; &amp;points, cv::Mat &amp;descriptors) const =0</td></tr>
<tr class="separator:a54ebc27d440e041543e1f3744ce67753"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64b3988a6c5552f2e820dad7f1e2350d" id="r_a64b3988a6c5552f2e820dad7f1e2350d"><td class="memItemLeft" align="right" valign="top"><a id="a64b3988a6c5552f2e820dad7f1e2350d" name="a64b3988a6c5552f2e820dad7f1e2350d"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getLastNodeIdsQuery</b> (std::set&lt; int &gt; &amp;ids) const =0</td></tr>
<tr class="separator:a64b3988a6c5552f2e820dad7f1e2350d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a469523d1d132a2d85b001b653cbeec" id="r_a7a469523d1d132a2d85b001b653cbeec"><td class="memItemLeft" align="right" valign="top"><a id="a7a469523d1d132a2d85b001b653cbeec" name="a7a469523d1d132a2d85b001b653cbeec"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getAllNodeIdsQuery</b> (std::set&lt; int &gt; &amp;ids, bool ignoreChildren, bool ignoreBadSignatures, bool ignoreIntermediateNodes) const =0</td></tr>
<tr class="separator:a7a469523d1d132a2d85b001b653cbeec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3d020ffa5dc515969562f2148c77616" id="r_af3d020ffa5dc515969562f2148c77616"><td class="memItemLeft" align="right" valign="top"><a id="af3d020ffa5dc515969562f2148c77616" name="af3d020ffa5dc515969562f2148c77616"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getAllOdomPosesQuery</b> (std::map&lt; int, <a class="el" href="classrtabmap_1_1Transform.html">Transform</a> &gt; &amp;poses, bool ignoreChildren, bool ignoreIntermediateNodes) const =0</td></tr>
<tr class="separator:af3d020ffa5dc515969562f2148c77616"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac40e8ddb4de755c77af3d0a18b580ddd" id="r_ac40e8ddb4de755c77af3d0a18b580ddd"><td class="memItemLeft" align="right" valign="top"><a id="ac40e8ddb4de755c77af3d0a18b580ddd" name="ac40e8ddb4de755c77af3d0a18b580ddd"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getAllLinksQuery</b> (std::multimap&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;links, bool ignoreNullLinks, bool withLandmarks) const =0</td></tr>
<tr class="separator:ac40e8ddb4de755c77af3d0a18b580ddd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1fe877cef0082829098c0248f584073" id="r_aa1fe877cef0082829098c0248f584073"><td class="memItemLeft" align="right" valign="top"><a id="aa1fe877cef0082829098c0248f584073" name="aa1fe877cef0082829098c0248f584073"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getLastIdQuery</b> (const std::string &amp;tableName, int &amp;id, const std::string &amp;fieldName=&quot;id&quot;) const =0</td></tr>
<tr class="separator:aa1fe877cef0082829098c0248f584073"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad154b0744a10c57a2914c0628fc51cb8" id="r_ad154b0744a10c57a2914c0628fc51cb8"><td class="memItemLeft" align="right" valign="top"><a id="ad154b0744a10c57a2914c0628fc51cb8" name="ad154b0744a10c57a2914c0628fc51cb8"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getInvertedIndexNiQuery</b> (int signatureId, int &amp;ni) const =0</td></tr>
<tr class="separator:ad154b0744a10c57a2914c0628fc51cb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d222c0c27d74217483b1de07cbf3a69" id="r_a2d222c0c27d74217483b1de07cbf3a69"><td class="memItemLeft" align="right" valign="top"><a id="a2d222c0c27d74217483b1de07cbf3a69" name="a2d222c0c27d74217483b1de07cbf3a69"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getNodesObservingLandmarkQuery</b> (int landmarkId, std::map&lt; int, <a class="el" href="classrtabmap_1_1Link.html">Link</a> &gt; &amp;nodes) const =0</td></tr>
<tr class="separator:a2d222c0c27d74217483b1de07cbf3a69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13305cb7202d0770472884ca848e74e3" id="r_a13305cb7202d0770472884ca848e74e3"><td class="memItemLeft" align="right" valign="top"><a id="a13305cb7202d0770472884ca848e74e3" name="a13305cb7202d0770472884ca848e74e3"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getNodeIdByLabelQuery</b> (const std::string &amp;label, int &amp;id) const =0</td></tr>
<tr class="separator:a13305cb7202d0770472884ca848e74e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62e59283e1cf8f042bc21e565db4418e" id="r_a62e59283e1cf8f042bc21e565db4418e"><td class="memItemLeft" align="right" valign="top"><a id="a62e59283e1cf8f042bc21e565db4418e" name="a62e59283e1cf8f042bc21e565db4418e"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>getAllLabelsQuery</b> (std::map&lt; int, std::string &gt; &amp;labels) const =0</td></tr>
<tr class="separator:a62e59283e1cf8f042bc21e565db4418e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classUThread"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classUThread')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classUThread.html">UThread</a></td></tr>
<tr class="memitem:a731ef4dd5a8d15abcc06e7cfa53cd153 inherit pub_types_classUThread" id="r_a731ef4dd5a8d15abcc06e7cfa53cd153"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153">Priority</a> { <br />
&#160;&#160;<b>kPLow</b>
, <b>kPBelowNormal</b>
, <b>kPNormal</b>
, <b>kPAboveNormal</b>
, <br />
&#160;&#160;<b>kPRealTime</b>
<br />
}</td></tr>
<tr class="separator:a731ef4dd5a8d15abcc06e7cfa53cd153 inherit pub_types_classUThread"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classUThreadC_3_01void_01_4"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classUThreadC_3_01void_01_4')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classUThreadC_3_01void_01_4.html">UThreadC&lt; void &gt;</a></td></tr>
<tr class="memitem:a0ffb19a834ba3271ed3c9f650f119664 inherit pub_types_classUThreadC_3_01void_01_4" id="r_a0ffb19a834ba3271ed3c9f650f119664"><td class="memItemLeft" align="right" valign="top">typedef THREAD_HANDLE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a0ffb19a834ba3271ed3c9f650f119664">Handle</a></td></tr>
<tr class="separator:a0ffb19a834ba3271ed3c9f650f119664 inherit pub_types_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14b685cdf9b6529a5e31f0f021c4cfd9 inherit pub_types_classUThreadC_3_01void_01_4" id="r_a14b685cdf9b6529a5e31f0f021c4cfd9"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a14b685cdf9b6529a5e31f0f021c4cfd9">Handler</a>) ()</td></tr>
<tr class="separator:a14b685cdf9b6529a5e31f0f021c4cfd9 inherit pub_types_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ffb19a834ba3271ed3c9f650f119664 inherit pub_types_classUThreadC_3_01void_01_4" id="r_a0ffb19a834ba3271ed3c9f650f119664"><td class="memItemLeft" align="right" valign="top">typedef THREAD_HANDLE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a0ffb19a834ba3271ed3c9f650f119664">Handle</a></td></tr>
<tr class="separator:a0ffb19a834ba3271ed3c9f650f119664 inherit pub_types_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14b685cdf9b6529a5e31f0f021c4cfd9 inherit pub_types_classUThreadC_3_01void_01_4" id="r_a14b685cdf9b6529a5e31f0f021c4cfd9"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a14b685cdf9b6529a5e31f0f021c4cfd9">Handler</a>) ()</td></tr>
<tr class="separator:a14b685cdf9b6529a5e31f0f021c4cfd9 inherit pub_types_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_methods_classUThreadC_3_01void_01_4"><td colspan="2" onclick="javascript:toggleInherit('pro_static_methods_classUThreadC_3_01void_01_4')"><img src="closed.png" alt="-"/>&#160;Static Protected Member Functions inherited from <a class="el" href="classUThreadC_3_01void_01_4.html">UThreadC&lt; void &gt;</a></td></tr>
<tr class="memitem:afc1715cfa1d5ae88f57ba2fe983bb9e5 inherit pro_static_methods_classUThreadC_3_01void_01_4" id="r_afc1715cfa1d5ae88f57ba2fe983bb9e5"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#afc1715cfa1d5ae88f57ba2fe983bb9e5">Exit</a> ()</td></tr>
<tr class="separator:afc1715cfa1d5ae88f57ba2fe983bb9e5 inherit pro_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dc3a0223030adcc0c6e3ef829efc824 inherit pro_static_methods_classUThreadC_3_01void_01_4" id="r_a5dc3a0223030adcc0c6e3ef829efc824"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a5dc3a0223030adcc0c6e3ef829efc824">TestCancel</a> ()</td></tr>
<tr class="separator:a5dc3a0223030adcc0c6e3ef829efc824 inherit pro_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33cd70cb0291ebd0a95016e89b4d5b6c inherit pro_static_methods_classUThreadC_3_01void_01_4" id="r_a33cd70cb0291ebd0a95016e89b4d5b6c"><td class="memItemLeft" align="right" valign="top">static Handle&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a33cd70cb0291ebd0a95016e89b4d5b6c">Self</a> ()</td></tr>
<tr class="separator:a33cd70cb0291ebd0a95016e89b4d5b6c inherit pro_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc1715cfa1d5ae88f57ba2fe983bb9e5 inherit pro_static_methods_classUThreadC_3_01void_01_4" id="r_afc1715cfa1d5ae88f57ba2fe983bb9e5"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#afc1715cfa1d5ae88f57ba2fe983bb9e5">Exit</a> ()</td></tr>
<tr class="separator:afc1715cfa1d5ae88f57ba2fe983bb9e5 inherit pro_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dc3a0223030adcc0c6e3ef829efc824 inherit pro_static_methods_classUThreadC_3_01void_01_4" id="r_a5dc3a0223030adcc0c6e3ef829efc824"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#a5dc3a0223030adcc0c6e3ef829efc824">TestCancel</a> ()</td></tr>
<tr class="separator:a5dc3a0223030adcc0c6e3ef829efc824 inherit pro_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afed28b5b5bb00d4addbb0cd7f2ce0ce2 inherit pro_static_methods_classUThreadC_3_01void_01_4" id="r_afed28b5b5bb00d4addbb0cd7f2ce0ce2"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUThreadC_3_01void_01_4.html#afed28b5b5bb00d4addbb0cd7f2ce0ce2">Self</a> ()</td></tr>
<tr class="separator:afed28b5b5bb00d4addbb0cd7f2ce0ce2 inherit pro_static_methods_classUThreadC_3_01void_01_4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Abstract database driver for RTAB-Map maps (signatures, links, words, statistics). </p>
<p><a class="el" href="classrtabmap_1_1DBDriver.html" title="Abstract database driver for RTAB-Map maps (signatures, links, words, statistics).">DBDriver</a> is the persistence layer used by <a class="el" href="classrtabmap_1_1Memory.html">Memory</a>, <a class="el" href="classrtabmap_1_1DBReader.html">DBReader</a> and tools that read or write <code></code>.db files. The default implementation is <a class="el" href="classrtabmap_1_1DBDriverSqlite3.html">DBDriverSqlite3</a>, created by <a class="el" href="classrtabmap_1_1DBDriver.html#a1f75e440b35243ccad645052bc4a12f9">create()</a>.</p>
<p>The driver extends <a class="el" href="UThreadNode_8h.html#a82fc8ffe23f95d50f934eb27afd351d6">UThreadNode</a>. Pending <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> and <a class="el" href="classrtabmap_1_1VisualWord.html">VisualWord</a> objects are queued with <a class="el" href="classrtabmap_1_1DBDriver.html#ad1510e157f3ab8df3284528369a6d88f">asyncSave()</a> and flushed to the database by <a class="el" href="classrtabmap_1_1DBDriver.html#ab4a0036162994c2ef76d4236e2a7ea0a">emptyTrashes()</a> (also called from the background thread on <a class="el" href="classrtabmap_1_1DBDriver.html#abb644a203d148d0b29db41aea04c949f">closeConnection()</a>).</p>
<p>Public methods are thread-safe where noted (mutex-protected wrappers). Subclasses implement SQL-specific logic in protected <code>*Query</code>() virtual methods.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classrtabmap_1_1DBDriverSqlite3.html" title="SQLite3 implementation of DBDriver for RTAB-Map map databases.">DBDriverSqlite3</a> </dd>
<dd>
<a class="el" href="classrtabmap_1_1Memory.html" title="Three-tiered memory management (STM, WM, LTM) for RTAB-Map.">Memory</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="DBDriver_8h_source.html#l00071">71</a> of file <a class="el" href="DBDriver_8h_source.html">DBDriver.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a1f75e440b35243ccad645052bc4a12f9" name="a1f75e440b35243ccad645052bc4a12f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f75e440b35243ccad645052bc4a12f9">&#9670;&#160;</a></span>create()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classrtabmap_1_1DBDriver.html">DBDriver</a> * rtabmap::DBDriver::create </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;&#160;</td>
<td class="paramname"><em>parameters</em> = <code><a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a>()</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Factory: returns a SQLite database driver (<a class="el" href="classrtabmap_1_1DBDriverSqlite3.html">DBDriverSqlite3</a>). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">parameters</td><td>Optional driver parameters (e.g. <a class="el" href="classrtabmap_1_1Parameters.html#a4356a08f2a4153665ff049e73000c303">Parameters::kDbTargetVersion()</a>). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>New driver instance; caller owns the pointer. </dd></dl>
</div>
</div>
<a id="a3c73e045d9bdf8cad1c58efc9d930427" name="a3c73e045d9bdf8cad1c58efc9d930427"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c73e045d9bdf8cad1c58efc9d930427">&#9670;&#160;</a></span>parseParameters()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void rtabmap::DBDriver::parseParameters </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55">ParametersMap</a> &amp;&#160;</td>
<td class="paramname"><em>parameters</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Parse driver parameters from the map (e.g. target schema version). </p>
<p>Reimplemented in <a class="el" href="classrtabmap_1_1DBDriverSqlite3.html#ab1933c0cad6c69c3ae788854731cdeec">rtabmap::DBDriverSqlite3</a>.</p>
</div>
</div>
<a id="a0ecd6182f404d8e6822b66a54f1d248a" name="a0ecd6182f404d8e6822b66a54f1d248a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ecd6182f404d8e6822b66a54f1d248a">&#9670;&#160;</a></span>isInMemory()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool rtabmap::DBDriver::isInMemory </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>True when no database file URL was set at open time. </p>
<dl class="section note"><dt>Note</dt><dd><a class="el" href="classrtabmap_1_1DBDriverSqlite3.html">DBDriverSqlite3</a> overrides this when <a class="el" href="classrtabmap_1_1Parameters.html#af89c7aa5e4d7dea98fe2cd05e231346d">Parameters::kDbSqlite3InMemory()</a> is enabled. </dd></dl>
<p>Reimplemented in <a class="el" href="classrtabmap_1_1DBDriverSqlite3.html#af9cf8fda0fcc032efb44981d908b4e55">rtabmap::DBDriverSqlite3</a>.</p>
<p class="definition">Definition at line <a class="el" href="DBDriver_8h_source.html#l00090">90</a> of file <a class="el" href="DBDriver_8h_source.html">DBDriver.h</a>.</p>
</div>
</div>
<a id="a79365611bce06aeda0d078641be89cab" name="a79365611bce06aeda0d078641be89cab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79365611bce06aeda0d078641be89cab">&#9670;&#160;</a></span>getUrl()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::string &amp; rtabmap::DBDriver::getUrl </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Database file path last passed to <a class="el" href="classrtabmap_1_1DBDriver.html#ac6c0a2260ba2c3cc030136c9609142f5">openConnection()</a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="DBDriver_8h_source.html#l00092">92</a> of file <a class="el" href="DBDriver_8h_source.html">DBDriver.h</a>.</p>
</div>
</div>
<a id="a456bc49e8e60e0c754078a4b09e3f1a1" name="a456bc49e8e60e0c754078a4b09e3f1a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a456bc49e8e60e0c754078a4b09e3f1a1">&#9670;&#160;</a></span>getTargetVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::string &amp; rtabmap::DBDriver::getTargetVersion </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Target schema version for new databases (from parameters). </dd></dl>
<p class="definition">Definition at line <a class="el" href="DBDriver_8h_source.html#l00094">94</a> of file <a class="el" href="DBDriver_8h_source.html">DBDriver.h</a>.</p>
</div>
</div>
<a id="ad1510e157f3ab8df3284528369a6d88f" name="ad1510e157f3ab8df3284528369a6d88f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1510e157f3ab8df3284528369a6d88f">&#9670;&#160;</a></span>asyncSave()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::asyncSave </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classrtabmap_1_1Signature.html">Signature</a> *&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Queue a signature for deferred save; ownership is transferred. </p>
<dl class="section note"><dt>Note</dt><dd>Only the <em>compressed</em> sensor buffers are written (<a class="el" href="classrtabmap_1_1SensorData.html#aafcc6b483798b7a99fafa8f929db1029" title="Returns the compressed RGB/grayscale image.">SensorData::imageCompressed()</a>, depthOrRightCompressed(), laserScanCompressed(), ...). Raw matrices are ignored, so a signature carrying only raw data is stored with empty payloads. <a class="el" href="classrtabmap_1_1Memory.html" title="Three-tiered memory management (STM, WM, LTM) for RTAB-Map.">Memory</a> compresses before saving; a caller driving the driver directly should compress first with <a class="el" href="namespacertabmap.html#abd9d5523210562abd9b5dc8fa9dbeb99">compressImage2()</a> / <a class="el" href="namespacertabmap.html#aca82ee9efc46461c648c7ab8999e1d5b">compressData2()</a>, or pass the compressed buffers to <a class="el" href="classrtabmap_1_1SensorData.html#a203770ef217dfdc67b98ca593b2cab24">SensorData::setRGBDImage()</a> / setLaserScan(), which treat a 1-row CV_8UC1 matrix as already compressed. </dd></dl>
</div>
</div>
<a id="ab4a0036162994c2ef76d4236e2a7ea0a" name="ab4a0036162994c2ef76d4236e2a7ea0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4a0036162994c2ef76d4236e2a7ea0a">&#9670;&#160;</a></span>emptyTrashes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::emptyTrashes </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>async</em> = <code>false</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Flush queued signatures and visual words to the database. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">async</td><td>If true, signal the background thread instead of flushing synchronously. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ada0df079a28dd5c2cc37baf2f3f8e79d" name="ada0df079a28dd5c2cc37baf2f3f8e79d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada0df079a28dd5c2cc37baf2f3f8e79d">&#9670;&#160;</a></span>getEmptyTrashesTime()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double rtabmap::DBDriver::getEmptyTrashesTime </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="DBDriver_8h_source.html#l00116">116</a> of file <a class="el" href="DBDriver_8h_source.html">DBDriver.h</a>.</p>
</div>
</div>
<a id="ab635aa1b5087868f3bc3e27cc3bd92ab" name="ab635aa1b5087868f3bc3e27cc3bd92ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab635aa1b5087868f3bc3e27cc3bd92ab">&#9670;&#160;</a></span>setTimestampUpdateEnabled()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::setTimestampUpdateEnabled </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>enabled</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="DBDriver_8h_source.html#l00117">117</a> of file <a class="el" href="DBDriver_8h_source.html">DBDriver.h</a>.</p>
</div>
</div>
<a id="abbf62fc6967cf618e6b2aece44f45230" name="abbf62fc6967cf618e6b2aece44f45230"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbf62fc6967cf618e6b2aece44f45230">&#9670;&#160;</a></span>generateGraph()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::generateGraph </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>fileName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::set&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>ids</em> = <code>std::set&lt;&#160;int&#160;&gt;()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; int, <a class="el" href="classrtabmap_1_1Signature.html">Signature</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>otherSignatures</em> = <code>std::map&lt;&#160;int,&#160;<a class="el" href="classrtabmap_1_1Signature.html">Signature</a>&#160;*&#160;&gt;()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Export the pose graph to a Graphviz DOT file for visualization. </p>
<p>Reads nodes and links from the database (and optionally from <code>otherSignatures</code> not yet persisted) and writes <code>fileName</code>. Does not modify the database. If <code>ids</code> is empty, all node ids are included. </p>
</div>
</div>
<a id="a2f5e8e0b367e49cfbba7c96b28306a61" name="a2f5e8e0b367e49cfbba7c96b28306a61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f5e8e0b367e49cfbba7c96b28306a61">&#9670;&#160;</a></span>updateOccupancyGrid()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::updateOccupancyGrid </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nodeId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const cv::Mat &amp;&#160;</td>
<td class="paramname"><em>ground</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const cv::Mat &amp;&#160;</td>
<td class="paramname"><em>obstacles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const cv::Mat &amp;&#160;</td>
<td class="paramname"><em>empty</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>cellSize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const cv::Point3f &amp;&#160;</td>
<td class="paramname"><em>viewpoint</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update occupancy grid cells for a node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ground</td><td>Ground cells (raw <code>CV_32FC2/<code>CV_32FC3</code>,</code> or compressed <code>CV_8UC1</code> 1×N). </td></tr>
<tr><td class="paramname">obstacles</td><td>Obstacle cells (same formats as <code>ground</code>). </td></tr>
<tr><td class="paramname">empty</td><td>Empty cells (same formats as <code>ground</code>; ignored on DB schema &lt; 0.16.0). Raw mats are compressed internally via <a class="el" href="classrtabmap_1_1SensorData.html#a5c12949c62c65281bade9ffcc681462b">SensorData::setOccupancyGrid()</a> before writing. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3a02d595356e2dd0ed8b8933a6c4e811" name="a3a02d595356e2dd0ed8b8933a6c4e811"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a02d595356e2dd0ed8b8933a6c4e811">&#9670;&#160;</a></span>updateDepthImage()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::updateDepthImage </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nodeId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const cv::Mat &amp;&#160;</td>
<td class="paramname"><em>image</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>format</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update the depth image stored for a node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">image</td><td>Raw depth image, or pre-compressed blob (<code>CV_8UC1</code>, single row). </td></tr>
<tr><td class="paramname">format</td><td>Compression format when <code>image</code> is raw (e.g. <code>".png"</code>); ignored if already compressed. Uncompressed images are compressed with <a class="el" href="namespacertabmap.html#abd9d5523210562abd9b5dc8fa9dbeb99">compressImage2()</a> before writing. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7d167e53d447d77dd3fe35665f8a661b" name="a7d167e53d447d77dd3fe35665f8a661b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d167e53d447d77dd3fe35665f8a661b">&#9670;&#160;</a></span>updateLaserScan()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::updateLaserScan </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nodeId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1LaserScan.html">LaserScan</a> &amp;&#160;</td>
<td class="paramname"><em>scan</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update the laser scan stored for a node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">scan</td><td>Uncompressed scan, or already compressed (<a class="el" href="classrtabmap_1_1LaserScan.html#a25e8e9681240f4a21960977f5c12bcd9">LaserScan::isCompressed()</a>). Uncompressed data is compressed with <a class="el" href="namespacertabmap.html#aca82ee9efc46461c648c7ab8999e1d5b">compressData2()</a> before writing. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4dbccd0dabf72da724488692b1713832" name="a4dbccd0dabf72da724488692b1713832"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4dbccd0dabf72da724488692b1713832">&#9670;&#160;</a></span>addStatistics()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::addStatistics </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classrtabmap_1_1Statistics.html">Statistics</a> &amp;&#160;</td>
<td class="paramname"><em>statistics</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>saveWmState</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Append a <a class="el" href="classrtabmap_1_1Statistics.html">Statistics</a> record for a processed node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">statistics</td><td>Metrics for <a class="el" href="classrtabmap_1_1Statistics.html#a4ba41e262e2af21bfb2c9d1b6e493d6d">Statistics::refImageId()</a> (insert skipped if id &le; 0 or data empty). </td></tr>
<tr><td class="paramname">saveWmState</td><td>If true and schema &ge; 0.16.2, also store compressed working-memory state. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a8323a53d20e4ade6b1c7b268c473a170" name="a8323a53d20e4ade6b1c7b268c473a170"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8323a53d20e4ade6b1c7b268c473a170">&#9670;&#160;</a></span>savePreviewImage()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::savePreviewImage </td>
<td>(</td>
<td class="paramtype">const cv::Mat &amp;&#160;</td>
<td class="paramname"><em>image</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Save the map preview thumbnail in the Admin table. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">image</td><td>Raw image or JPEG-compressed blob (<code>CV_8UC1</code>, single row); empty clears it. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Requires database schema &ge; 0.12.0. </dd></dl>
</div>
</div>
<a id="a22d5643353b8d49bcc94c5a4abbc9a39" name="a22d5643353b8d49bcc94c5a4abbc9a39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22d5643353b8d49bcc94c5a4abbc9a39">&#9670;&#160;</a></span>saveOptimizedMesh()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::saveOptimizedMesh </td>
<td>(</td>
<td class="paramtype">const cv::Mat &amp;&#160;</td>
<td class="paramname"><em>cloud</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::vector&lt; std::vector&lt; RTABMAP_PCL_INDEX &gt; &gt; &gt; &amp;&#160;</td>
<td class="paramname"><em>polygons</em> = <code>std::vector&lt;&#160;std::vector&lt;&#160;std::vector&lt;&#160;RTABMAP_PCL_INDEX&#160;&gt;&#160;&gt;&#160;&gt;()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::vector&lt; Eigen::Vector2f &gt; &gt; &amp;&#160;</td>
<td class="paramname"><em>texCoords</em> = <code>std::vector&lt;&#160;std::vector&lt;&#160;Eigen::Vector2f&#160;&gt;&#160;&gt;()</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const cv::Mat &amp;&#160;</td>
<td class="paramname"><em>textures</em> = <code>cv::Mat()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Persist the global optimized 3D mesh to the database. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cloud</td><td>Point cloud (<code>CV_32FC1</code> or <code>CV_32FC3</code>). </td></tr>
<tr><td class="paramname">polygons</td><td>Optional per-texture polygon index lists (texture → polygon → vertex indices). </td></tr>
<tr><td class="paramname">texCoords</td><td>Optional UV coordinates per texture (one per polygon vertex). </td></tr>
<tr><td class="paramname">textures</td><td>Optional concatenated square texture images (same size per texture). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a33c2abff50e61f35efbbdbe530963fea" name="a33c2abff50e61f35efbbdbe530963fea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33c2abff50e61f35efbbdbe530963fea">&#9670;&#160;</a></span>saveFlannIndex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::saveFlannIndex </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
<td class="paramname"><em>indexData</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Persist the visual word dictionary FLANN index (serialized blob). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">indexData</td><td>Serialized index from <a class="el" href="classrtabmap_1_1VWDictionary.html#a2864c406b3792dbfb7c8c334b6e44d41">VWDictionary::serializeIndex()</a>; pass empty to clear. </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Requires database schema &ge; 0.23.0. Used when <a class="el" href="classrtabmap_1_1Parameters.html#a866886411343233d86d96d574ea1c524">Parameters::kKpFlannIndexSaved()</a> is enabled. </dd></dl>
</div>
</div>
<a id="a7b1222cf6e75d7365b5b90c37bca2a85" name="a7b1222cf6e75d7365b5b90c37bca2a85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b1222cf6e75d7365b5b90c37bca2a85">&#9670;&#160;</a></span>isConnected()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool rtabmap::DBDriver::isConnected </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>True if a database connection is active. </dd></dl>
</div>
</div>
<a id="a9adb7be1463016917f24a3db5f1e8264" name="a9adb7be1463016917f24a3db5f1e8264"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9adb7be1463016917f24a3db5f1e8264">&#9670;&#160;</a></span>getDatabaseVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string rtabmap::DBDriver::getDatabaseVersion </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Schema version string stored in the database (e.g. "0.21.0"). </dd></dl>
</div>
</div>
<a id="a835fc23bd4f6532af71f3aadfb8037d8" name="a835fc23bd4f6532af71f3aadfb8037d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a835fc23bd4f6532af71f3aadfb8037d8">&#9670;&#160;</a></span>executeNoResult()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void rtabmap::DBDriver::executeNoResult </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>sql</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Run a SQL statement that does not return result rows. </p>
<p>Executes <code>sql</code> on the open database (e.g. <code>INSERT</code>, <code>UPDATE</code>, <code>DELETE</code>, <code>CREATE</code>, <code>PRAGMA</code>). Thread-safe wrapper around the backend's SQL execution.</p>
<p>For reads, use the dedicated <a class="el" href="classrtabmap_1_1DBDriver.html#a0a713d7a6dabdcfbb8d733dba2a20120">loadSignature()</a>, <a class="el" href="classrtabmap_1_1DBDriver.html#aab00d50127b8b5bb92f8605e35aaca4d">loadLinks()</a> and related query methods instead of raw SQL.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sql</td><td>Complete SQL statement (SQLite syntax for <a class="el" href="classrtabmap_1_1DBDriverSqlite3.html">DBDriverSqlite3</a>). </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The connection must be open (<a class="el" href="classrtabmap_1_1DBDriver.html#a7b1222cf6e75d7365b5b90c37bca2a85">isConnected()</a>). On failure the driver aborts with an assertion (SQLite backend). </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd><code>sql</code> is passed verbatim; sanitize any user-controlled values before calling. </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>corelib/include/rtabmap/core/<a class="el" href="DBDriver_8h_source.html">DBDriver.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacertabmap.html">rtabmap</a></li><li class="navelem"><a class="el" href="classrtabmap_1_1DBDriver.html">DBDriver</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>