Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 1099e73f16f15ba3cf656e619f52a447 > files > 352

ompl-devel-0.9.5-1.fc14.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8"/>
<title>OMPL: ompl::Profiler Class Reference</title>
<meta name="author" content="Ioan A. Șucan, Mark Moll, Lydia E. Kavraki">
<link rel="stylesheet" href="../css/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="../css/print.css" type="text/css" media="print">
<!--[if lt IE 7]>
<script type="text/javascript" src="../js/jquery/jquery.js"></script>
<script type="text/javascript" src="../js/jquery/jquery.dropdown.js"></script>
<![endif]-->
<script type="text/javaScript" src="search/search.js"></script>
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-9156598-2']);
  _gaq.push(['_trackPageview']);
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search API');
--></script>
<div class="navigation" id="top">
  <div class="tabs" id="ompltitle">
    <ul class="tablist">
      <li>The Open Motion Planning Library</li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search API" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)"
               onblur="searchBox.OnSearchFieldFocus(false)"
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>

  <ul id="nav" class="dropdown">
    <li class="first"><a href="index.html">Home</a></li>
    <li><a href="download.html">Download</a></li>
    <li><a href="documentation.html">Documentation</a></li>
    <li><span class="dir">Code API</span>
      <ul>
        <li><a href="api_overview.html">API Overview</a></li>
        <li><a href="namespaces.html">Namespaces</a></li>
        <li><a href="annotated.html">Classes</a></li>
        <li><a href="files.html">Files</a></li>
        <li><a href="dirs.html">Directories</a></li>
      </ul>
    </li>
    <li><span class="dir">Community</span>
      <ul>
        <li><a href="developers.html">Developers</a></li>
        <li><a href="thirdparty.html">Contributions</a></li>
        <li><a href="education.html">Education</a></li>
        <li><a href="gallery.html">Gallery</a></li>
      </ul>
    </li>
    <li><span class="dir">About</span>
      <ul>
        <li><a href="license.html">License</a></li>
        <li><a href="citations.html">Citations</a></li>
        <li><a href="acknowledgements.html">Acknowledgments</a></li>
        <li><a href="contact.html">Contact Us</a></li>
      </ul>
    </li>
  </ul>
</div>

<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
  onmouseover="return searchBox.OnSearchSelectShow()"
  onmouseout="return searchBox.OnSearchSelectHide()"
  onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
  <iframe src="" frameborder="0"name="MSearchResults" id="MSearchResults"></iframe>
</div>

<div class="container">
  <div class="span-22 push-2 first last">
  <div>
<!-- Generated by Doxygen 1.7.4 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespaceompl.html">ompl</a>      </li>
      <li class="navelem"><a class="el" href="classompl_1_1Profiler.html">Profiler</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">ompl::Profiler Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="ompl::Profiler" -->
<p>This is a simple thread-safe tool for counting time spent in various chunks of code. This is different from external profiling tools in that it allows the user to count time spent in various bits of code (sub-function granularity) or count how many times certain pieces of code are executed.  
 <a href="classompl_1_1Profiler.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="Profiler_8h_source.html">Profiler.h</a>&gt;</code></p>

<p><a href="classompl_1_1Profiler-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler_1_1BeginBlock.html">BeginBlock</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This instance will call <a class="el" href="classompl_1_1Profiler.html#a5f1e59ea058ea5ba30fb3e52b3d892d7" title="Begin counting time for a specific chunk of code.">Profiler::begin()</a> when constructed and <a class="el" href="classompl_1_1Profiler.html#add3c74cb47a2f76c0f517d702301a17d" title="Stop counting time for a specific chunk of code.">Profiler::end()</a> when it goes out of scope.  <a href="classompl_1_1Profiler_1_1BeginBlock.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><b>PerThread</b></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Timing information to be maintained for each thread. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><b>TimeInfo</b></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Information about time spent in a section of the code. <br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab03aeab6be531dc043d4b5e49e76cd13"></a><!-- doxytag: member="ompl::Profiler::Profiler" ref="ab03aeab6be531dc043d4b5e49e76cd13" args="(bool printOnDestroy=false, bool autoStart=false)" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#ab03aeab6be531dc043d4b5e49e76cd13">Profiler</a> (bool printOnDestroy=false, bool autoStart=false)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. It is allowed to separately instantiate this class (not only as a singleton) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5b736004260ed82114c7eb160787065"></a><!-- doxytag: member="ompl::Profiler::~Profiler" ref="ab5b736004260ed82114c7eb160787065" args="(void)" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#ab5b736004260ed82114c7eb160787065">~Profiler</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33c953ccc35f5de9d1e5de5737a3b6b2"></a><!-- doxytag: member="ompl::Profiler::start" ref="a33c953ccc35f5de9d1e5de5737a3b6b2" args="(void)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a33c953ccc35f5de9d1e5de5737a3b6b2">start</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Start counting time. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bf75e95615aa61dfa2b07cb33de41f6"></a><!-- doxytag: member="ompl::Profiler::stop" ref="a9bf75e95615aa61dfa2b07cb33de41f6" args="(void)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a9bf75e95615aa61dfa2b07cb33de41f6">stop</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop counting time. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a392d62f749d11465c641df65363a476d"></a><!-- doxytag: member="ompl::Profiler::clear" ref="a392d62f749d11465c641df65363a476d" args="(void)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a392d62f749d11465c641df65363a476d">clear</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear counted time and events. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d76f125e73929ee850a0bac41e5cd95"></a><!-- doxytag: member="ompl::Profiler::event" ref="a5d76f125e73929ee850a0bac41e5cd95" args="(const std::string &amp;name, const unsigned int times=1)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a5d76f125e73929ee850a0bac41e5cd95">event</a> (const std::string &amp;name, const unsigned int times=1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Count a specific event for a number of times. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f1e59ea058ea5ba30fb3e52b3d892d7"></a><!-- doxytag: member="ompl::Profiler::begin" ref="a5f1e59ea058ea5ba30fb3e52b3d892d7" args="(const std::string &amp;name)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a5f1e59ea058ea5ba30fb3e52b3d892d7">begin</a> (const std::string &amp;name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Begin counting time for a specific chunk of code. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add3c74cb47a2f76c0f517d702301a17d"></a><!-- doxytag: member="ompl::Profiler::end" ref="add3c74cb47a2f76c0f517d702301a17d" args="(const std::string &amp;name)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#add3c74cb47a2f76c0f517d702301a17d">end</a> (const std::string &amp;name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop counting time for a specific chunk of code. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a286f3f6f33e494a8babf262bf58162bb"></a><!-- doxytag: member="ompl::Profiler::status" ref="a286f3f6f33e494a8babf262bf58162bb" args="(std::ostream &amp;out=std::cout, bool merge=true)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a286f3f6f33e494a8babf262bf58162bb">status</a> (std::ostream &amp;out=std::cout, bool merge=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print the status of the profiled code chunks and events. Optionally, computation done by different threads can be printed separately. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0945496c0f8e90149ca58e0c6e217ca9"></a><!-- doxytag: member="ompl::Profiler::console" ref="a0945496c0f8e90149ca58e0c6e217ca9" args="(void)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a0945496c0f8e90149ca58e0c6e217ca9">console</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print the status of the profiled code chunks and events to the console (using msg::Console) <br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classompl_1_1Profiler.html">Profiler</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a4d04876139e9b5e91b74c9d6bfe12de8">Instance</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return an instance of the class.  <a href="#a4d04876139e9b5e91b74c9d6bfe12de8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae73e60be58f1e1289bb421eb5ed60341"></a><!-- doxytag: member="ompl::Profiler::Start" ref="ae73e60be58f1e1289bb421eb5ed60341" args="(void)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#ae73e60be58f1e1289bb421eb5ed60341">Start</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Start counting time. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adae56178a52fd8c78d7e833208087691"></a><!-- doxytag: member="ompl::Profiler::Stop" ref="adae56178a52fd8c78d7e833208087691" args="(void)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#adae56178a52fd8c78d7e833208087691">Stop</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop counting time. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a641450af19cefdaab88ae2e6c716ca78"></a><!-- doxytag: member="ompl::Profiler::Clear" ref="a641450af19cefdaab88ae2e6c716ca78" args="(void)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a641450af19cefdaab88ae2e6c716ca78">Clear</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear counted time and events. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39fca9814de79fb9c2ce06ea819b24b6"></a><!-- doxytag: member="ompl::Profiler::Event" ref="a39fca9814de79fb9c2ce06ea819b24b6" args="(const std::string &amp;name, const unsigned int times=1)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a39fca9814de79fb9c2ce06ea819b24b6">Event</a> (const std::string &amp;name, const unsigned int times=1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Count a specific event for a number of times. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bc2411a6a4dc7aa289e421e2f688812"></a><!-- doxytag: member="ompl::Profiler::Begin" ref="a7bc2411a6a4dc7aa289e421e2f688812" args="(const std::string &amp;name)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a7bc2411a6a4dc7aa289e421e2f688812">Begin</a> (const std::string &amp;name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Begin counting time for a specific chunk of code. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a276b67abbea043be27684fd1be96bca1"></a><!-- doxytag: member="ompl::Profiler::End" ref="a276b67abbea043be27684fd1be96bca1" args="(const std::string &amp;name)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a276b67abbea043be27684fd1be96bca1">End</a> (const std::string &amp;name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop counting time for a specific chunk of code. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeabfce91f1acc251c86c1a99518323a5"></a><!-- doxytag: member="ompl::Profiler::Status" ref="aeabfce91f1acc251c86c1a99518323a5" args="(std::ostream &amp;out=std::cout, bool merge=true)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#aeabfce91f1acc251c86c1a99518323a5">Status</a> (std::ostream &amp;out=std::cout, bool merge=true)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print the status of the profiled code chunks and events. Optionally, computation done by different threads can be printed separately. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89f18caea7a4952776304db50a135102"></a><!-- doxytag: member="ompl::Profiler::Console" ref="a89f18caea7a4952776304db50a135102" args="(void)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1Profiler.html#a89f18caea7a4952776304db50a135102">Console</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print the status of the profiled code chunks and events to the console (using msg::Console) <br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>This is a simple thread-safe tool for counting time spent in various chunks of code. This is different from external profiling tools in that it allows the user to count time spent in various bits of code (sub-function granularity) or count how many times certain pieces of code are executed. </p>

<p>Definition at line <a class="el" href="Profiler_8h_source.html#l00075">75</a> of file <a class="el" href="Profiler_8h_source.html">Profiler.h</a>.</p>
</div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a4d04876139e9b5e91b74c9d6bfe12de8"></a><!-- doxytag: member="ompl::Profiler::Instance" ref="a4d04876139e9b5e91b74c9d6bfe12de8" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classompl_1_1Profiler.html">ompl::Profiler</a> &amp; ompl::Profiler::Instance </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return an instance of the class. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>Ioan Sucan </dd></dl>

<p>Definition at line <a class="el" href="Profiler_8cpp_source.html#l00040">40</a> of file <a class="el" href="Profiler_8cpp_source.html">Profiler.cpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/ompl/util/<a class="el" href="Profiler_8h_source.html">Profiler.h</a></li>
<li>src/ompl/util/src/<a class="el" href="Profiler_8cpp_source.html">Profiler.cpp</a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div>

<div class="footer span-22 push-2 last">
  <a href="http://www.kavrakilab.org">Physical and Biological Computing Group</a> &bull;
  <a href="http://www.cs.rice.edu">Department of Computer Science</a> &bull;
  <a href="http://www.rice.edu">Rice University</a><br>
  <div class="gray">Generated on Sun Oct 9 2011 23:04:31 by&#160;<a href="http://www.doxygen.org/index.html">doxygen</a> 1.7.4</div>
</div>
</div>
</body>
</html>